Локальная линейная регрессия в R - locfit() vs locpoly()

Я пытаюсь понять различное поведение этих двух сглаживающих функций при наличии, по-видимому, эквивалентных входных данных. Мое понимание заключалось в том, что 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)

Производит этот сюжет:

plot of smoothers

locpoly дает гладкую зеленую линию, а locfit дает синюю синюю линию. Очевидно, что locfit имеет здесь меньшую "эффективную" полосу пропускания, хотя предполагаемый параметр полосы пропускания имеет одинаковое значение для каждого.

Каковы эти функции по-разному?

Ответы