からの出力anova()
は、一連の尤度比検定です。出力の行は次のとおりです。
- 出力の最初の行は、最も単純なモデルに対応し、平滑化のみを含みます
x1
(x0
この例では考慮に入れられていないため、この要素は無視しています)。これは、より単純なものに対してテストされていないため、最後のいくつかの列エントリは空の。
2行目は、1行目のモデルと2行目のモデルの間の尤度比検定です。0.97695
余分な自由度を犠牲にして、残差逸脱度はだけ減少し1180.2
ます。<1自由度を犠牲にして、この逸脱度の減少(または逆に、説明された逸脱度の増加)は、の真の効果x2
が0 である場合はほとんどありません。
なぜ0.97695
自由度が上がるのですか?さて、の線形関数はx2
モデルに1 dfを追加しますが、の平滑化x1
は以前よりも少しペナルティを取り戻されるため、使用する有効自由度がわずかに少なくなるため、全体の自由度は1未満しか変化しません。
- 3行目は上記で説明したものとまったく同じですが、2行目のモデルと3行目のモデルを比較します。つまり、3行目は、モデリングから
x2
線形項への移行の改善x2
を、滑らかな機能。繰り返しますが、このモデルの適合性の改善(逸脱の変更2211.8
は7.37288
より多くの自由度を犠牲にしてs(x2)
います)に関連付けられている追加のパラメーターがすべて0である場合は、起こりそうにありません。
要約すると、2行目では、モデル2はモデル1よりも適合しているので、の線形関数はx2
の影響がないよりも優れていますx1
。しかし、3行目では、モデル3はモデル2よりもデータに適合しているため、x2
の線形関数よりもの滑らかな関数が優先されx2
ます。これはモデルの逐次分析であり、最も単純なモデルに対する一連の比較ではありません。
しかしながら…
彼らが示していることは、これを行うための最良の方法ではありません。最近の理論では、からの出力summary(m3)
が最も「正しい」カバレッジプロパティを持つことを示唆しています。さらに、モデル間で選択するにはselect = TRUE
、フルモデル(2つのスムースを持つモデル)をフィッティングするときにおそらく使用する必要がありx2
ます。これにより、この変数の線形またはまったく影響のないモデルを含む項の縮小が可能になります。また、REMLまたはMLの滑らかさの選択を使用しても適切ではありません。私たちの多くのmgcvユーザーは、デフォルトのオプションを考慮します(これはの実際のデフォルトではありませんgam()
)。
私がすることは:
library("mgcv")
gam_data <- gamSim(eg=5)
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, select = TRUE,
method = "REML")
summary(m3)
最後の行は以下を生成します:
> summary(m3)
Family: gaussian
Link function: identity
Formula:
y ~ x0 + s(x1) + s(x2)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.4097 0.2153 39.053 < 2e-16 ***
x02 1.9311 0.3073 6.284 8.93e-10 ***
x03 4.4241 0.3052 14.493 < 2e-16 ***
x04 5.7639 0.3042 18.948 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(x1) 2.487 9 25.85 <2e-16 ***
s(x2) 7.627 9 76.03 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.769 Deviance explained = 77.7%
-REML = 892.61 Scale est. = 4.5057 n = 400
両方の滑らかな項がnull関数とは大きく異なることがわかります。
何select = TRUE
やっていることは(これは完全に滑らかであるスプラインの一部である)ペナルティのヌル空間上の余分なペナルティを入れています。これがない場合、滑らかさの選択は、滑らかさを線形関数に戻すだけでペナルティを課すことができます(滑らかさの選択を行っているペナルティは、ベースの滑らかでない(波打つ)部分でのみ機能するためです)。選択を実行するには、ヌルスペース(基底の滑らかな部分)にもペナルティを課すことができる必要があります。
select = TRUE
これは、モデルのすべての滑らかな項に追加された2番目のペナルティを使用してこれを実現します(Marra and Wood、2011)。これは一種の収縮として機能し、すべての滑らかな項を0にいくらか引き寄せますが、余分な項をはるかにすばやく0に引き寄せるので、説明力がない場合はモデルから選択します。平滑化の重要性を評価するとき、この代償を払います。Ref.df
上記の列に注意してください(9はのデフォルト値でありk = 10
、これはセンタリング制約のある薄板スプラインの場合、9基底関数を意味します)、スプラインに2.5と7.7自由度のようなものを支払う代わりに、9のそれぞれ自由。これは、選択を行ったという事実、モデルにどの用語を含めるべきかわからなかったことを反映しています。
注:を使用するanova(m1, m2, m3)
モデルで型呼び出しを使用しないことが重要ですselect = TRUE
。で説明したように?mgcv:::anova.gam
、使用される近似は、ヌルスペースにペナルティがあるスムースでは非常に悪い場合があります。
コメントの中で、@ BillyJeanはAICを選択に使用することについて言及しました。Simon Woodと同僚(Wood et al、2016)による最近の研究では、モデルの平滑性パラメーターを推定したために発生する余分な不確実性を説明するAICが導出されました。このAICは適切に機能しますが、IIRC平滑化が線形関数に近い場合のAICの派生の動作については、いくつかの議論があります。とにかく、AICは私たちに与えるでしょう:
m1 <- gam(y ~ x0 + s(x1), data = gam_data, method = "ML")
m2 <- gam(y ~ x0 + s(x1) + x2, data = gam_data, method = "ML")
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, method = "ML")
AIC(m1, m2, m3)
> AIC(m1, m2, m3)
df AIC
m1 7.307712 2149.046
m2 8.608444 2055.651
m3 16.589330 1756.890
注:AICが何をするかselect = TRUE
は定かではなく、完全にペナルティが課されていないさまざまな固定効果のあるモデルをREMLを使用して注意深く比較する必要があるため、これらすべてをMLの滑らかさの選択に合わせました。
ここでも、推論は明らかです。平滑化し持つモデルx1
とはx2
、他の二つのモデルのいずれよりも実質的に良好にフィットしています。
Marra、G.とWood、SN一般化された加法モデルのための実用的な変数の選択。計算。統計 データ分析。55、2372–2387(2011)。
Wood、SN、Pya、N。&Säfken、B。一般的なスムーズモデルの平滑化パラメーターとモデルの選択。混雑する。統計 Assoc。111、1548–1563(2016)。
s
。これは、関数の定義方法によって異なります。(私はそれが何らかのスプラインであると思いますが、それ以上は推測x2
するのs(x2)
をます。)出力から、かなり複雑であることを知ることができます-からへの移動によりの自由度が追加されます-しかし、それだけで判断できますこの出力からそれについて。