我正在尝试理解这两个平滑函数在给定表面上等价的输入时的不同行为。我的理解是,locpoly
只接受一个固定的带宽参数,而 locfit
还可以在其平滑参数中包含一个变化部分(最近邻分数 "nn
")。我认为将 locfit
中的这个变化部分设置为零应该会使 "h
" 组件的行为就像 locpoly
中使用的固定带宽,但事实并非如此。
一个可行的例子:
library(KernSmooth)
library(locfit)
set.seed(314)
n <- 100
x <- runif(n, 0, 1)
eps <- rnorm(n, 0, 1)
y <- sin(2 * pi * x) + eps
plot(x, y)
lines(locpoly(x, y, bandwidth=0.05, degree=1), col=3)
lines(locfit(y ~ lp(x, nn=0, h=0.05, deg=1)), col=4)
生成这个图:
locpoly
给出了平滑的绿色线,而 locfit
给出了波动的蓝色线。显然,即使假定带宽参数对于每个函数都具有相同的值,locfit
在这里具有更小的“有效”带宽。
这两个函数有什么不同之处?
h
在lines(locfit(y ~ lp(x, nn=0, h=0.05, deg=1)), col=4)
中被更改为0.10时,两个平滑函数几乎相同。 - KenHBS