Python 中的 SciPy 函数,ttest_ind()
默认情况下与-假设方差相等的测试。有一个参数equal_var = False
可以将其切换到 Welch 检验,其中不假定两个样本的方差相等。
这似乎表明,当两个样本在设计上具有不同的方差时,Welch 检验应该表现更好。所以,我开始对此进行测试。令人惊讶的是,我得到的结论恰恰相反。
from scipy.stats import norm, ttest_ind
a1 = norm.rvs(10, 14, size = 6)
a2 = norm.rvs(13, 3, 100)
p_val1 = ttest_ind(a1, a2)[1]
p_val2 = ttest_ind(a1, a2, equal_var = False)[1]
在这里,我们从平均值为 10 和标准差为 14 的正态分布中生成 6 个样本。然后从另一个正态分布中生成 100 个样本,平均值为 13 和标准差为 3。很明显,这两个样本的方差不相等。首先-价值来自简单-假设方差相等的测试,而第二个来自 Welch 测试。首先- 值始终小于 1%,而第二个值通常约为 30-40%。而且由于手段实际上不同,韦尔奇测试表现不佳。这里的一个批评是我没有考虑误报率,只考虑功率。这在下图中得到了纠正,该图绘制了两个测试的假阳性到假阴性率,因此考虑了两者。
这可以在两个测试的 alpha-beta 曲线中可视化(假阳性率与假阴性率一起绘制)。两个样本-test 的假阴性率比 Welch 测试低得多(以蓝色绘制)。
为什么韦尔奇测试如此轻松地被击败?是否存在其他可能优于两个样本的条件-测试?如果没有,为什么要使用它?
编辑:下面的情节有一个错误。就统计功效而言,这两个测试的实际表现是相同的。请参阅我的答案以获得更正的情节。