spss kernel densityy 怎么表示概率 matalb

一维数据可视化:核密度估计(Kernel Density Estimates) - 推酷
一维数据可视化:核密度估计(Kernel Density Estimates)
对于大量一维数据的可视化,除了使用直方图(Histogram),还有一种更好的方法:核密度估计(Kernel Density Estimates,简称KDE)。
所谓核密度估计,就是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟。以下面3个数据点的一维数据集为例:
绘制成直方图是这样的:
而使用KDE则是:
理论上,所有平滑的峰值函数均可作为KDE的核函数来使用,只要对归一化后的KDE而言(描绘在图上的是数据点出现的概率值),该函数曲线下方的面积和等于1即可 — 只有一个数据点时,单个波峰下方的面积为1,存在多个数据点时,所有波峰下方的面积之和为1。概而言之,函数曲线需囊括所有可能出现的数据值的情况。常用的核函数有:矩形、Epanechnikov曲线、高斯曲线等。单个数据点0所对应的这些核函数为:
Epanechnikov曲线
可以看到,这些函数存在共同的特点:
在数据点处为波峰
曲线下方面积为1
对于多个数据点的KDE曲线,由于相邻波峰之间会发生波形合成,因此最终所形成的曲线形状与选择的核函数关系并不密切。考虑到函数在波形合成计算上的易用性,一般使用高斯曲线(正态分布曲线)作为KDE的核函数。
除了核函数,另一个影响KDE的参数是
。带宽反映了KDE曲线整体的平坦程度,也即观察到的数据点在KDE曲线形成过程中所占的比重 — 带宽越大,观察到的数据点在最终形成的曲线形状中所占比重越小,KDE整体曲线就越平坦;带宽越小,观察到的数据点在最终形成的曲线形状中所占比重越大,KDE整体曲线就越陡峭。还是以上面3个数据点的一维数据集为例,如果增加带宽,那么生成的KDE曲线就会变平坦:
如果进一步增加带宽,那么KDE曲线在变平坦的同时,还会发生波形合成:
相反,如果减少带宽,那么KDE曲线就会变得更加陡峭:
从数学上来说,对于数据点Xi,如果带宽为h,那么在Xi处所形成的曲线函数为(其中K为核函数):
在上面的函数中,K函数内部的h分母用于调整KDE曲线的宽幅,而K函数外部的h分母则用于保证曲线下方的面积符合KDE的规则(KDE曲线下方面积和为1)。
带宽的选择很大程度上取决于主观判断:如果认为真实的概率分布曲线是比较平坦的,那么就选择较大的带宽;相反,如果认为真实的概率分布曲线是比较陡峭的,那么就选择较小的带宽。
R中KDE的实现
在R语言中,KDE的绘制是通过density()函数来实现的 — 通过density()函数计算得到KDE模型,然后再使用plot()函数对KDE曲线进行绘制:
x &- c(5, 10, 15)
d &- density(x)
在实现过程中,也可以将这两步合并为一句语句:
plot(density(x))
出于兼容性上的考虑,R语言中density()函数在计算带宽时,默认采用”nrd0″方法。不过,根据R语言的帮助文档,带宽参数bw应该显式声明为其它更合适的方法,比如”SJ”:
plot(density(x, bw=&SJ&))
对于调整带宽,除了修改bw参数,还可以通过设定adjust参数来进行扩大或缩小:
plot(density(x, bw=&SJ&, adjust=1.5))
在上面的例子中,最终使用的带宽将是采用”SJ”方法计算得到的带宽的1.5倍。adjust参数的默认值为1,也即既不扩大、也不缩小。
至于核函数,density()默认采用高斯曲线。可以通过设定kernel参数来更改核函数。比如:
plot(density(x, bw=&SJ&, kernel=&epanechnikov&))
density()函数接受以下7个核函数选项:
。高斯曲线,默认选项。在数据点处模拟正态分布。
epanechnikov
。Epanechnikov曲线。
rectangular
。矩形核函数。
triangular
。三角形核函数。
。余弦曲线。
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致Kernel Density Estimation Toolbox for Matlab - Publication details
Organizational structureBack
Rector`s Office
Institutes
Specialized Units
Other Units
› Publication details
Publication details Kernel Density Estimation Toolbox for MatlabBasic informationOriginal title:Kernel Density Estimation Toolbox for MatlabAuthor:Further informationCitation:ZELINKA, Ji?í. Kernel Density Estimation Toolbox for Matlab.
2011.@misc{934475, author = {Zelinka, Ji?í}, keywords = { kernel smoothing}, language = {eng}, institution = {Masarykova univerzita}, organization = {Masarykova univerzita}, title = {Kernel Density Estimation Toolbox for Matlab}, url = {http://www.math.muni.cz/~zelinka/software}, year = {2011}}Original language:EnglishField:Applied statistics, operation researchWWW:Type:SoftwareKeywords: kernel smoothingThe matlab toolbox for the kernel density estimation includes the latest methods for estimating smoothing parameters that were developed in the publication already preparing to release a team of authors led by prof. Horová. These methods are based on a algorithms of calculation the kernel convolutions, developed by the author. The graphical user interface that is also a part of the toolbox was designed for easy manipulation with parameters of this estimate.Related projects:[转]kernel&density&estimation-核密度估计
直方图密度估计是较为传统的非参密度估计方法,通常我们的做法:
1 将数据值覆盖的数据区间分成几个等子区间(bin)。
2 一个数据值落到这个相应的子区间,这个子区间块的高度就相应的加一个单位的高度。
举个wiki上的例子:
现在有6个数据点:x1=-2.1, x2=-1.3, x3=-0.4,
x4=1.9, x5=5.1,
x6=6.2.我们取子区间的宽度为2,然后按照步骤2依次操作:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/9af5cc094b852a7e94ca6b95.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图1&& 构造的直方图
这样我们就利用样本数据构造出了概率密度函数。
但是从图中很显然,利用直方图估计密度函数还是有不完美的地方:
1 密度函数是不平滑的
2 密度函数受子区间宽度影响很大,如果我们取0.5,5等构造出的密度函数显然与宽度取2的有很大差异。
3 当数据维数是1,2维情况下,直方图的使用是很普遍的,但是在数据维数再增加时,这种方法就有局限性了。
而基于核密度估计的方法就没有直方图的3的局限性。而且当我们采用平滑的核时,概率密度函数也是平滑的;但是当我们采用非平滑核时,概率密度函数也还是不连续的。
kernel density estimation:
核密度估计(kernel density estimation)是在中用来估计未知的,属於之一,由Rosenblatt
(1955)和(1962)提出,又名(Parzen window)。
假设样本数据值在D维空间服从一个未知的概率密度函数,那么在区域R内的概率为:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/e3f61d9530add11e.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
概率P的含义就为每个样本数据点落入区域R的概率为P.假设N个样本数据点有K个落入了区域R,那么就应该服从二项分布:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/9de252feecc7.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
由概率知识可知,在N样本数据很大时,K约等于N*P。而另一方面,我们假设区域R足够小的话,那么P约等于p(x)*V(V为区域R的空间)
。结合两个不等式子可得:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/ed244bc45cc367.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />(1)
那么,接下来根据等式(1)来估算p(x)就有两条路可以走:
K不变,我们通过决定区域V的大小来估算密度函数,那么我们就采用K-nearer-neighbour方法(这里不具体讨论)。
&2 V不变,我们通过决定K的大小来估算密度函数,那么我们采用kernel方法。
我们顺着2的思路走下去。
假设区域R是一个以x为中心,边长为h的极小立方体(也就是V不变),我们现在要考虑的是落入立体体数据点的个数K。我们定义一个kernel函数:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/102e2d0a7cbdbece2fddd4d5.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
该函数的意义是:数据维数为D维,当样本数据点落入小立方体时,函数值为1,其他情况下为0。所以落入立方提数据点的总个数K就可以表示为:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/0c0b20c80fe0e07ebf09e6a8.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />(2)
那么根据等式(1),把等式(2)代入(1)中,可得:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/7834296ddd882.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
此处的<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/f51cf8cfe92896.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />。
核密度估计的原理其实是很简单的。在我们对某一事物的概率分布的情况下。如果某一个数在观察中出现了,我们可以认为这个数的概率密度很大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。基于这种想法,针对观察中的第一个数,我们都可以f(x-xi)去拟合我们想象中
的那个远小近大概率密度。当然其实也可以用其他对称的函数。针对每一个观察中出现的数拟合出多个概率密度分布函数之后,取平均。如果某些数是比较重要,某
些数反之,则可以取加权平均。&&&&&
上面我们说过,当kernel density
estimation采用平滑核时,估计出的概率密度函数也是平滑的。我们很多情况下都采用Gaussin Kernel.
然而,核密度估计也不是很完美,还是存在着一些缺陷。我们想要获得比较好的概率密度函数,h带宽(bandwidth)的选择就是个很大的问题,太大或者太小都能很大程度上影响p(x)结果。
来个例子理解下(还是上文提到过的6个样本数据点):
假设我们采用Gaussin Kernel,方差取2.25.
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/chb_seaok/pic/item/dccfa45b9998f3e.jpg"
ALT="[转]kernel&density&estimation-核密度估计"
TITLE="[转]kernel&density&estimation-核密度估计" />
注:蓝线代表估计出的p(x),每条红线代表一个样本数据点。
我们看p(x)是连续的,从某种程度上来说就相当于在估计值之外的区域进行插值处理。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。苹果/安卓/wp
苹果/安卓/wp
积分 2242, 距离下一级还需 1358 积分
权限: 自定义头衔, 签名中使用图片, 设置帖子权限, 隐身, 设置回复可见
道具: 彩虹炫, 雷达卡, 热点灯, 雷鸣之声, 涂鸦板, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡, 沉默卡下一级可获得
道具: 千斤顶
购买后可立即获得
权限: 隐身
道具: 金钱卡, 雷鸣之声, 彩虹炫, 雷达卡, 涂鸦板, 热点灯
哼哼签到天数: 847 天连续签到: 1 天[LV.10]以坛为家III
学stata作图,遇到 kdensity,发现是kernel density,翻译作核函数,搜索了一会儿,感觉大概搞懂意思了,把资料贴在这里供大家参考哈
http://en.wikipedia.org/wiki/Kernel_density_estimation
/blog/?p=723
我感觉核函数就是在面对不知道概率密度函数的情况下,想要估计它,但手里只有几个观察量,于是以每个点的观察值为峰值做一个类似标准正态分布函数的平滑函数,各个拟合之间如果有交叉的部分,则进行加总,从而对这个不知道概率密度分布的函数进行估计的一种方法。
希望对大家有用。
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
看不了,全英文?
论坛好贴推荐
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
为做大做强论坛,本站接受风险投资商咨询,请联系(010-)
邮箱:service@pinggu.org
合作咨询电话:(010)
广告合作电话:(刘老师)
投诉电话:(010)
不良信息处理电话:(010)
京ICP证090565号
京公网安备号
论坛法律顾问:王进律师}

我要回帖

更多关于 kernel density图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信