我有经验数据,其中包含一个分为 4 组的变量。在每个组中,变量大致遵循幂律分布(帕累托分布)。我想测试整个组的均值差异,就像我对正态分布数据的均值进行 t 检验一样。
这样做的最佳方法是什么?
我有经验数据,其中包含一个分为 4 组的变量。在每个组中,变量大致遵循幂律分布(帕累托分布)。我想测试整个组的均值差异,就像我对正态分布数据的均值进行 t 检验一样。
这样做的最佳方法是什么?
实际上,对于 4 组,您通常会使用一个 ANOVA 来比较均值,而不是六个 t 检验(尽管 t 检验仍然会带有多重比较或计划的对比)。
如果假设帕累托分布,那么有许多可能的方法。我只提几个,从我认为可能最简单的一个开始,还有一些可行的非参数测试。我假设左边界(,比例参数)是已知的;如果不是这样,事情就会更复杂(特别是如果它们未知且不一定相等)。
(1) 功率参数(形状参数,)的比较意味着总体均值的比较(即相等的意味着相同的均值,不同的意味着不同的均值)。取并通过广义线性模型比较所得指数分布的尺度参数;进行 ANOVA 类型的比较和成对比较很简单。
(1a) 处理未知但相等的的一种快速方法是获取对数并从所有样本中减去(整个集合的)最小值(从过程中的数据中丢失该值)。然后,您可以按照上述方式进行操作。
这是一个 R 示例(使用)。几乎任何体面的统计数据包都可以进行类似的拟合:
# create some (Pareto) data:
y1 <- c(814.660, 1.47520, 1.28029, 2.08808, 13.5882, 25.1290, 10.7137,
10.3032, 13.9075, 1556.73, 1.73512, 1783.04, 2.10658, 56.7400,
1.34085, 4.01592, 1.19537, 2.23376, 22.5796, 12.3961)
y2 <- c(332.949, 13.0680, 1.19512, 9.19466, 1.10640, 11.5778, 4.69242, 2.50173,
1.51986, 184.397, 2.61102, 17.86237, 6.01949, 76.9210, 3.66999)
pdata <- stack(list(y1=y1,y2=y2))
pcompfit <- glm(log(values)~ind,family=Gamma(link=log),data=pdata)
summary(pcompfit, dispersion=1) # dispersion = 1 for exponential
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.9106 0.2236 4.072 4.66e-05 ***
indy2 -0.1311 0.3416 -0.384 0.701
(Dispersion parameter for Gamma family taken to be 1)
Null deviance: 34.674 on 34 degrees of freedom
Residual deviance: 34.528 on 33 degrees of freedom
AIC: 135.73
(删除了一些非必要的输出行)
测试(正确地)发现第二个样本的参数较小,但对于如此小的样本,效应大小太小而无法从随机变化中分辨出来。
指数分布的数据也可以通过survreg
R进行比较。
(2) 使用 Pareto 假设(和),对数的对数(单调的)简化为位置与移位选择的比较。因此,您可以使用 Kruskal-Wallis 有意义地比较原始数据,并且在这种转换的换档方案下解释结果将相当容易。
# example - same data as before
# the 'anova-like' test (you don't need to transform to test for equality:
kruskal.test(values~ind,data=pdata)
Kruskal-Wallis rank sum test
data: values by ind
Kruskal-Wallis chi-squared = 0.0544, df = 1, p-value = 0.8155
如果您在 loglog 尺度上工作,您甚至可以为参数比率的 log 生成置信区间。[我们不习惯将这些测试视为均值的比较,但使用特定的分布假设和常见的,它是总体均值(以及中位数等)的比较。]
这里用 Mann-Whitney 显示,区间构造很容易——
# the estimate of shift in log-parameter:
> wilcox.test(log(log(values))~ind,data=pdata,conf.int=TRUE)
Wilcoxon rank sum test
data: log(log(values)) by ind
W = 157, p-value = 0.8307
alternative hypothesis: true location shift is not equal to 0
95 percent confidence interval:
-0.8001905 0.8935245
sample estimates:
difference in location
0.0668152
[然而,像 Dunn 检验这样更合适的方法应该用于与 Kruskal-Wallis 的事后比较;尽管经常被建议(例如在本节的底部,Mann-Whitney 并不是最合适的选择。这里讨论了一个原因。]
请注意,这种比较是在 GLM 中“以相反的方式”进行的(“第一秒”,而不是 GLM 中的“第二优先”)。在任何情况下,翻转估计的符号和置信区间的结束都是微不足道的,但重要的是要知道它会发生。
[p 值的微小差异是因为 KW 使用的是卡方近似值,而不是检验统计量的精确分布。在大样本中,近似值非常好。]
在大样本中,移位参数的估计值应该在两个测试之间更加一致。
(3) 可以做似然比检验。(这可以毫无困难地处理未知的,但您可能需要依赖渐近卡方结果)