繁体   English   中英

使用R中的“密度”函数找出新数据点的概率密度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM