与 I 类错误相关的 p 值的频率属性

机器算法验证 可能性 假设检验 统计学意义 p 值 类型 i 和 ii 错误
2022-03-28 23:16:34

这个问题与 p 值的频率属性及其与 I 类错误的关系以及为什么在线模拟的结果与我的预期不同有关。

假设我进行了一个实验并在 0.05 的显着性水平上进行假设检验。接下来,我计算 p 值。如果它小于 0.05,那么我拒绝原假设,如果它大于 0.05,那么我接受原假设(根据 Neyman-Pearson 假设检验)。现在,如果我重复这个实验数百次(每次要么接受或拒绝 0.05 的零假设),那么 I 型错误(拒绝真正的零假设的机会)应该在 5% 左右,这不正确吗?

我想测试我的理解,所以我使用了这个 java 小程序:http: //www.stat.duke.edu/~berger/applet2/pvalue.html来模拟这样的实验。除了在顶部栏中我将 p 值范围从 0 更改为 0.05 的地方,我在小程序中将所有内容保持在默认级别。本质上,这允许我“拒绝”所有 p 值 < 0.05 的实验,并找出有多少 H0 被错误拒绝(H0 实际上是真的)以及有多少 H0 被正确拒绝(H1 实际上是真的)。

我会假设我会得到大约 5% 的真空值;然而,当我运行它时,我得到大约 12% 的 H0 和 88% 的 H1,这意味着我拒绝的数字中有 12% 是真空值,而 88% 是假的,这是 12% 的类型 1 错误。我错过了什么?有人可以解释为什么小程序会得出这些结果吗?

1个回答

我一辈子都无法让那个小程序在我的浏览器中运行,所以我将尝试使用R来举例说明

正如评论中所指出的,引起混淆的原因似乎是小程序在替代假设和零假设下运行。要检查 I 类错误率是否真的是 ,您只需要在原假设下运行它0.05

这是一个示例,我们使用 -test 来测试正态分布的均值是否等于也就是说,我们测试我们从模拟样本,并计算每个样本的值。tμ0H0:μ=0.10,000N(0,σ2)p

我们还模拟样本并计算值。10,000N(0.25,σ2)N(0.5,σ2)p

set.seed(201208)
B<-10000
p.values1<-p.values2<-p.values3<-vector(length=B)

for(i in 1:B)
{
    x1<-rnorm(25)
    p.values1[i]<-t.test(x1)$p.value

    x2<-rnorm(25,0.25)
    p.values2[i]<-t.test(x2)$p.value

    x3<-rnorm(25,0.5)
    p.values3[i]<-t.test(x3)$p.value
}   

我们现在可以计算导致拒绝级别的样本比例:H0:μ=05 %

sum(p.values1<=0.05)/B
sum(p.values2<=0.05)/B
sum(p.values3<=0.05)/B

在这种情况下,在原假设下的答案是,正如我们所期望的那样!),,当0.5050.050.2187μ=0.250.6754μ=0.5

我们可以通过绘制值的直方图来可视化结果: p直方图

对于值均匀分布在在备选方案下,值的分布具有更接近的质量(越远离越远)。μ=0p[0,1]p00μ

我们还可以使用箱须图 p箱线图

希望从图片中可以清楚地看出,拒绝的概率,即值低于的概率取决于原假设或备择假设是否为真。在这种情况下,您应该只期望当时拒绝率为p0.050.05μ=0

生成这些图的代码是:

#Boxplots:
boxplot(p.values1,p.values2,p.values3,names=c("mu=0","mu=0.25","mu=0.5"))

# Histograms:
par(mfrow=c(1,3))
hist(p.values1,main="mu=0")
hist(p.values2,main="mu=0.25")
hist(p.values3,main="mu=0.5")