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