Yumuşatma eğrileri ile yumuşatma için aşınmayı karşılaştırmak?


25

Bir eğriyi yumuşatmak için boşluk veya düzleme yayları kullanmanın artılarını / eksilerini daha iyi anlamak istiyorum.

Sorumun başka bir varyasyonu da, loess kullanmakla aynı sonuçları verecek şekilde bir düzleştirme spline inşa etmenin bir yolu olup olmadığıdır.

Herhangi bir referans veya içgörü memnuniyetle karşılanmaktadır.


Tal, Aşağıdaki Atıfta belirtilen makale birçok parametrik olmayan regresyon yaklaşımına bakmaktadır Buja, A., Hastie, T. ve Tibshirani, R. (1989). Doğrusal Yumuşatıcılar ve Katkı Modelleri . İstatistikler Annals , 17 (2), 453-510, en iyisi.
Alexis,

Yanıtlar:


16

İşte bir loess fit ve spline fit'in uyumlarını karşılaştırmanızı sağlayacak bazı R kodları / örnekleri:

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 )

Diğer tür veya seçenekleri denemek için verilerinizle deneyebilir ve kodu değiştirebilirsiniz. Ayrıca loess.demo, loess algorythm'in ne yaptığını daha iyi anlamak için TeachingDemos paketindeki işleve bakmak isteyebilirsiniz . Loess'ten gördüğünüz şeyin genellikle ikinci bir enterpolasyon düzleştirmesi (bazen kendi başına bir spline) olan bir loess kombinasyonu olduğunu unutmayın, loess.demofonksiyon aslında hem pürüzsüz hem de ham loess uyumunu gösterir.

Teorik olarak, istediğiniz kadar yakın bir başka fonksiyona yaklaşan bir spline her zaman bulabilirsiniz, ancak herhangi bir veri setine uygun bir yakınlığa güvenilir bir şekilde yakın bir yaklaşım verecek basit bir düğüm seçeneğinin olması muhtemel değildir.


Merhaba Greg: 1) Cevap için teşekkür ederim. 2) Ben ... senin loess.demo fonksiyonunu seviyorum
Tal Galili

29

Yumuşatma spline veya loess gelen gerçek sonuçlar oldukça benzer olacaktır. Desteğin kenarlarında biraz farklı görünebilirler, ancak “doğal” bir düzleme ipi olduğundan emin olduğunuz sürece gerçekten benzer görüneceklerdir.

Bir dağılım grafiğine "pürüzsüz" bir tane eklemek için yalnızca birini kullanıyorsanız, birini diğerine tercih etmenin gerçek bir nedeni yoktur. Bunun yerine yeni verilerle ilgili tahminlerde bulunmak istiyorsanız, düzleştirme ipi kullanmak genellikle çok daha kolaydır. Bunun nedeni, düzleştirme spline'ın orijinal verilerin doğrudan temelli bir genişlemesi olmasıdır; 100 knot kullandıysanız, orijinal değişkenden ~ 100 yeni değişken yarattınız demektir. Loess bunun yerine yanıtı yalnızca deneyimlenen tüm değerlerde (veya büyük veriler için tabakalı bir alt kümede) tahmin eder.

Genel olarak, eğri çizgileri düzeltmek için ceza değerini optimize etmek için belirlenmiş algoritmalar vardır (R'deki mgcv muhtemelen bunu en iyi şekilde yapar). Loess kesin olarak kesin değildir, ancak genellikle herhangi bir uygulamadan hala makul bir sonuç alırsınız. MGCV ayrıca size eşdeğer Özgürlük Derecesi hakkında bir fikir verir, böylece verilerinizin ne kadar "doğrusal olmadığına" dair bir fikir edinebilirsiniz.

Çok büyük veriler üzerinde modelleme yaparken, daha basit bir doğal eğriliğin yumuşatıcı eğriliğe veya loesse kıyasla minimum hesaplama için genellikle benzer sonuçlar verdiğini buluyorum.


+1, iyi cevap! Net teorik anlatımı severim.
dediklerinin - Eski Monica

Yine de, desteğin kenarları yakınında neden farklılar?
imu96

1
x
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.