【问题标题】:Summarising results of repeated hypothesis tests总结重复假设检验的结果
【发布时间】:2016-04-10 02:01:38
【问题描述】:

我正在使用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

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

【问题讨论】:

    标签: r for-loop functional-programming


    【解决方案1】:

    他们不是无数的。其中有 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))
    

    【讨论】:

    • 首先感谢您回答我的问题~ 后来我用while i&lt;-1000 k&lt;-0 while(i&gt;0){ if(t.test(rnorm(30,10,5),rnorm(30,10,5),alternative="two.sided",var.equal=TRUE)$p.value&lt;0.05) {k&lt;-k+1} i&lt;-i-1 } &gt; print(k) 弄明白了,不知道对不对,但它似乎满足了我的需求。只是一个初学者,再次感谢您的帮助>
    • @forRstudy - 总是有很多方法可以解决问题,您的建议很好。很好地解决了这一点(尽管您可以坚持使用 for 循环,只需添加 k 东西)。
    猜你喜欢
    • 2023-03-10
    • 2017-09-01
    • 2013-11-10
    • 1970-01-01
    • 2016-07-30
    • 2018-09-18
    • 2015-05-15
    • 2019-09-25
    • 2021-12-31
    相关资源
    最近更新 更多