平滑化スプラインと平滑化のレスを比較しますか?


25

曲線を平滑化するために黄土または平滑化スプラインを使用することの長所/短所をよりよく理解したいと思います。

私の質問の別のバリエーションは、黄土を使用するのと同じ結果をもたらす方法で平滑化スプラインを構築する方法があるかどうかです。

参照または洞察を歓迎します。


Tal、以下の引用された記事は、多くのノンパラメトリック回帰アプローチに目を向けています。線形スムーザーと加算モデルThe Annals of Statistics、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パッケージの関数を参照することもできます。レスから表示されるものは、レスと2番目の補間スムージング(スプライン自体である場合もある)の組み合わせであることが多く、loess.demo関数は実際にスムースレスフィットと生レスフィットの両方を示すことに注意してください。

理論的には、別の連続関数を必要に応じて近似するスプラインを常に見つけることができますが、任意のデータセットに当てはまるレスに近似を確実に与えるノットの単純な選択があることはほとんどありません。


こんにちは、グレッグ:1)答えてくれてありがとう。2)私は...あなたのloess.demo機能を愛する
タルGalili

29

スムージングスプラインまたは黄土の実際の結果は、かなり似たものになります。サポートの端で見た目が少し異なる場合がありますが、「自然な」スムージングスプラインであることを確認する限り、実際に似ています。

散布図に「スムーザー」を追加するために1つだけを使用している場合、一方を他方よりも優先する理由はありません。代わりに、新しいデータの予測を行いたい場合は、通常、平滑化スプラインを使用する方がはるかに簡単です。これは、平滑化スプラインが元のデータの直接基底拡張であるためです。100ノットを使用して作成した場合、元の変数から〜100個の新しい変数を作成したことになります。代わりに、Loessは、経験したすべての値(または大規模データの層別サブセット)で応答を推定します。

一般に、スプラインを平滑化するためのペナルティ値を最適化するための確立されたアルゴリズムがあります(Rのmgcvはおそらくこれが最善です)。黄土はそれほど明確ではありませんが、一般的にはどの実装からも妥当な出力が得られます。MGCVでは、同等の自由度を感じることができるため、データがどのように「非線形」であるかを感じることができます。

非常に大きなデータをモデル化する場合、より単純な自然スプラインは、平滑化スプラインまたは黄土と比較して、最小限の計算で同様の結果を提供することがよくあります。


+1、いい答えです!私は明確な理論的説明が好きです。
GUNG -復活モニカ

しかし、なぜサポートの端付近で異なるのですか?
imu96

1
x
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.