R中的单变量自适应核密度估计

R中的单变量自适应核密度估计,r,kernel-density,R,Kernel Density,有一个R函数可以计算一元观测值的自适应核密度函数。那么akj(packagequantreg)呢?谢谢。我不知道该软件包,但自己实现它非常简单(这也会让您准确地了解您正在做什么),例如,让我们在计划中采用以下值: 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, fu

有一个R函数可以计算一元观测值的自适应核密度函数。那么akj(package
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)

根据自适应核密度函数的定义:


我们有直觉结果的确认:<代码> 0嗨,请找到下面的答案,并考虑接受它如果它适合你,否则我会很高兴知道为什么它不回答你的问题!Beauvel上校,看来你的核密度估计器不是可变的。我看不出您在哪里更改平滑参数(h)或任何距离度量。另一个问题:当我集成数据时,CDF大于1(我使用单变量正态分布运行代码,并将其与rnorm进行比较)。非常感谢。这个方法与自适应内核类似吗?我在“在家庭范围研究中估计利用率分布的核方法”(B.J.Worton)Beauvel上校中看到过,看来你的核密度估计器不是一个变量。我看不出您在哪里更改平滑参数(h)或任何距离度量。另一个问题:当我集成数据时,CDF大于1(我使用单变量正态分布运行代码,并将其与rnorm进行比较)。

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)
#> myDensityFunction(x1)
#[1] 0.02140895
#> myDensityFunction(x2)
#[1] 0.1146402
#> myDensityFunction(x3)
#[1] 0.09341908