[英]Find the probability density of a new data point using “density” function in R
我正在尝试使用R中的“密度”函数找到具有未知分布的连续数据的最佳PDF。现在,给定一个新的数据点,我想根据核密度找到该数据点的概率密度我从“密度”函数结果得到的估计量。 我怎样才能做到这一点?
如果你的新点将在density
产生的值范围内,那么这很容易做 - 我建议使用approx
(或者如果你需要它作为函数,则使用approxfun
)来处理网格值之间的插值。
这是一个例子:
set.seed(2937107)
x <- rnorm(10,30,3)
dx <- density(x)
xnew <- 32.137
approx(dx$x,dx$y,xout=xnew)
如果我们绘制密度和新点,我们可以看到它正在做你需要的:
如果需要推断新值,则返回NA
。 如果你想处理外推,我建议直接计算该点的KDE(使用你所拥有的KDE的带宽)。
这是一年了,但是,这是一个完整的解决方案。 我们打电话吧
d <- density(xs)
并定义h = d$bw
。 您的KDE估计完全取决于
xs
的元素, h
, 给定新值t
,您可以使用以下函数计算相应的y(t)
,假设您已使用高斯核进行估计。
myKDE <- function(t){
kernelValues <- rep(0,length(xs))
for(i in 1:length(xs)){
transformed = (t - xs[i]) / h
kernelValues[i] <- dnorm(transformed, mean = 0, sd = 1) / h
}
return(sum(kernelValues) / length(xs))
}
myKDE
作用是根据定义计算y(t)
。
请参阅: docs
dnorm(data_point, its_mean, its_stdev)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.