mgcvツールボックスの追加のスムースのほとんどは、実際にはスペシャリストアプリケーションにあります。一般的なGAM、特に一変量スムースでは、ほとんど無視できます(ランダムエフェクトスプライン、球体のスプライン、マルコフランダムフィールドは必要ありません)。たとえば、1変量データがある場合は、石鹸膜を滑らかにします)。
セットアップ費用を負担できる場合は、薄板回帰スプライン(TPRS)を使用してください。
これらのスプラインは漸近MSEの意味で最適ですが、観測ごとに1つの基底関数が必要です。何サイモンはでないmgcvはフルたTPRの基礎を取って、固有値分解に供することにより、標準たTPRの低ランクのバージョンを生成します。これは、新しい基底を作成します。k
新しい空間の最初の基底関数は、元の基底のほとんどの信号を保持しますが、基底関数ははるかに少なくなります。これは、mgcvが、観測ごとに1つではなく、指定された数の基底関数のみを使用するTPRSを取得する方法です。この固有分解は、古典的なTPRS基底の最適性の多くを保持しますが、大規模なデータセットの場合はかなりの計算量が必要です。
TPRSのセットアップコストに耐えられない場合は、3次回帰スプライン(CRS)を使用してください。
これは、生成するための迅速な基礎であるため、大量のデータの問題に適しています。ただし、これはノットベースであるため、ある程度、ユーザーはこれらのノットを配置する場所を選択する必要があります。ほとんどの問題では、デフォルトのノット配置(データの境界で、その間に等間隔に配置)を超えることで得られることはほとんどありませんが、共変量の範囲にわたって特に不均一なサンプリングがある場合は、ノットを配置することを選択できますたとえば、共変量の等間隔のサンプル変位値。
mgcvのその他すべてのスムーズは特別であり、等方性のスムースまたは2つ以上の共変量が必要な場合、空間スムージング、収縮またはランダム効果とランダムスプラインを実装する場合、または共変量が循環的である場合、またはウィグリネスが変動する場合に使用されます。共変量の範囲。あなたは唯一のあなたが特別な処理を必要とする問題が発生した場合ははるかにスムーズなツールボックスには、このベンチャーにする必要があります。
収縮
でたTPRとCRSの両方の縮小バージョンがありmgcvは。これらは、基底の完全に滑らかな部分も滑らかさのペナルティの影響を受けるスプラインを実装します。これにより、滑らかさの選択プロセスで、線形関数でさえも本質的にゼロまで滑らかに戻すことができます。これにより、滑らかさのペナルティで特徴選択も実行できます。
デュションスプライン、Pスプライン、Bスプライン
これらのスプラインは、ベーシスオーダーとペナルティオーダーを個別に指定する必要があるスペシャリストアプリケーションで使用できます。DuchonスプラインはTPRSを一般化します。他のペナルティ付き尤度ベースのアプローチとの比較を可能にするためにPスプラインがmgcvに追加されたという印象を受けます。これは、1996年の論文でEilers&Marxによって使用されたスプラインであり、GAMでの後続の作業の多くに拍車をかけました。Pスプラインは、形状拘束のあるスプラインやアダプティブスプラインなど、他のスプラインのベースとしても役立ちます。
mgcvに実装されているBスプラインを使用すると、スプラインのペナルティとノットを設定する際の柔軟性が大幅に向上し、観測データの範囲を超える外挿が可能になります。
サイクリックスプライン
共変量の値の範囲が、範囲の端点が実際に等しいはずの円のように考えることができる場合(月または日、年、移動角度、アスペクト、風向)、この制約を課すことができます基礎。このような共変量がある場合、この制約を課すことは理にかなっています。
適応スムーザー
アダプティブスプラインは、共変量のセクションに個別のGAMを適合させるのではなく、加重ペナルティマトリックスを使用します。この場合、共変量の範囲全体で重みがスムーズに変化することが許可されます。たとえば、TPRSおよびCRSスプラインの場合、共変量の範囲全体で同じ程度の滑らかさを想定しています。これが当てはまらない関係がある場合、スプラインが波状および非波状のパーツに適応できるようにするために、予想よりも多くの自由度を使用することになります。平滑化文献の典型的な例は、
library('ggplot2')
theme_set(theme_bw())
library('mgcv')
data(mcycle, package = 'MASS')
pdata <- with(mcycle,
data.frame(times = seq(min(times), max(times), length = 500)))
ggplot(mcycle, aes(x = times, y = accel)) + geom_point()
これらのデータは明らかに異なる滑らかさの期間を示しています-系列の最初の部分では事実上ゼロであり、衝撃中のロット、その後減少します。
これらのデータに標準のGAMを当てはめると
m1 <- gam(accel ~ s(times, k = 20), data = mcycle, method = 'REML')
適度なフィット感が得られますが、times
使用範囲の最初と最後に余分なウィグリネスがあり、使用されたフィットは14自由度です。
plot(m1, scheme = 1, residuals = TRUE, pch= 16)
変化するウィグリネスに対応するために、適応スプラインは、重み付けされたペナルティマトリックスを使用し、重みは共変量で滑らかに変化します。ここでは、同じ基準寸法(k = 20)を使用して元のモデルを再フィットしますが、元のモデルm = 5
の1ではなく5つの平滑化パラメーター(デフォルトは)があります。
m2 <- gam(accel ~ s(times, k = 20, bs = 'ad'), data = mcycle, method = 'REML')
このモデルははるかに少ない自由度(〜8)を使用し、フィットされたスムースは端部でぐらつきが少なく、インパクト中のヘッド加速度の大きな変化に適切にフィットできることに注意してください。
ここで実際に行われているのは、スプラインには平滑化の基準とペナルティの基準があるということです(共変量によって重みが滑らかに変化できるようにするため)。これらの両方のデフォルトではPのスプラインですが、あなたはあまりにもCRSの基本型を使用することができます(bs
唯一のいずれかにすることができ'ps'
、'cr'
、'cc'
、'cs'
。)
ここに示されているように、適応するかどうかの選択は実際には問題に依存します。関数形式が滑らかであると想定する関係があり、その滑らかさの程度が関係の共変量の範囲で変化する場合、適応スプラインは意味があります。シリーズに急激な変化の期間があり、変化が少ないか徐々に変化している期間がある場合、それはアダプティブスムースが必要になることを示している可能性があります。