r regression smoothing

loess regression



RegresiĆ³n lineal local en R-locfit() vs locpoly() (1)

Los dos parámetros representan el suavizado, pero lo hacen de dos maneras diferentes.

El parámetro de ancho de banda de locpoly es relativo a la escala del eje x aquí. Por ejemplo, si cambia la línea x <- runif(n, 0, 1) a x <- runif(n, 0, 10) , verá que la línea verde locpoly se vuelve mucho más ondulada a pesar del hecho de que todavía tienen el mismo número de puntos (100).

El parámetro de suavizado de locfit, h, es independiente de la escala y, en cambio, se basa en una proporción de los datos. El valor 0.05 significa que el 5% de los datos que están más cerca de esa posición se utilizan para ajustar la curva. Así que cambiar la escala no alteraría la línea.

Esto también explica la observación hecha en el comentario de que cambiar el valor de h a 0.1 hace que ambos se vean casi idénticos. Esto tiene sentido, porque podemos esperar que un ancho de banda de 0.05 contendrá alrededor del 10% de los datos si tenemos 100 puntos distribuidos uniformemente de 0 a 1.

Mis fuentes incluyen la documentación para el paquete locfit y la documentación para la función locpoly .

Estoy tratando de entender los diferentes comportamientos de estas dos funciones de suavizado cuando se me dan entradas aparentemente equivalentes. Mi entendimiento fue que locpoly solo toma un argumento de ancho de banda fijo, mientras que locfit también puede incluir una parte variable en su parámetro de suavizado (una fracción de vecinos más cercanos, " nn "). Pensé que establecer esta parte variable en cero en locfit debería hacer que el componente " h " actúe como el ancho de banda fijo utilizado en locpoly , pero evidentemente no es el caso.

Un ejemplo de trabajo:

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)

Produce esta trama:

locpoly da la línea verde suave, y locfit da la línea azul locfit . Claramente, locfit tiene un ancho de banda "efectivo" más pequeño aquí, a pesar de que el parámetro de ancho de banda supuesto tiene el mismo valor para cada uno.

¿Qué hacen estas funciones de manera diferente?