如何统计模拟t-test的拒绝次数?解决代码中rejects无法更新问题
解决t检验模拟中拒绝原假设计数的问题
你的代码里rejects始终为0,核心问题有两个:
- 没有捕获
t.test()的输出结果,根本没法获取p值来判断是否拒绝原假设 - 误用了
update()函数——这个函数是用来更新统计模型的,完全不适合用来更新普通变量
直接修改代码如下,核心是捕获检验结果并判断p值:
set.seed(5) simulation <- function(n, mu, sigma, mu0, alpha) { rejects <- 0 S <- 100 for(i in 1:S) { sample <- rnorm(n, mean=mu, sd=sigma) # 保存t检验的完整结果 tt_out <- t.test(sample, mu=mu0) # 当p值小于显著性水平alpha时,拒绝计数加1 if(tt_out$p.value < alpha) { rejects <- rejects + 1 } } return(rejects) }
关键修改说明:
- 用
tt_out <- t.test(...)把检验结果存到变量里,这样可以通过tt_out$p.value提取p值 - 用
if条件判断p值是否小于alpha,满足条件时直接执行rejects <- rejects + 1完成计数更新 - 删除了无效的
update(rejects)语句
内容的提问来源于stack exchange,提问作者Talkthattalk
相关产品推荐
相关产品推荐

