核密度估计

参考:https://www.zhihu.com/question/27301358
https://www.zybang.com/question/3797fbcae06ac70f5071ff1ee42f23e2.html
http://blog.csdn.net/baimafujinji/article/details/51720090
声明:本篇博客大部分都是借鉴慧航的解答,链接在上面,写作的目的主要是为了做笔记。
简单来说,核密度估计就是用来估计概率密度函数的,是对直方图的一个扩展。也叫做Parzen window密度估计。

概率密度函数 与分布函数

那既然是估计概率密度函数(密度函数)的,我来简单地介绍一下相关的概念。概率密度函数是分布函数的一阶导,而事实上我们是无法得到分布函数的。好在数理统计这门科学揭露了理论与样本的内在联系。根据格利文科定理,当样本容量足够大时,从样本中算得的经验分布函数 (EDF,Empirical Distribution Functions)Fn(x) 与总体分布函数 (理论上的)F(x) 差异也可以足够小,此时我们可以通过样本的经验分布函数Fn(x)来近似逼近分布函数F(x)。所以我们说经验分布函数是理论分布函数与实际数据间的桥梁,经验分布函数依概率收敛于总体分布函数。那怎样求解经验分布函数呢?具体的思想就是以样本频率来估计概率,以这样的方式得到的理论分布函数的一个逼近。下图就是经验分布函数的公式:
核密度估计
即F(t)的估计为所有小于t的样本的概率。
如果在图上画出经验函数的图像,
核密度估计我们会发现这样的经验分布函数并不可导。换句话说就是无法求得概率密度函数。
那如何估计概率密度函数呢?其实除了核密度估计还有直方图方法。因为在此只是为了介绍核密度估计。我就简略说一下直方图的思想,求出样本总体的直方图,然后将每个小区间的中点平滑地连接起来,从而得到连续的经验分布函数。
核密度估计

核密度估计

我们应当有微分的概念。如果我们想知道X=x处的密度函数值,可以像直方图一样,选一个x附近的小区间,数一下在这个区间里面的点的个数,除以总个数,应该一个比较好的估计。即密度函数可以写为如下形式:
核密度估计
具体地,密度函数的估计为
核密度估计

窗口h选取的问题

那么一个很自然的问题来了,h该怎么选取呢?
给定样本容量N,h如果选的太大,肯定不符合h趋向于0的要求。h选的太小,那么用于估计f(x)的点实际上非常少。
所以理论上存在一个最小化均方误差(mean square error)的一个h。h的选取应该取决于N,当N越大的时候,我们可以用一个比较小的h,因为较大的N保证了即使比较小的h也足以保证区间内有足够多的点用于计算概率密度。因而,我们通常要求当N→∞,h→0。比如,在这里可以推导出,最优的h应该是N的-1/5次方乘以一个常数c,也就是h =c*N(-1/5) 。对于正态分布而言,可以计算出c=1.05×标准差。

虽然我们估计出了概率密度函数(密度函数),但是从上面的公式可以看出,因为是一段一段求出的,得到的密度函数不光滑。如果记核密度估计那么上面的估计式就变成核密度估计,对密度函数进行积分核密度估计。因为密度函数的积分是等于1的,因而只要K的积分等于1,就能保证估计出来的密度函数积分等于1。
那么一个自然的想法是,我们是不是可以换其他的函数形式呢?比如其他的分布的密度函数作为K?
比如,如果采用标准正态分布的密度函数作为K,估计就变成了:核密度估计此时我们会发现密度函数可导了,而且积分积起来等于1。
此外扩展到多维公式就是核密度估计
其中d为x的维数,K为多维的kernel。
贴一张最终的结果图:
核密度估计
上面的蓝色线条就是kernel density的结果。