我看到M. C. Jones关于平滑分位数估计的论文(link)。他建议在点p附近使用以下估计量来表示分位数函数Q(第2节的第一个等式)。我试图在R中对函数进行编码,但估计与经验分位数相差甚远。
对于单变量样本X,带宽h和分位数p代码
SmoothQuantile = function(x, h, p) {
xs = sort(x)
n = length(x)
q = 0
for(i in 1:n) {
q = q + xs[i] * integrate(function(y) { 1/h * dnorm((p-y)/h) }, lower = (i-1)/n, upper = i/n)$value
}
return(q)
}
上面的估算工具似乎非常简单。什么可能导致结果远离经验分位数的想法?
比较结果使用
x=rnorm(100, 0, 1)
p=0.01
h=0.3043 #normal scale bandwidth value
quantile(x, p) #empirical quantile
SmoothQuantile(x, h, p) #smooth quantile