2

如何从非标准分布中获得归一化常数。前任:

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

在R中使用密度后

dens<-density(x,n=length(x),adjust=0.4)
4

1 回答 1

5

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 显着偏离。例如,它们在此处进行了讨论。

于 2015-09-02T00:42:47.343 回答