我使用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)
}
但是,这会返回无数TRUE
和FALSE
。
我可以手动计算TRUE
,但有更简单的方法吗?
答案 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))