@邱怡轩 Cloud2016 大神们,我有一个问题想请教一下。主要还是bandwidth(下面简称h
)的估计的问题。
Wiki
我看了一下wikipedia里面给出的近似的计算:
$$h=(\frac{4\hat{\sigma}^5}{3n})^{\frac{1}{5}}\approx 1.06 \hat{\sigma} n^{-1/5}$$
R
还有我查看了R中的bw.nrd0
function (x)
{
if (length(x) < 2L)
stop("need at least 2 data points")
hi <- sd(x)
if (!(lo <- min(hi, IQR(x)/1.34)))
(lo <- hi) || (lo <- abs(x[1L])) || (lo <- 1)
0.9 * lo * length(x)^(-0.2)
}
bw.nrd
function (x)
{
if (length(x) < 2L)
stop("need at least 2 data points")
r <- quantile(x, c(0.25, 0.75))
h <- (r[2L] - r[1L])/1.34
1.06 * min(sqrt(var(x)), h) * length(x)^(-1/5)
}
结果对比
数据:原贴中的数据。
JMP(因为公司限制,不好贴图)计算结果是:0.22706547075559
R中:
- bw.nrd: 0.2225342
- bw.nrd0: 0.1889441
我比较疑惑,到底应该怎么算以及JMP中使用的是什么方法(有时候模拟的数据JMP和bw.nrd0是一致的)?