重复采样

时间:2018-11-11 23:41:48

标签: r random statistics sampling

我有一个关于重复采样的问题。假设我对样本均值的分布感兴趣。因此,我要做的是生成大小为1000的样本的10000倍,并查看每个样本的平均值。我是否可以取一个大小为10000 * 1000的样本,然后查看前1000个元素的平均值,而不是从1001到2000的平均值,依此类推?

4 个答案:

答案 0 :(得分:0)

如果您要控制种子,则两种方法都应产生相同的结果:

Transpose

答案 1 :(得分:0)

这里是一个示例,该示例从均匀分布中随机抽取1,000个项目,生成10,000个样本均值。基于中心极限定理,我们期望这些均值以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

答案 2 :(得分:0)

@ Len Greski 我也可以那样做吗?

float rainbow=0;
int dir=1;

void setup() {
  size(600, 600);
  background(0);
  colorMode(HSB, 255);
 } 

void draw() {
  if ( rainbow < 255 && dir==1) {
     rainbow++;
  }

  if ( rainbow > 0 && dir==-1) {
    rainbow--;
  }

  if ( rainbow == 255) {
    dir*= -1;
  }

  if ( rainbow == 0) {
    dir*= -1;
  }

  stroke(rainbow, 255, 200);
  line(mouseX,mouseY,width/2,height/2); 

  if (mousePressed){
  stroke(rainbow, 255, 200);
  line(mouseX,mouseY,0,mouseX);
  }

  if (mousePressed){
  stroke(rainbow, 100, 200);
  line(mouseX,mouseY,600,mouseX);
  }
}

答案 3 :(得分:0)

我会说是的。在抽取10,000,000个样本后,您已经随机抽取了大部分实验空间。如果您提到的两种方法的set.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)