使用"密度"找到新数据点的概率密度。在R中的功能

时间:2015-01-21 21:45:55

标签: r probability

我正在尝试使用R中的“密度”函数找到具有未知分布的连续数据的最佳PDF。现在,给定一个新数据点,我想找到基于此数据点的概率密度我从“密度”函数结果得到的核密度估计。 我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

如果您的新点数在density生成的值范围内,那么相当容易做到 - 我建议使用approx(或{{1如果你需要它作为一个函数)来处理网格值之间的插值。

以下是一个例子:

approxfun

如果我们绘制密度和新点,我们可以看到它正在做你需要的:

enter image description here

如果需要推断新值,则返回set.seed(2937107) x <- rnorm(10,30,3) dx <- density(x) xnew <- 32.137 approx(dx$x,dx$y,xout=xnew) 。如果你想处理外推,我建议直接计算该点的KDE(使用你所拥有的KDE的带宽)。

答案 1 :(得分:3)

这是一年,但不过,这是一个完整的解决方案。我们来电话

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所做的是由definition计算y(t)

答案 2 :(得分:-2)

请参阅:docs

dnorm(data_point, its_mean, its_stdev)