总结重复假设检验的结果

时间:2016-01-06 03:53:28

标签: r for-loop functional-programming

我使用rnorm(30, 10, 5)从正态分布生成两组数据。我正在使用t.test测试平均值相等的假设,并重复此过程1000次以估计类型1错误率。

我的代码如下:

for(i in 1:1000) {
  print(t.test(rnorm(30, 10, 5), rnorm(30, 10, 5),
               alternative="two.sided", var.equal=TRUE)$p.value < 0.05)
}

但是,这会返回无数TRUEFALSE

我可以手动计算TRUE,但有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

他们不是无数。其中有1000个;)

您应该在向量中跟踪结果,而不是将结果打印到屏幕上。

一个简单的改变就能得到你想要的东西:

sig <- logical(length=1000)
for(i in 1:1000) {
  sig[i] <- t.test(rnorm(30, 10, 5), rnorm(30, 10, 5),
               alternative="two.sided", var.equal=TRUE)$p.value < 0.05
}

现在您可以将结果制成表格:

table(sig)
## sig
## FALSE  TRUE 
##   956    44

更简单的方法是使用replicate

table(replicate(1000, t.test(rnorm(30, 10, 5), rnorm(30, 10, 5), 
  alternative="two.sided", var.equal=TRUE)$p.value < 0.05))