推荐语 那年当我看到“O(h) 项的偏差就神奇地消失了”这里时,心里不禁大赞,厉害了我的小轩哥! 一、一个例子核密度估计应该是大家常用的一种非参数密度估计方法,从某种程度上来说它的性质比直方图更好,可以替代直方图来展示数据的密度分布。但是相信大家会经常遇到一个问题,那就是有些数据是严格大于或等于零的,在这种情况下,零附近的密度估计往往会出现不理想的情况。下面以一个指数分布的模拟数据为例(样本量为1000),R程序代码为: set.seed(123) 可以看出,理论上应该单调递减的密度函数在0附近有明显的“陡坡”,而且不应该有密度的小于零的区域也有着正的估计值。当样本量增大时,这种现象也不会得到明显好转,下图是将样本量改为10000时的情形。
我们也许从平时看的书中了解到,当样本量趋于无穷时,核密度估计值将是收敛到真实的密度函数的,但我们可能不会特意去研究那些结论成立的条件。以上这两个简单的例子似乎给了我们一个直观的感觉,那就是当真实密度函数的支撑集(函数的支撑集指的是使得的x的集合)有边界时,核密度估计值可能会出现一些不理想的情况。下面就简单地给出一些理论的结果。 二、理论分析在一些必要的条件下(真实的密度函数 f 二阶导绝对连续,三阶导平方可积),核密度估计值的偏差有表达式,其中h是带宽,,是支撑集为[-1,1]的核函数(即在[-1,1]上有值,其余的地方取零)。可以看出这个偏差是随着带宽h的减小以的速度趋于零的。 而假设密度函数以0为边界,那么上述表达式将不再成立,而是代之以 其中。可以看出,当时,,,此时的偏差跟之前的那个表达式没有区别;但当时,和都是非零的,于是偏差总是存在。 也许你会提议说,将估计值除以,偏差就可以减小了吧?的确,这样是一种改进的办法,但也要注意到,此时h的一次项不会消除,也就是说原来的衰减速度放慢到了h,从效率上说相对于理想的情况是大打了折扣。 这时候一个巧妙的办法是,用另外一个核函数对f也做一次估计,那么就有 其中的和意义类似,只不过是针对的。 对以上两个式子进行线性组合,则会有 然后把的系数移到等式左边,项的偏差就神奇地消失了。 通过观察核密度估计的表达式,我们可以将上面这个过程等价地认为是对用了一个新的核函数进行估计,这个新的核函数是 特别地,如果将取为,那么将有一个简单的形式 当时,这个新的核函数就是,而当时(也就是在边界),它会对最初的核函数进行调整。当时,不管算出来的估计值是多少,都只需将密度的估计值取为0即可。 三、程序实现下面这段程序是对本文的第一幅图进行“整容”,代码及效果图如下: k <- function(x) 3 / 4 * (1 - x^2) * (abs(x) <= 1) 从中可以看出,边界的偏差问题已经得到了很好的改进。 如果真实的密度函数的支撑集不是,而是某一个闭区间,那么偏差修正的过程与上面类似,只不过是要将定义为。在编程序的时候,也只需把积分的上下限进行相应的调整即可。 四、参考文献Jeffrey S. Simonoff, 1998. Smoothing Methods in Statistics. Springer-Verlag:http://pages.stern./~jsimonof/SmoothMeth/ 作者简介 邱怡轩,普渡大学统计系博士,现为卡耐基梅隆大学博士后,感兴趣的方向包括计算统计学、机器学习、大型数据处理等,参与翻译了《应用预测建模》《R 语言编程艺术》《ggplot2:数据分析与图形艺术》等经典书籍,是 showtext、RSpectra、recosystem、prettydoc 等流行 R 软件包的作者。 |
|