R中的局部线性回归——locfit()与locpoly()的比较

R中的局部线性回归——locfit()与locpoly()的比较,r,regression,smoothing,R,Regression,Smoothing,我试图理解这两个平滑函数在给定明显等效输入时的不同行为。我的理解是,locpoly只接受一个固定的带宽参数,而locfit也可以在其平滑参数中包含一个变化部分(最近邻分数,nn)。我认为在locfit中将这个变化部分设置为零应该会使“h”组件像locpoly中使用的固定带宽一样工作,但情况显然不是这样 一个有效的例子: library(KernSmooth) library(locfit) set.seed(314) n <- 100 x <- runif(n, 0, 1) eps

我试图理解这两个平滑函数在给定明显等效输入时的不同行为。我的理解是,
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)
库(内核平滑)
图书馆(locfit)
种子(314)

n这两个参数都表示平滑,但它们以两种不同的方式表示


locpoly的带宽参数与此处x轴的比例有关。例如,如果您更改了行
x我将代码更改了一点,以便我们可以更清楚地看到实际窗口宽度:

library(KernSmooth)
library(locfit)
x <- seq(.1, .9, length.out = 80)
y <- rep(0:1, each = 40)
plot(x, y)
lines(locpoly(x, y, bandwidth=0.1, degree=1), col=3)
lines(locfit(y ~ lp(x, nn=0, h=0.1, deg=1)), col=4)
库(内核平滑)
图书馆(locfit)

当带
h
的条带更改为0.10英寸
行时(locfit(y~lp(x,nn=0,h=0.05,deg=1)),col=4)
两个平滑函数几乎相同。您看到了吗?当x比例更改时,两条线的平滑度都会改变。
locfit::lp
的文档也与此答案相矛盾。