Моделирование выборок в R, их хранение и расчет тестовой статистики

Я использовал алгоритм Монте-Карло для генерации выборок данных размером 100 геометрического распределения с использованием инверсионной выборки:

gi.cdf.geom <- function(p,u){
k <- c()
k <- ceiling(log(1-u)/log(1-p)) - 1
return(k)
}

Вышеупомянутая функция является обратной функцией CDF геометрического распределения.

u1 <- runif(100)
gen.gi.cdf1 <- gi.cdf.geom(50/239,u1)
as.data.frame(table(gen.gi.cdf1))

Чего я не знаю, так это случайного моделирования 1000 выборок данных размером 100 и вычисления статистики теста хи-квадрат для каждой выборки. Моя попытка создания образцов заключается в следующем:

for(i in 1:1000){
 n=100
 p=50/239
 {
  u=runif(n)
  values <- gi.cdf.geom(p,u)
 }
 print(values)

}

Однако это дает мне все образцы моей консоли без возможности ссылаться на них позже.

Я был бы очень признателен за помощь.

Спасибо


person Community    schedule 04.12.2013    source источник


Ответы (1)


Используйте 1_. Например:

(x <- replicate(3,rgeom(10,50/239)))
      [,1] [,2] [,3]
 [1,]    5    3   12
 [2,]   15    2    3
 [3,]    5    5    0
 [4,]    4    2    1
 [5,]   13    0    8
 [6,]    0    3    0
 [7,]    3    1    6
 [8,]    0    6    2
 [9,]    0    4    4
[10,]    8    4    1

Вы можете протестировать их с помощью apply

apply(x,2,chisq.test)
[[1]]

        Chi-squared test for given probabilities

data:  newX[, i] 
X-squared = 47.566, df = 9, p-value = 3.078e-07


[[2]]

        Chi-squared test for given probabilities

data:  newX[, i] 
X-squared = 10, df = 9, p-value = 0.3505


[[3]]

        Chi-squared test for given probabilities

data:  newX[, i] 
X-squared = 37.3243, df = 9, p-value = 2.303e-05


Warning messages:
1: In FUN(newX[, i], ...) : Chi-squared approximation may be incorrect
2: In FUN(newX[, i], ...) : Chi-squared approximation may be incorrect
person James    schedule 04.12.2013
comment
Но как я могу вставить 2 выражения в аргумент выражения? Потому что мне нужно каждый раз случайным образом выбирать 100 образцов из равномерного распределения и использовать каждый образец для вычисления функции gi.cdf.geom - person ; 04.12.2013
comment
Вы можете поместить runif в вызов своей функции: gi.cdf.geom(p,runif(n)). В противном случае несколько выражений можно заключить в фигурные скобки и разделить точкой с запятой. - person James; 04.12.2013