有人可以向我解释清楚将两个陈述(a)和(b)链接在一起的数学逻辑吗?让我们有一组值(一些分布)。现在,
a)中位数不取决于每个值[它仅取决于一个或两个中间值];b)中位数是从中得出的最小绝对偏差之和的轨迹。
与此相反,
a)(算术)均值取决于每个值;b)均值是与之最小平方和偏差的轨迹。
到目前为止,我对它的理解是直观的。
有人可以向我解释清楚将两个陈述(a)和(b)链接在一起的数学逻辑吗?让我们有一组值(一些分布)。现在,
a)中位数不取决于每个值[它仅取决于一个或两个中间值];b)中位数是从中得出的最小绝对偏差之和的轨迹。
与此相反,
a)(算术)均值取决于每个值;b)均值是与之最小平方和偏差的轨迹。
到目前为止,我对它的理解是直观的。
Answers:
这是两个问题:一个是关于均值和中位数如何使损失函数最小化,另一个是这些估计对数据的敏感性。正如我们将看到的,这两个问题是相关的。
可以通过让摘要值更改并想象该批处理中的每个数字都对该值施加恢复力来创建一批数字中心的摘要(或估计量)。当力从不使数值偏离数字时,则可以说力平衡的任何点都是批处理的“中心”。
例如,如果我们在摘要和每个数字之间附加一个古典弹簧(遵循胡克定律),则力将与到每个弹簧的距离成比例。弹簧将以这种方式拉动摘要,最终稳定到能量最小的独特稳定位置。
我想提醒一下刚刚发生的一些小技巧:能量与距离的平方和成正比。牛顿力学告诉我们,力就是能量的变化率。 实现平衡(使能量最小化)可以平衡力。能量的净变化率为零。
我们称其为“ 摘要”或“平方损失摘要”。
通过假定恢复力的大小是恒定的,而不考虑值和数据之间的距离,可以创建另一个摘要。但是,力本身不是恒定的,因为它们必须始终将值拉向每个数据点。因此,当该值小于数据点时,力为正,但当该值大于数据点时,力为负。现在能量与值和数据之间的距离成正比。通常将有一个整个区域,其中能量恒定且净力为零。我们可以将该区域中的任何值称为“ 摘要”或“绝对损失摘要”。
这些物理类比提供了关于两个摘要的有用的直觉。例如,如果我们移动一个数据点,摘要将如何处理?在装有弹簧的盒中,移动一个数据点会拉伸或放松其弹簧。结果是对摘要的作用力发生了变化,因此必须做出相应的更改。 但是在L 1的情况下,大多数情况下,数据点的变化对汇总没有任何作用,因为作用力是局部恒定的。力可以改变的唯一方法是使数据点在摘要中移动。
(实际上,很明显,对一个值施加的净力由大于该值的点数(向上拉)减去小于小于该值的点数(向下拉)给出。的摘要必须出现在其中超出数据值的数量它正好等于数据值的数量不到它任何位置。)
由于力和能量都加在一起,因此无论哪种情况,我们都可以将净能量分解为来自数据点的单个贡献。通过将能量或力绘制为汇总值的函数,可以提供详细信息。摘要将是能量(或统计学上的“损失”)最小的位置。等效地,它将是强制平衡的位置:数据中心发生的损失净变化为零。
该图显示了一个具有六个值的小型数据集的能量和力(在每个图中以微弱的垂直线标记)。黑色虚线是彩色曲线的总和,显示了各个值的贡献。x轴表示摘要的可能值。
该算术平均值是一个点,平方损失最小化:将设在左上角的情节黑色抛物线的顶点(底部)。它总是独一无二的。该位就是绝对的损失被降到最低点。如上所述,它必须出现在数据中间。它不一定是唯一的。它位于右上角黑色断线的底部。(底部实际上由之间的短平坦部分的和- 0.17 ;在该间隔的任何值是中值)。
前面我描述了当数据点变化时摘要可能会发生什么。绘制汇总如何响应于更改任何单个数据点的更改很有帮助。(这些图实质上是经验影响函数。它们与通常的定义不同,它们显示的是估算的实际值,而不是显示这些值有多少变化。)摘要的值在y上用“估计”标记-轴提醒我们,此摘要估计的是数据集中间的位置。每个数据点的新(更改)值显示在其x轴上。
该图表示改变每个批次中的数据值的结果(同一个中的第一图形分析的)。每个数据值都有一个图,该图在其图上突出显示,沿底轴有一个长长的黑色刻度。(剩余的数据值用短的灰色勾号显示。)蓝色曲线跟踪L 2摘要(算术平均值),红色曲线跟踪L 1摘要-中位数。(由于中位数通常是一个值的范围,因此此处遵循绘制该范围中间值的约定。)
注意:
均值的敏感性是无限的:这些蓝线无限远地向上和向下延伸。中位数的灵敏度是有界的:红色曲线有上限和下限。
但是,中位数确实发生变化的地方,其变化远快于平均值。 每个蓝线的斜率是(通常是1 / Ñ用于与数据集Ñ值),而红色线的倾斜部分的斜率的所有1 / 2。
平均值对每个数据点都敏感,并且此敏感度没有界限(如第一幅图左下图中所有彩色线的非零斜率所示)。尽管中位数对每个数据点都敏感,但是灵敏度是有界的(这就是为什么第一个图右下角的彩色曲线位于零附近的狭窄垂直范围内的原因)。当然,这些只是基本力(损耗)定律的视觉重复:平均值为平方,中位数为线性。
可以更改中位数的时间间隔可以在数据点之间变化。它始终由不变的数据中的两个中值限制。(这些边界由淡淡的垂直虚线标记。)
因为中值的变化率总是,该量通过其可能因此改变通过的数据集的近中间值之间的这种间隙的长度来确定。
尽管通常只注意第一点,但所有四个点都很重要。尤其是,
“中位数并不取决于每个值”绝对是错误的。 该图提供了一个反例。
但是,中位数在某种意义上并不是“实质性地”依赖于每个值,尽管更改单个值可以更改中位数,但更改量受数据集中近中值之间的差距限制。特别地,变化量是有界的。我们说中位数是一个“阻力”摘要。
尽管均值不是抗性的,并且每当更改任何数据值时都会改变,但变化率相对较小。数据集越大,变化率越小。同样,为了使大型数据集的平均值产生实质性变化,至少一个值必须经历较大的变化。这表明仅对(a)小数据集或(b)数据集(其中一个或多个数据的值可能与批中间的值相距甚远)有关,均值的非抗性才值得关注。
我希望这些数字能证明这些言论,揭示了损失函数与估算器的灵敏度(或电阻)之间的深层联系。 有关此内容的更多信息,请从Wikipedia上有关M估计量的文章开始,然后尽可能地追求这些想法。
该R
代码产生了这些图形,并且可以很容易地以相同的方式进行修改以研究任何其他数据集:只需y
用任意数字矢量替换随机创建的矢量。
#
# Create a small dataset.
#
set.seed(17)
y <- sort(rnorm(6)) # Some data
#
# Study how a statistic varies when the first element of a dataset
# is modified.
#
statistic.vary <- function(t, x, statistic) {
sapply(t, function(e) statistic(c(e, x[-1])))
}
#
# Prepare for plotting.
#
darken <- function(c, x=0.8) {
apply(col2rgb(c)/255 * x, 2, function(s) rgb(s[1], s[2], s[3]))
}
colors <- darken(c("Blue", "Red"))
statistics <- c(mean, median); names(statistics) <- c("mean", "median")
x.limits <- range(y) + c(-1, 1)
y.limits <- range(sapply(statistics,
function(f) statistic.vary(x.limits + c(-1,1), c(0,y), f)))
#
# Make the plots.
#
par(mfrow=c(2,3))
for (i in 1:length(y)) {
#
# Create a standard, consistent plot region.
#
plot(x.limits, y.limits, type="n",
xlab=paste("Value of y[", i, "]", sep=""), ylab="Estimate",
main=paste("Sensitivity to y[", i, "]", sep=""))
#legend("topleft", legend=names(statistics), col=colors, lwd=1)
#
# Mark the limits of the possible medians.
#
n <- length(y)/2
bars <- sort(y[-1])[ceiling(n-1):floor(n+1)]
abline(v=range(bars), lty=2, col="Gray")
rug(y, col="Gray", ticksize=0.05);
#
# Show which value is being varied.
#
rug(y[1], col="Black", ticksize=0.075, lwd=2)
#
# Plot the statistics as the value is varied between x.limits.
#
invisible(mapply(function(f,c)
curve(statistic.vary(x, y, f), col=c, lwd=2, add=TRUE, n=501),
statistics, colors))
y <- c(y[-1], y[1]) # Move the next data value to the front
}
#------------------------------------------------------------------------------#
#
# Study loss functions.
#
loss <- function(x, y, f) sapply(x, function(t) sum(f(y-t)))
square <- function(t) t^2
square.d <- function(t) 2*t
abs.d <- sign
losses <- c(square, abs, square.d, abs.d)
names(losses) <- c("Squared Loss", "Absolute Loss",
"Change in Squared Loss", "Change in Absolute Loss")
loss.types <- c(rep("Loss (energy)", 2), rep("Change in loss (force)", 2))
#
# Prepare for plotting.
#
colors <- darken(rainbow(length(y)))
x.limits <- range(y) + c(-1, 1)/2
#
# Make the plots.
#
par(mfrow=c(2,2))
for (j in 1:length(losses)) {
f <- losses[[j]]
y.range <- range(c(0, 1.1*loss(y, y, f)))
#
# Plot the loss (or its rate of change).
#
curve(loss(x, y, f), from=min(x.limits), to=max(x.limits),
n=1001, lty=3,
ylim=y.range, xlab="Value", ylab=loss.types[j],
main=names(losses)[j])
#
# Draw the x-axis if needed.
#
if (sign(prod(y.range))==-1) abline(h=0, col="Gray")
#
# Faintly mark the data values.
#
abline(v=y, col="#00000010")
#
# Plot contributions to the loss (or its rate of change).
#
for (i in 1:length(y)) {
curve(loss(x, y[i], f), add=TRUE, lty=1, col=colors[i], n=1001)
}
rug(y, side=3)
}
和
嘿,这是我写了一点之后的贡献。对于提出要求的人来说可能有点晚了,但对其他人来说却值得。
对于一般情况:
由于函数是凸的,因此这是最小值
对于中位数
是空间的基数,因此在这种离散情况下,其中的元素数)
由于函数也是凸的,因此这又是最小值。
#
?