我不确定如何解释内核密度估计中带宽参数的值。假设我的值范围从 1 到 20。我需要如何设置带宽,以便每个内核的范围超过两个。例如,如果我想将内核设置在点 10 以上,那么内核的范围应该是 [9,11],如果高于 15,那么内核应该是 [14,16]。那仅仅是2的带宽吗?目标是赋予带宽一些意义。
如何解释核密度估计中的带宽值?
机器算法验证
内核平滑
密度估计
2022-04-11 03:33:12
1个回答
为简单起见,让我们假设我们正在谈论一些非常简单的内核,比如三角内核:
回想一下,在用于估计密度的核密度估计中,我们结合了以点核:
注意我们的意思是我们想用因子重新缩放一些与点的差异。大多数内核(不包括高斯)都限制在范围外的点,它们将返回等于零的密度。换句话说,是内核的尺度参数,它的范围从更改为。
这在下图中进行了说明,其中点用于估计具有不同带宽的内核密度(顶部的彩色点标记各个值,彩色线是内核,灰线是整体内核估计)。如您所见,使内核变窄,而使它们变宽。更改会影响单个内核和最终内核密度估计,因为它是单个内核的混合分布。更高使核密度估计更平滑,而随着变小,它导致核更接近单个数据点,并且随着你最终会得到一堆点为中心的Direc delta 函数。
以及生成绘图的 R 代码:
set.seed(123)
n <- 7
x <- rnorm(n, sd = 3)
K <- function(x) ifelse(x >= -1 & x <= 1, 1 - abs(x), 0)
kde <- function(x, data, h, K) {
n <- length(data)
out <- outer(x, data, function(xi,yi) K((xi-yi)/h))
rowSums(out)/(n*h)
}
xx = seq(-8, 8, by = 0.001)
for (h in c(0.5, 1, 1.5, 2)) {
plot(NA, xlim = c(-4, 8), ylim = c(0, 0.5), xlab = "", ylab = "",
main = paste0("h = ", h))
for (i in 1:n) {
lines(xx, K((xx-x[i])/h)/n, type = "l", col = rainbow(n)[i])
rug(x[i], lwd = 2, col = rainbow(n)[i], side = 3, ticksize = 0.075)
}
lines(xx, kde(xx, x, h, K), col = "darkgray")
}
有关更多详细信息,您可以查看 Silverman (1986) 和 Wand & Jones (1995) 的精彩介绍性书籍。
西尔弗曼,BW (1986)。用于统计和数据分析的密度估计。CRC/查普曼和霍尔。
Wand, MP 和 Jones, MC (1995)。内核平滑。伦敦:查普曼和霍尔/CRC。
其它你可能感兴趣的问题
