Membandingkan splines smoothing vs loess untuk smoothing?

25

Saya ingin lebih memahami pro / kontra untuk menggunakan loess atau splines smoothing untuk menghaluskan beberapa kurva.

Variasi lain dari pertanyaan saya adalah apakah ada cara untuk membangun spline smoothing dengan cara yang akan menghasilkan hasil yang sama seperti menggunakan loess.

Referensi atau wawasan apapun disambut.

Tal Galili
sumber
Tal, Artikel berikut yang dikutip dengan baik melihat banyak pendekatan regresi non-parametrik Buja, A., Hastie, T., & Tibshirani, R. (1989). Model Smoothers dan Aditif Linear . The Annals of Statistics , 17 (2), 453–510, terbaik.
Alexis

Jawaban:

16

Berikut ini beberapa kode / contoh yang memungkinkan Anda membandingkan kecocokan untuk kecocokan loess dan kecocokan spline:

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 )

Anda dapat mencobanya dengan data Anda dan mengubah kode untuk mencoba jenis atau opsi lain. Anda mungkin juga ingin melihat loess.demofungsi dalam paket TeachingDemos untuk pemahaman yang lebih baik tentang apa yang dilakukan oleh algorythm loess. Perhatikan bahwa apa yang Anda lihat dari loess seringkali merupakan kombinasi dari loess dengan perataan interpolasi kedua (kadang-kadang itu sendiri spline), loess.demofungsi ini sebenarnya menunjukkan fit loess yang dihaluskan dan mentah.

Secara teoritis Anda selalu dapat menemukan spline yang mendekati fungsi kontinu lain sedekat yang Anda inginkan, tetapi tidak mungkin bahwa akan ada pilihan sederhana simpul yang andal akan memberikan perkiraan dekat ke kecocokan loess untuk setiap set data.

Greg Snow
sumber
Hai Greg: 1) Terima kasih atas jawabannya. 2) Saya suka fungsi loess.demo Anda ...
Tal Galili
29

Hasil sebenarnya dari spline smoothing atau loess akan sangat mirip. Mereka mungkin terlihat sedikit berbeda di tepi dukungan, tetapi selama Anda memastikan itu adalah spline smoothing "alami" mereka akan terlihat sangat mirip.

Jika Anda hanya menggunakan satu untuk menambahkan "lebih halus" ke sebar, tidak ada alasan nyata untuk memilih satu dari yang lain. Jika Anda ingin membuat prediksi pada data baru, umumnya lebih mudah menggunakan smoothing spline. Ini karena spline smoothing adalah perluasan basis langsung dari data asli; jika Anda menggunakan 100 knot untuk membuatnya berarti Anda membuat ~ 100 variabel baru dari variabel asli. Loess sebaliknya hanya memperkirakan respons di semua nilai yang dialami (atau subset bertingkat untuk data besar).

Secara umum, ada algoritma yang ditetapkan untuk mengoptimalkan nilai penalti untuk merapikan splines (mgcv dalam R mungkin melakukan ini yang terbaik). Loess tidak cukup jelas, tetapi Anda umumnya masih akan mendapatkan output yang masuk akal dari implementasi apa pun. MGCV juga memberi Anda perasaan untuk Derajat Kebebasan yang setara sehingga Anda bisa merasakan betapa "tidak linear" datanya.

Saya menemukan bahwa ketika memodelkan pada data yang sangat besar, spline alami yang lebih sederhana sering memberikan hasil yang sama untuk perhitungan minimal dibandingkan dengan spline smoothing atau loess.

Shea Parkes
sumber
+1, jawaban yang bagus! Saya suka penjelasan teoretis yang jelas.
gung - Reinstate Monica
Mengapa mereka berbeda di dekat tepi dukungan?
imu96
1
@ imu96 AFAIK, metode regresi non-parametrik jatuh di kedua ujung karena mereka bergantung pada lingkungan data ke kedua sisi titik sepanjang sumbu yang diperkirakan, dan ke arah tepi ada data hanya pada satu sisi, sehingga CIs dapatkan super lebar, dan estimasi sedikit bias. Setiap metode menderita dalam hal ini dengan cara yang berbeda karena bobot yang berbeda, cara yang berbeda dalam mendefinisikan lingkungan data, dll.x
Alexis