Сравнение сглаживающих сплайнов и лессов для сглаживания?

25

Я хочу лучше понять плюсы / минусы использования лёсса или сглаживающих сплайнов для сглаживания некоторой кривой.

Другой вариант моего вопроса - есть ли способ построить сглаживающий сплайн так, чтобы он давал те же результаты, что и при использовании лёсса.

Любая ссылка или понимание приветствуются.

Таль Галили
источник
Tal. В следующей хорошо цитируемой статье рассматриваются многие непараметрические регрессионные подходы. Buja A., Hastie T. & Tibshirani R. (1989). Линейные сглаживатели и аддитивные модели . Летопись статистики , 17 (2), 453–510, лучше всего.
Алексис

Ответы:

16

Вот некоторый R-код / ​​пример, который позволит вам сравнить подгонки для подбора лесса и подгонки сплайна:

library(TeachingDemos)
library(splines)

tmpfun <- function(x,y,span=.75,df=3) {
    plot(x,y)
    fit1 <- lm(y ~ ns(x,df))
    xx <- seq( min(x), max(x), length.out=250 )
    yy <- predict(fit1, data.frame(x=xx))
    lines(xx,yy, col='blue')
    fit2 <- loess(y~x, span=span)
    yy <- predict(fit2, data.frame(x=xx))
    lines(xx,yy, col='green')
    invisible(NULL)
}

tmplst <- list( 
    span=list('slider', from=0.1, to=1.5, resolution=0.05, init=0.75),
    df=list('slider', from=3, to=25, resolution=1, init=3))

tkexamp( tmpfun(ethanol$E, ethanol$NOx), tmplst )

Вы можете попробовать это с вашими данными и изменить код, чтобы попробовать другие типы или варианты. Вы также можете посмотреть на loess.demoфункцию в пакете TeachingDemos, чтобы лучше понять, что делает алгоритм Лёсса. Обратите внимание, что то, что вы видите из лёсса, часто является комбинацией лёсса со вторым интерполяционным сглаживанием (иногда само по себе сплайном), loess.demoфункция на самом деле показывает как сглаженное, так и необработанное лессовое соответствие.

Теоретически вы всегда можете найти сплайн, который аппроксимирует другую непрерывную функцию настолько близко, насколько вы хотите, но маловероятно, что будет простой выбор узлов, который надежно даст близкое приближение к лессовому соответствию для любого набора данных.

Грег Сноу
источник
Привет Грег: 1) Спасибо за ответ. 2) Мне нравится твоя функция loess.demo ...
Таль Галили
29

Фактические результаты сглаживания сплайна или лёсса будут очень похожи. Они могут выглядеть немного по-другому на краях опоры, но если вы убедитесь, что это «естественный» сглаживающий сплайн, они будут выглядеть очень похоже.

Если вы просто используете один, чтобы добавить «более плавный» график рассеяния, нет никакой реальной причины предпочитать один над другим. Если вместо этого вы хотите делать прогнозы для новых данных, обычно гораздо проще использовать сглаживающий сплайн. Это связано с тем, что сглаживающий сплайн является прямым расширением исходных данных; если вы использовали 100 узлов, это означает, что вы создали ~ 100 новых переменных из исходной переменной. Вместо этого Лесс просто оценивает ответ по всем полученным значениям (или стратифицированному подмножеству для больших данных).

В целом, существуют установленные алгоритмы для оптимизации значения штрафа за сглаживание сплайнов (mgcv в R, вероятно, делает это лучше всего). Лесс не так однозначен, но, как правило, вы все равно получите разумный результат от любой реализации. MGCV также дает вам представление об эквивалентных степенях свободы, чтобы вы могли почувствовать, насколько «нелинейны» ваши данные.

Я обнаружил, что при моделировании очень больших данных более простой естественный сплайн часто дает аналогичные результаты для минимальных вычислений по сравнению с сглаживающим сплайном или лессом.

Ши Паркс
источник
+1, хороший ответ! Мне нравится четкое теоретическое изложение.
gung - Восстановить Монику
Почему они отличаются у краев опоры?
imu96
1
Икс