require(hdrcde)
x<-rlnorm(100)
d<-density(x)
# calcualte KDE with help of the hdrcde package
hdrResult<-hdr(den=d,prob=0)
# define the linear interpolation function for the density estimation
dd<-approxfun(d$x,d$y)
# get the density value of the KDE peak
vDens<-dd(hdrResult[['mode']])
4条答案
按热度按时间1yjd4xko1#
这里有两个处理模式的函数。dmode函数找到具有最高峰值的模式(主导模式),并且nmode标识模式的数量。
rsl1atfo2#
如果我理解了你的问题,我想你只是想对
x
和y
进行更精细的离散化。为此,您可以在density
函数中更改n
的值(默认值为n=512
)。例如,比较
使用:
5q4ezhmt3#
我认为你需要两个步骤来归档你需要的东西:
1)找到KDE峰值的x轴值
2)得到峰值的desnity值
所以(如果你不介意使用一个包)使用
hdrcde
包的解决方案看起来像这样:编辑:您也可以使用
如果它对你来说足够精确!
soat7uwm4#
使用'multimode'包的一行程序:
要在KDE的图上显示计算模式的位置,请添加
display = TRUE
参数。可以使用
mod0
参数返回多个模式(及其反模式)的位置;模取locmodes(x)$locations
的奇数位置,反模取偶数位置。