我正在进行一项小型模拟研究,以判断两个正态性检验到底有多好。我的计划是生成大量不太多观察值的正态分布样本,并确定每个检验拒绝正态零假设的频率。
到目前为止我拥有的(不完整)代码是
library(nortest)
y<-replicate(10000,{
x<-rnorm(50)
ad.test(x)$p.value
ks.test(x,y=pnorm)$p.value
}
)
现在我想计算每次测试中 p 值小于 0.05 的比例。你能告诉我该怎么做吗?如果这是一个新手问题,我很抱歉,但我自己对 R 来说还是个新手。
谢谢。
最佳答案
library(nortest)
nsim <- 10000
nx <- 50
set.seed(101)
y <- replicate(nsim,{
x<-rnorm(nx)
c(ad=ad.test(x)$p.value,
ks=ks.test(x,y=pnorm)$p.value)
}
)
apply(y<0.05,MARGIN=1,mean)
## ad ks
## 0.0534 0.0480
使用 MARGIN=1
告诉 apply
取行间的平均值,而不是列的平均值 - 考虑到 replicate()
的顺序,这是明智的code> 的内置简化产生。
对于此类示例,任何标准测试的 I 类错误率将极其接近其标称值(本例中为 0.05)。
关于r - 关于 R 中正态性检验的小型模拟研究,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305155/