Использование реплики для создания симуляции моей функции

Я создал эту функцию, чтобы брать выборки из случайного набора чисел, который генерирует R, а затем вычислять среднее значение, стандартное отклонение и доверительный интервал для этих чисел. Моя цель - попытаться воспроизвести это, чтобы смоделировать повторяющуюся выборку доверительных интервалов. Однако всякий раз, когда я запускаю свой код с функцией репликации, он возвращает матрицу значений от 1 до 10000, а не возвращает желаемую повторную выборку доверительных интервалов. Вот мой код, который у меня есть прямо сейчас:

SampleCI <- function(n, mu, sigma){
  SRS <- rnorm(n = n, mean = mu, sd = sigma)
  SampleTest <- sample(SRS, size = 15)
  samplestatistics <- c(sum(!is.na(SampleTest)), mean(SampleTest), sd(SampleTest))
  names(samplestatistics) <- c("n", "sample mean", "StdDev")
  
  # 95% CI for mu
  L <- samplestatistics[2] - qt(.975, samplestatistics[1] - 1) * samplestatistics[3] / sqrt(samplestatistics[1])
  U <- samplestatistics[2] + qt(.975, samplestatistics[1] - 1) * samplestatistics[3] / sqrt(samplestatistics[1])
  CI <- c(L,U)
  
  list(samplestatistics = samplestatistics,
       CI = CI
       )
}
PossibleDataset <- SampleCI(100, 25, 3)
NSim = 10^4
testing <- replicate(NSim, PossibleDataset)
testing

person Bryson Burr    schedule 21.11.2020    source источник
comment
Кажется, ваша функция работает правильно с rnorm и sample   -  person akrun    schedule 22.11.2020


Ответы (1)


replicate следует применять при применении функции, а не на выходе

outlst <- replicate(NSim, SampleCI(100, 25, 3), simplify = FALSE)

В коде OP SampleCI применяется только один раз, а затем реплицируется результат n раз.

person akrun    schedule 21.11.2020
comment
так что мне нужно сделать, чтобы SampleCI реплицировался много раз? Я попытался применить репликацию при применении функции, а не вывода, и все равно получил матрицу 1-10000 - person Bryson Burr; 22.11.2020
comment
@BrysonBurr В вашем коде вы реплицируете один и тот же вывод N раз, а не SampleCI n раз - person akrun; 22.11.2020
comment
Итак, что вы предлагаете мне сделать, чтобы воспроизвести SampleCI n раз, а не результат? - person Bryson Burr; 22.11.2020
comment
@BrysonBurr, потому что вы делаете v1 <- sample(1:5, 1); replicate(10, v1) вместо replicate(10, sample(1:5, 1)) - person akrun; 22.11.2020
comment
Я понимаю, что теперь то, что у меня есть, неверно, я просто не понимаю, что нужно, чтобы это исправить. Могу ли я добавить функцию репликации внутри созданной мной функции для этого? - person Bryson Burr; 22.11.2020
comment
@BrysonBurr Вы имели ввиду результат matrix? Вам нужно simplify = FALSE в replicate, чтобы вернуть list - person akrun; 22.11.2020