Используя цикл, чтобы найти P (-1,5 <Y <1,5) для диапазона размеров выборки - PullRequest
0 голосов
/ 02 ноября 2018

Я создал случайную выборку iid размером n = 20 из стандартного нормального распределения в R. У меня есть симуляция Монте-Карло с m = 10 ^ 5 сценариями. Я пытаюсь найти вероятность того, что избыточный эксцесс образца находится между -1,5 и 1,5. Пока у меня есть этот код:

set.seed(1234)
n<-10
m<-10^5

sample.normal<- rep(0,m)
for(i in (1:m)){
x<-rnorm(n,0,1)
sample.normal[i]<-kurtosis(x,na.rm=FALSE)-3
}

#finding p(-1.5<y2<1.5)
y<-sample.normal
Z<-ecdf(y)
Z(1.5)-Z(-1.5)

Однако теперь я хочу изменить размер выборки на диапазон значений от n = 10 до n = 200, чтобы показать, как при увеличении размера выборки больше значений лежат в диапазоне от -1,5 до 1,5. Поэтому я хочу вычислить Z (1,5) -Z (-1,5) при 10,20,30,40 .... 200 (имея в виду m = 10 ^ 5) (я в конечном итоге показываю это с большим размером выборки избыточный эксцесс имеет тенденцию к тому, что стандартная норма равна нулю) Как мне сделать это, используя цикл или другой метод? Мы ценим любые предложения.

1 Ответ

0 голосов
/ 02 ноября 2018

Если вы хотите автоматизировать ваш код с другими значениями n, следующая функция упрощает моделирование, а затем вызывается в цикле sapply для n = 10, 20, ..., 200.

Обратите внимание, что одним из аргументов является rdist, по умолчанию rnorm. Если вы хотите передать аргументы функции RNG rdist, используйте аргумент dots ....

library(e1071)

set.seed(1234)

simKurtosis <- function(n, m = 10^5, rdist = rnorm, ...){
  y <- replicate(m, kurtosis(rdist(n, ...)) - 3)
  Z <- ecdf(y)
  Z(1.5) - Z(-1.5)
}

ex_kurt <- sapply(seq(10, 200, by = 10), simKurtosis)
...