全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8961 10
2015-04-23
如何计算在某一个点处的核密度估计值
在R中density函数
在我的例子中
density(data)
结果:
  x                 y            
Min.   :-2.8740   Min.   :0.0001349  
1st Qu.:-1.1622   1st Qu.:0.0240028  
Median : 0.5495   Median :0.0951087  
Mean   : 0.5495   Mean   :0.1459037  
3rd Qu.: 2.2613   3rd Qu.:0.2796734  
Max.   : 3.9730   Max.   :0.3794529  

它是默认512个点计算的
但我只有170个点,density(data,170)
得到170个x,好像得到的x,并不是计算data处的密度
想知道这几个点的密度值,如何得到,是否还要自己编程
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-4-24 11:08:32
试试这个:

den <- density(data)
den$y
den$x
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-24 15:07:06
怪了怪 发表于 2015-4-24 11:08
试试这个:

den
你好,好像不是我要的
data: 向量178×1
den <- density(data)
den$y的答案是522个
den$x也是522个
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-24 20:45:23
qdBazinga 发表于 2015-4-24 15:07
你好,好像不是我要的
data: 向量178×1
den
den$和den$x的长度是density()里的默认参数决定的,需要多少你自己可以改。
如果我没搞错,你想要的是某几个点处的density值,你可以这样做:
在den$x中找到最接近你要的点的值:(假设是x=25,一个点)
t <- which.min(abs(den$x)-25))
den$y[t]

如果是我自己,我不会这么做。对我来说,density() 只适合用来绘图。如果要估计具体的点的核密度值,我会自己写一段非参的小程序。

希望有帮助。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-25 10:42:19
怪了怪 发表于 2015-4-24 20:45
den$和den$x的长度是density()里的默认参数决定的,需要多少你自己可以改。
如果我没搞错,你想要的是某 ...
你好,感谢回复
我自己也写好了程序,但是带宽h如何选择呢,例如,我现在有130个点(data),来了一个新的点,计算该点的密度值,h的选择用density(data)$bw么
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-25 21:23:58
h的选择,基本就两个:一个是经验公式,如果你用Gaussian Kernel: h = 1.06*sd*n^(-1/5);另一个就是用Cross-validation。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群