核密度估计器用于估计特定的概率密度函数(引用 mvstat.net 和 sckit-learn docs)
我的困惑是 kde2d()
到底做了什么?它是否在下面的例子中估计了两个随机变量 f(a,b) 的联合分布概率密度函数?颜色是什么意思?
这是我所指的代码示例。
b <- log10(rgamma(1000, 6, 3))
a <- log10((rweibull(1000, 8, 2)))
density <- kde2d(a, b, n=100)
colour_flow <- colorRampPalette(c('white', 'blue', 'yellow', 'red', 'darkred'))
filled.contour(density, color.palette=colour_flow)
最佳答案
什么是核密度估计器? 本质上,它在数据的每个点(法线密度的中心是该点)上拟合一条小正态密度曲线,然后将所有小正态密度加起来到核密度估计器。
为了便于说明,我将添加来自 one of your links 的一维核密度估计器的图像。 .
二维核密度怎么样?
# library(MASS)
b <- log10(rgamma(1000, 6, 3))
a <- log10((rweibull(1000, 8, 2)))
# a and b contain 1000 values each.
density <- kde2d(a,b,n=100)
该函数创建一个从 min(a)
到 max(a)
和从 min(b)
到 max 的网格(b)
。 kde2d
现在不是在 a
或 b
中的每个值上拟合一个微小的 1D 法线密度,而是在每个点上拟合一个微小的 2D 法线密度网格。就像在一维情况下的核密度一样,它然后将所有密度值相加。
颜色代表什么意思?
正如@cel 在评论中指出的那样:估计概率取决于两个变量,所以我们现在有三个轴(a
、b
和estimated probability
).一种可视化 3 轴的方法是使用 等概率图。这听起来很花哨,但它与我们从天气预报中了解到的高/低压图像基本相同。
您正在使用
filled.contour(density,
color.palette = colorRampPalette(c('white', 'blue', 'yellow', 'red', 'darkred')))))
所以从低到高,绘图将着色为白色
、蓝色
、黄色
、红色
和最终 darkred
表示估计概率的最高值。这导致以下情节:
https://stackoverflow.com/questions/38761453/