利用R中的个体观察结果绘制核密度估计

时间:2016-08-04 13:46:34

标签: r plot kernel-density

保持简短,我希望实现的是一个像正确的情节:

enter image description here

我想获得一个标准的KDE图,其中各个内核绘制在观察结果上。

最好的解决方案是考虑所有不同内核函数的解决方案(例如矩形,三角形等)。

1 个答案:

答案 0 :(得分:0)

读完这篇Answer后,我设法找到了解决方案。

# Create some input data
x<-c(19, 20, 10, 17, 16, 13, 16, 10,  7, 18)


# Calculate the KDE
kde<-density(x,kernel="gaussian",bw=bw.SJ(x)*0.2)

# Calcualte the singel kernels/pdf's making up the KDE of all observations
A.kernel<-sapply(x, function(i) {density(i,kernel="gaussian",bw=kde$bw)},simplify=F)
sapply(1:length(A.kernel), function(i){A.kernel[[i]][['y']]<<-(A.kernel[[i]][['y']])/length(x)},simplify=F)


# Plot everything together ensuring the right scale (the area of the single kernels is corrected) 
plot(kde)
rug(x,col=2,lwd=2.5)
sapply(A.kernel, function(i){
        lines(i,col="red")}
        )

结果如下: enter image description here