簡體   English   中英

R中的單變量自適應核密度估計

[英]Univariate adaptive kernel density estimation in R

是否有R函數可以計算用於單變量觀測的自適應核密度函數。 那akj(軟件包quantreg )呢? 謝謝。

我不知道該軟件包,但是您自己實現它非常簡單(這也將使您確切地了解自己在做什么),例如,讓我們在計划中采用這些值:

g = 5
n = 100
set.seed(g)
df = data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i))),
                y= unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i))))

plot(df)

在此處輸入圖片說明

假設您要在此分布上估計三個點的密度x1 = c(6,-1)x2 = c(0.3, 2)x3=c(3, -0.5) x1上的密度應弱,x2上的密度應高,x3上的密度應介於這兩個低密度和高密度之間:

points(6,-1, col='red', pch=19)
points(0.3,2, col='blue', pch=19)
points(3,-0.5, col='green', pch=19)

在此處輸入圖片說明

根據自適應核密度函數的定義:

http://en.wikipedia.org/wiki/Variable_kernel_density_estimation

library(functional)

gaussianKernel = function(u, h) exp(-sum(u^2)/(2*h^2))

densityFunction = function(x, df, ker, h)
{
    difference = t(t(df) - x)
    W = sum(apply(difference, 1, ker, h=h))
    W/(nrow(df)*(h^(length(df))))
}

myDensityFunction = Curry(densityFunction, df=df, ker=gaussianKernel , h=2)

並且我們得到了直觀結果的確認: 0 <= P(x1) < P(x3) < P(x2) <=1

#> myDensityFunction(x1)
#[1] 0.02140895
#> myDensityFunction(x2)
#[1] 0.1146402
#> myDensityFunction(x3)
#[1] 0.09341908

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM