簡體   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