如何解释修剪百分比与修剪均值的关系图?

机器算法验证 数据可视化 解释 意思是 修剪平均
2022-03-03 23:28:08

对于家庭作业的一部分,我被要求通过删除最小和最大的观察值来计算数据集的修剪平均值,并解释结果。修剪后的平均值低于未修剪的平均值。

我的解释是,这是因为底层分布是正偏态的,所以左尾比右尾更密集。由于这种偏斜,删除高数据会比删除低数据推高平均值拖累平均值,因为非正式地说,有更多低数据“等待取而代之”。(这合理吗?)

然后我开始想知道修剪百分比如何影响这一点,所以我计算了各种 $k = 1/n, 2/n, \dotsc, ( \frac{n}{2}-1)/n$。我得到了一个有趣的抛物线形状: 修剪百分比与修剪平均值的关系图; 形成一条看起来大致为抛物线的上凹曲线

我不太确定如何解释这一点。直观地说,图表的斜率似乎应该是(与)中位数的 $k$ 数据点内分布部分的负偏度成正比。(这个假设确实与我的数据相符,但我只有 $n = 11$,所以我不是很自信。)

这种类型的图有名字吗,还是常用的?我们可以从这张图中收集到什么信息?有标准解释吗?


供参考,数据为:4、5、5、6、11、17、18、23、33、35、80。

3个回答

@gung 和 @kjetil b。halvorsen 都是正确的。

我在

罗森伯格、JL 和 M.加斯科。1983. 比较位置估计器:修剪均值、中位数和三均值。在《理解稳健和探索性数据分析》中,Eds。DC Hoaglin、F. Mosteller 和 JW Tukey,297–338。纽约:威利。

戴维森,AC 和 DV 欣克利。1997.引导方法及其应用。 剑桥:剑桥大学出版社。

并给出进一步的例子

考克斯,新泽西州,2013 年。根据口味进行修剪。统计杂志13:640-666。http://www.stata-journal.com/article.html?article=st0313 [免费访问 pdf]

其中讨论了修剪手段的许多方面。

据我所知,该图没有明确的名称。每个可能的情节的不同名称实际上将是一场小噩梦:图形术语已经是一个可怕的混乱。我只是将其称为修剪平均值与修剪数字、分数或百分比的图(从而颠倒了 OP 的措辞)。

有关“对”的进一步小评论,请参阅我在Heteroscedasticity in Regression中的回答

编辑:有关与(仅限语言专家)的更多信息,请参见此处

我从未听说过这个图表,但我认为它非常简洁;可能有人以前做过。如果您将不同比例的数据视为异常值,您可以用它来查看均值如何变化和/或稳定。你得到抛物线形状的原因是你的(初始)分布作为一个整体是右偏斜的,但偏斜程度在分布的中心是不一样的。为了比较,请考虑下面的核密度图。

在此处输入图像描述

左侧是您的数据,因为它们被一一修剪。右侧是这些数据:y = c(5.016528, 7.601235, 10.188326, 13.000723, 16.204741, 20.000000, 24.684133, 30.767520, 39.260622, 52.623029, 79.736416),它们是标准对数正态分布的分位数,取自等间距的百分位数并乘以 20 以使值的范围相似。

您的数据开始向右倾斜,但到第 5 行时,它们向左倾斜,因此修剪更多数据开始恢复平均值。随着修剪的继续,右侧的数据保持类似的偏差。

下面是对数正态数据和均匀数据的图(z = 1:11,无偏斜 - 完全对称)。

在此处输入图像描述 在此处输入图像描述

我不认为这种图表有名字,但你所做的是合理的,我认为你的解释是有效的。我认为您所做的与 Hampel 的影响函数有关,请参阅https://en.wikipedia.org/wiki/Robust_statistics#Empirical_influence_function 特别是关于经验影响函数的部分。而且您的绘图肯定与数据的某种偏度有关,因为如果您的数据完全对称,则绘图将是平坦的。你应该调查一下!

            EDIT     

该图的一个扩展是还显示了在左右两侧使用不同修剪的效果。由于这不是在 R 中mean带有参数的常用函数中实现的trim,因此我编写了自己的修剪均值函数。为了获得更平滑的图,当修剪分数意味着删除非整数个点时,我使用线性插值。这给出了函数:

my.trmean  <-  function(x, trim)  {
    x  <-  sort(x)
    if (length(trim)==1) {
        tr1  <-  tr2  <-  trim }  else {
                                   tr1  <-  trim[1]
                                   tr2  <-  trim[2] }
    stopifnot((0 <= tr1)&& (tr1 <= 0.5)); stopifnot((0 <= tr2)&&(tr2 <= 0.5))
    n  <-  length(x)
    if ((tr1>=0.5-1/n)&&(tr2>=0.5-1/n)) return( median(x) )

    k1  <-  floor(n*tr1) ; k2  <-  floor(n*tr2)
    a1  <-  n*tr1-k1     ; a2  <-  n*tr2-k2
    crange  <-  if ( (k1+2) <= (n-k2-1) ) ((k1+2):(n-k2-1)) else NULL
    trmean  <-  sum(c((1-a1)*x[k1+1], x[crange], (1-a2)*x[n-k2]))/(length(crange)+2-(a1+a2)  )
    trmean     
}

然后我模拟一些数据并将结果显示为等高线图:

tr1  <-  seq(0, 0.5, length.out=25)
tr2  <-   seq(0, 0.5, length.out=25)

x  <-  rgamma(10000, 1.5)
vals  <-  outer(tr1, tr2, FUN=Vectorize(function(t1, t2) my.trmean(x, c(t1, t2))))

image(tr1, tr2, vals, xlab="left trimming", ylab="right trimming", main="Effect of trimming")
contour(tr1, tr2, vals, nlevels=20, add=TRUE)

给出这个结果:

显示修剪效果的等高线图