从R中的核密度归一化常数

时间:2015-09-02 00:07:13

标签: r kernel-density normalizing

如何从非标准分布中获取规范化常量。例如:

x <- c(rnorm(500,10,1),rnorm(500,20,2),rnorm(500,35,1))

在R

中使用密度后
dens<-density(x,n=length(x),adjust=0.4)

1 个答案:

答案 0 :(得分:4)

density()的结果应该是一个合适的概率密度函数,因此density()返回的曲线下面积应该已经为1.

你的例子:

set.seed(1)
x <- c(rnorm(500,10,1), rnorm(500,20,2), rnorm(500,35,1))
dens <- density(x, n=length(x), adjust=0.4)

我们可以通过数字积分得到pdf下面积的近似值:

install.packages("sfsmisc")
library(sfsmisc)
integrate.xy(dens$x, dens$y)

哪个给出了

[1] 1.000241

该地区的确非常接近1.

然而,存在数值准确性问题,这可能导致该区域与1显着偏离。例如,他们被讨论here