我认为这种图形没有名称,但是您的操作是合理的,并且您的解释是有效的。我认为您正在做的事情与Hampel的Impact函数有关,请参阅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)
得到这个结果: