听起来您正在寻找对两种位置测量之间差异的稳健测试。你是对的,使用平均值会带来各种各样的问题,尤其是极端异常值。近几十年的研究表明,依赖于大样本属性的方法比较在许多现实生活中的问题比人们想象的要严重得多。
一个很好的替代方法是比较 20% 的修剪均值。在平均值附近进行至少 0.2 修剪的百分位自举是“获得准确概率覆盖和实现相对较高功效的最有效方法之一”(Wilcox 2012 年第 336 页,社会和行为科学的现代统计,CRC 出版社,彻底推荐)。R中有一些简单的实现。
例如,考虑下面 R 代码中的混合对数正态分布。x1 通常比 x2 大得多,但 x2 被 20 个非常大的值所污染,这些值将平均值从水中吹走。中值或 trimemd 均值可以更好地了解总体位置中心。
> x1 <- exp(rnorm(1000,10,1))
> x2 <- exp(rnorm(1000,8,2))
> x2[sample(1:1000,20)] <- exp(rnorm(20,12,5))
> combined <- melt(data.frame(x1,x2))
Using as id variables
> tmp <- round(rbind(with(combined, tapply(value, variable, mean)),
+ with(combined, tapply(value, variable, mean, tr=.2)),
+ with(combined, tapply(value, variable, median))))
> row.names(tmp) <- c("Mean", "TrimmedMean", "Median")
> tmp
x1 x2
Mean 35229 1282017
TrimmedMean 25077 5992
Median 22454 3896
> qplot(value, data=combined, log="x") + facet_wrap(~variable)
