假设检验:数字与排名

机器算法验证 假设检验 统计能力 排行
2022-04-10 04:04:39

我认为判断单个样本是来自还是来自的最有力的假设检验使用平均值作为检验统计量因此,我使用蒙特卡罗模拟计算样本量并比较了两种方法:(a)使用数值平均值作为检验统计量,(b)首先将数据转换为排名,然后计算平均值。我发现排名数据产生的样本量较小。这怎么可能?N(0,1)N(1,1)

我最终感兴趣的是确定未来实验的样本量我喜欢从具有已知分布的工业过程中这使我可以在不测量每个零件的情况下生产产品。n

假设检验涉及许多微妙的困难。这就是为什么我设置以下玩具模型以将注意力集中在上述“数字与排名”问题上。

set.seed(2020)
transformToRank = FALSE
alpha           = 0.05
betaTarget      = 0.20

T = matrix(nrow = 1e4, ncol = 2) # alloc space for test statistic
for ( nSample in 3:100 ) {
    for ( i in 1:1e4 ){
        # combine data:
        random = c(rnorm(nSample,0,1), rnorm(nSample,1,1))
        if ( transformToRank ){
            # rank data (combined):
            random = rank(random)
        } 
        # Calc test statistic:
        T[i,] = c(mean(random[1:nSample]), mean(random[(nSample+1):(2*nSample)]) );
    }
    cutoff1 = quantile(T[, 1], alpha/2)
    cutoff2 = quantile(T[, 1], 1-alpha/2)
    beta    = sum(cutoff1 < T[, 2] & T[, 2] < cutoff2) / 1e4
    if ( beta <= betaTarget ){
        break 
    } else {
        nSample = nSample + 1
    }
}
print(beta)
print(nSample)

可以使用以下代码检查数字大小写:

library(BSDA)
set.seed(2020)
pValue = replicate(1e4,z.test(rnorm(8,1,1), 
                    alternative="two.sided", mu=0, sigma.x=1)$p.value); 
power = mean(pValue <= 0.05)
beta  = 1 - power
print(beta)

如果我使用数值,则样本大小满足 -risk 条件。相反,如果我将随机数转换为等级,我只需要因此,如果我愿意使用随机生成的数据集来分析(排名)实验数据,测试的功效会显着增加。分布的位置缩放版本中采样,此逻辑也适用我错过了什么?n=8βn=4t

我的关键问题是,为什么排名版本的力量会如此巨大?我相信我会得到大致相同的样本量,因为众所周知,秩变换为非参数假设检验提供了一座桥梁,参见例如Ref1Ref2

1个回答

下面是分别比较来自 的两个大小为 15 的样本的模拟。我的模拟表明,合并 t 检验比众所周知的双样本 Wilcoxon 检验具有更好的功效,而且这两种检验的功效都不是Norm(0,1)Norm(1,1),0.8.

set.seed(2020)
pv = replicate(10^4, t.test(rnorm(15,0,1),
                            rnorm(15,1,1), var.eq=T)$p.val)
mean(pv <= 0.05)
[1] 0.7525

set.seed(911)
pv = replicate(10^4, wilcox.test(rnorm(15,0,1),
                                 rnorm(15,1,1))$p.val)
mean(pv <= 0.05)
[1] 0.7118

看来我误解了你在做什么,你的模拟代码是错误的,或者两者兼而有之。更清楚地解释您对等级所做的工作,并查看您计算功率的程序的内部循环可能会有所帮助。

[分别取两个样本的排名平均值是没有意义的例如,如果那么两组排名将从 1 运行到 15,并且两组排名的总和始终为 120。您可能想要看看 Wilcoxon 秩和检验如何处理两个样本的秩。]n=15,

以下是样本大小且总体均值差异在这两种情况下,功率都不会接近 80%。n=250.5

set.seed(1066)
pv = replicate(10^4, t.test(rnorm(25,0,1),
                            rnorm(25,.5,1), var.eq=T)$p.val)
mean(pv <= 0.05)
[1] 0.3978

set.seed(1776)
pv = replicate(10^4, wilcox.test(rnorm(25,0,1),
                                 rnorm(25,.5,1))$p.val)
mean(pv <= 0.05)
[1] 0.3867

注意:对于合并 t 检验,这里有一个在线“功效和样本量”计算器,适用于合理的参数。