如何比较两个大小非常不同的非正态分布样本?(Mann-Whitney 与随机化/引导程序)

机器算法验证 假设检验 非参数 p 值 引导程序 wilcoxon-mann-whitney 检验
2022-04-06 17:16:51

也许这是一个非常基本的问题,但我还没有找到这个简单问题的简单解决方案:

我想比较一个非正态分布的连续变量的两个样本(比如 X 和 Y),并测试 X 和 Y 是否显着不同。X的样本量N=81YN=5110,因此它们非常不平衡。我的第一次尝试是使用 Mann-Whitney(即 Wilcoxon 符号秩检验)。但是,我对样本量的巨大差异感到困扰。

我认为某种随机化或引导方法是一个不错的选择,但我不确定我的方法是否有意义。我的想法是从 Y 和 X 中获取 1000 个大小为 81 的随机样本,然后使用 Mann-Whitney 比较两个分布。经验p 值将是p 值< 0.05的测试比例。我“R”,我已经实现如下:

X = data1 # sample size 81
Y = data2 # sample size 5510
R = 1000
alpha = numeric(R)

for(i in 1:R) {
    group1 = sample(X, replace=TRUE)
    group2 = sample(Y, size=81, replace=TRUE)
    alpha[i] = wilcox.test(group1, group2)$p.value
}

经验p 值将是p 值< 0.05 的比例:

mean(alpha < 0.05)

这种方法有意义吗?我怎样才能正确地进行这个假设检验?

2个回答

我不是统计测试方面的大专家,但是您正在考虑的方法显然没有意义想象这些组确实是相同的(即零假设为真)。然后你会在恰好 5% 的情况下观察到 p<0.05,例如,在 1% 的情况下 p<0.01(那些将是假阳性)。所以按照你的逻辑,你会拒绝空值。

在观察次数不同的情况下,我不知道 Wilcoxon-Mann-Whitney 检验有任何问题。因此,您的一种选择是像往常一样运行秩和检验,而不会产生任何进一步的复杂性。

但是,如果您确实担心这种非常不同的情况N,您可以尝试一个简单的置换测试:将两个组合并在一起(获得81+5110=5191数字)并随机选择81值作为 A 组,其余所有作为 B 组。然后取 A 和 B 的平均值(或中位数)之间的差(我们称之为μ),然后重复多次。这会给你一个分布p(μ). 同时对于您的实际组 X 和 Y,您有一些固定的经验值μ. 现在你可以检查是否μ位于 95% 的百分位区间p(μ). 如果不是,您可以用 p<0.05 拒绝 null。

你的方法没有意义。通常的 Wilcoxon 测试将以高功率回答您。你的方法失去了这个优势。然而,害怕过多的权力可能是合理的,因为即使是不相关的差异也会显示出显着的差异,这实际上会分散对测试相关定性陈述感兴趣的科学家的注意力。