如何获得估计密度的函数?

wil*_*eau 5 r function

如何将密度(数据集)的结果保存为函数?那么如果我想在该函数中评估点x,它会从该密度(数据集)中获得概率?

Chi*_*til 3

如下所示,density函数返回一个包含密度函数值的列表xy该列表可用于使用approxfun函数创建“插值”函数。

d <- density(rnorm(100))

str(d)
## List of 7
##  $ x        : num [1:512] -3.85 -3.83 -3.82 -3.8 -3.79 ...
##  $ y        : num [1:512] 0.000135 0.000154 0.000176 0.0002 0.000227 ...
##  $ bw       : num 0.332
##  $ n        : int 100
##  $ call     : language density.default(x = rnorm(100))
##  $ data.name: chr "rnorm(100)"
##  $ has.na   : logi FALSE
##  - attr(*, "class")= chr "density"


pdf <- approxfun(d)


pdf(2)
## [1] 0.05439069
Run Code Online (Sandbox Code Playgroud)

approxfun给出线性近似

为了验证,让我们绘制原始密度d

plot(d)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

pdf现在让我们使用我们创建的新函数绘制插值

x <- seq(-2,2,by=0.01)

points(x, pdf(x))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述