Порівнюючи згладжуючі сплайни та льоси для згладжування?


25

Я б хотів краще зрозуміти плюси / мінуси використання або лесових, або згладжуючих сплайнів для згладжування деякої кривої.

Ще одна варіація мого питання полягає в тому, чи є спосіб побудувати згладжуючий сплайн таким чином, що дасть ті самі результати, що і використання льосу.

Будь-яка посилання чи розуміння вітаються.


Тал, Наступна цитована стаття розглядає багато непараметричних регресійних підходів 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 нових змінних з вихідної змінної. Loess натомість просто оцінює відповідь на всі пережиті значення (або стратифіковану підмножину для великих даних).

Загалом, створені алгоритми для оптимізації значення штрафу для згладжування сплайнів (mgcv в R, мабуть, робить це найкраще). Лосс не настільки чіткий розріз, але, як правило, ви все одно отримаєте розумний результат від будь-якої реалізації. MGCV також дає відчуття еквівалентних ступенів свободи, щоб ви могли відчути, наскільки "нелінійні" ваші дані.

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


+1, приємна відповідь! Мені подобається чітке теоретичне викладення.
gung - Відновіть Моніку

Чому вони відрізняються біля країв опори?
imu96

1
х
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.