Повторная выборка - PullRequest
       16

Повторная выборка

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

У меня вопрос о повторной выборке. Допустим, меня интересует распределение выборочных средств. Итак, я бы сгенерировал 10000 раз выборку размером 1000 и посмотрел на среднее значение каждой выборки. Могу ли я вместо этого просто взять один образец размером 10000 * 1000, а затем посмотреть среднее значение первых 1000 элементов, а не от 1001 до 2000 и т. Д.?

Ответы [ 4 ]

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

Я бы сказал, да. Взяв 10 000 000 образцов, вы случайным образом отобрали большую часть экспериментального пространства. Если вы установили.seed одинаково для обоих упомянутых вами подходов, вы получите точно такой же ответ. Если вы измените начальное число и запустите t-тест, результаты существенно не будут отличаться.

#First Method
seed <- 5554
set.seed(seed)
group_of_means_1 <- replicate(n=10000, expr = mean(rnorm(1000)))
set.seed(seed)
mean_of_means_1 <- mean(replicate(n=10000, expr = mean(rnorm(1000))))

#Method you propose
set.seed(5554)
big_sample <- data.frame(
                group=rep(1:10000, each=1000),
                samples=rnorm(10000 * 1000, 0, 1)
)

group_means_2 <- aggregate(samples ~ group,
                           FUN = mean, 
                           data=big_sample)

mean_of_means_2 <- mean(group_means_2$samples)

#comparison
mean_of_means_1 == mean_of_means_2

t.test(group_of_means_1, group_means_2$samples)
0 голосов
/ 12 ноября 2018

Вот пример, который генерирует 10 000 выборочных средних из 1000 предметов, взятых случайным образом из равномерного распределения. Исходя из центральной предельной теоремы, мы ожидаем, что эти средства будут нормально распределены со средним 0,5.

# set seed to make reproducible 
set.seed(95014)
# generate 10,000 means of 1,000 items pulled from a uniform distribution 
mean_x <- NULL
for (i in 1:10000){
     mean_x <- c(mean_x,mean(runif(1000)))  
}
hist(mean_x)

... и вывод:

enter image description here

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

@ Лен Грески Я тоже так могу, верно?

a <- runif(10000000)
j <- 1
x <- NULL
while (j <= 10000000){
  x <- c(x,mean(a[j:(j+999)]))
  j <- j + 1000
}
x
hist(x) 
0 голосов
/ 12 ноября 2018

Если вы контролируете семя, оба подхода должны давать идентичные результаты:

set.seed(1)
mean(sample(1:9, 3))
#[1] 5.666667
mean(sample(1:9, 3))
#[1] 4
mean(sample(1:9, 3))
# [1] 5.333333

set.seed(1)
x <- sample(1:9)
mean(x[1:3])
#[1] 5.666667
mean(x[4:6])
#[1] 4
mean(x[7:9])
# [1] 5.333333
...