モデルを比較するための分散分析


9

RでのGAMに関するワークショップについては、このサイトを見ています。http//qcbs.ca/wiki/r_workshop8

セクションの最後に、3つの異なるモデルを比較して最適なモデルを決定するため2. Multiple smooth termsに使用する例を示しanovaます。出力は

  Analysis of Deviance Table
  Model 1: y ~ x0 + s(x1)
  Model 2: y ~ x0 + s(x1) + x2
  Model 3: y ~ x0 + s(x1) + s(x2)
    Resid. Df Resid. Dev      Df Deviance  Pr(>Chi)    
  1    394.08     5231.6                               
  2    393.10     4051.3 0.97695   1180.2 < 2.2e-16 ***
  3    385.73     1839.5 7.37288   2211.8 < 2.2e-16 ***
  ---
  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

これに基づいて、彼らはモデル3が最良であると結論付けています。私の質問は、彼らがそれをどう見るかです。

私の現在の理解は次のとおりです。- Pr(>Chi)valueはモデル2と3の両方で小さいので、モデル1よりも優れています。


3
ヒント:モデル3に表示され、モデル2に表示されない変数は何ですか?これに答えるには、「s(x2)」が何を意味するかを知る必要がありますs。これは、関数の定義方法によって異なります。(私はそれが何らかのスプラインであると思いますが、それ以上は推測x2するのs(x2)をます。)出力から、かなり複雑であることを知ることができます-からへの移動によりの自由度が追加されます-しかし、それだけで判断できますこの出力からそれについて。7.37288
whuber

1
するとAIC(model1, model2, model3)、モデル3の方が低いことがわかりAICます。これは、それが3つの中で最適なモデルであることのさらなる証拠になる可能性があります
BillyJean

3
モデル(2)と(3)の逸脱の大きな違いは説得力があります。
whuber

回答:


12

からの出力anova()は、一連の尤度比検定です。出力の行は次のとおりです。

  1. 出力の最初の行は、最も単純なモデルに対応し、平滑化のみを含みますx1x0この例では考慮に入れられていないため、この要素は無視しています)。これは、より単純なものに対してテストされていないため、最後のいくつかの列エントリは空の。
  2. 2行目は、1行目のモデルと2行目のモデルの間の尤度比検定です。0.97695余分な自由度を犠牲にして、残差逸脱度はだけ減少し1180.2ます。<1自由度を犠牲にして、この逸脱度の減少(または逆に、説明された逸脱度の増加)は、の真の効果x2が0 である場合はほとんどありません。

    なぜ0.97695自由度が上がるのですか?さて、の線形関数はx2モデルに1 dfを追加しますが、の平滑化x1は以前よりも少しペナルティを取り戻されるため、使用する有効自由度がわずかに少なくなるため、全体の自由度は1未満しか変化しません。

  3. 3行目は上記で説明したものとまったく同じですが、2行目のモデルと3行目のモデルを比較します。つまり、3行目は、モデリングからx2線形項への移行の改善x2を、滑らかな機能。繰り返しますが、このモデルの適合性の改善(逸脱の変更2211.87.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)。


1
コードとリファレンス付きの詳細な回答については+1。この答えは後で詳しく読んで学びます。1つの質問、あなたはそれが尤度比検定であると言いました。しかし、?anova.lmそのようなオプションはありません。FチスクまたはCPにすることができます
Haitao Du

1
@ hxd1011これはモデルmgcv:::anova.gamのメソッドではなく使用していlmます。これらは逸脱度検定の分析ですが、それは尤度比と同じです。
Gavin Simpson

1
ありがとう。ここで私の質問にいくつかの高レベルの要約で答えてもらえますか?またはあなたの答えはここにすでにカバーされています。
Haitao Du

1
@ hxd1011より具体的にする必要があります。どのようなモデルですか?背後には多くの仮定anova()がありますが、どれがモデルかによって異なります。多くの場合、非ガウスモデルでは、これらは尤度比検定または類似の検定を実行していますが、仮定は異なります。GLMとGAMでも異なります。anova()は便利な関数ですが、一般的な線形モデル以外の一般的な線形モデル(Sayを介しlm()て適合)の分散分析を行っていません。
ギャビンシンプソン

2
@DeltaIV申し訳ありませんが、それは私の側の言葉遣いが悪かったです。select = TRUEAFAIUがREML OKを使用して比較を行うすべてのスムーズな用語に完全にペナルティを課すことは何ですか。私はGAMSの新しいAICの詳細を見て、を使用しselect = TRUEたときに追加のペナルティが追加された場合の動作を確認していません。したがってselect = TRUE、安全面に立ち向かう場合、REMLは真の可能性ではなく、モデルの固定効果に依存しているため、AIC比較では使用されないという問題があります。両方の懸念を説明するということmethod = "ML"method = "REML"、再フィットするときに私が(ではなく)使用したということです。
Gavin Simpson

3

2つのモデルをでテストすることもできlrestます。

lrtest(two_term_model, two_smooth_model)

Model 1: y ~ x0 + s(x1) + x2
Model 2: y ~ x0 + s(x1) + s(x2)
      #Df  LogLik    Df  Chisq Pr(>Chisq)    
1  8.1107 -995.22                            
2 15.0658 -848.95 6.955 292.55  < 2.2e-16 ***

スムーズな関数を両方の項に追加すると、実際にモデルが複雑になりますが、対数尤度の改善は重要です。データはGAMシミュレーターによって生成されたので、これは驚くべきことではありません。

また、要約統計を印刷することもできます。

Link function: identity 

Formula:
y ~ x0 + s(x1) + x2

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  11.6234     0.3950  29.429  < 2e-16 ***
x02           2.1147     0.4180   5.059 6.48e-07 ***
x03           4.3813     0.4172  10.501  < 2e-16 ***
x04           6.2644     0.4173  15.010  < 2e-16 ***
x2           -6.4110     0.5212 -12.300  < 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.111  2.626 64.92  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.583   Deviance explained = 58.9%
GCV = 8.7944  Scale est. = 8.6381    n = 400

そして

Family: gaussian 
Link function: identity 

Formula:
y ~ x0 + s(x1) + s(x2)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   8.3328     0.2074  40.185  < 2e-16 ***
x02           2.1057     0.2955   7.125 5.15e-12 ***
x03           4.3715     0.2934  14.901  < 2e-16 ***
x04           6.1197     0.2935  20.853  < 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.691  3.343 95.00  <2e-16 ***
s(x2) 7.375  8.356 85.07  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.796   Deviance explained = 80.2%
GCV = 4.3862  Scale est. = 4.232     n = 400

説明された逸脱の違いに注意してください(それは巨大です)。より複雑なモデルは、R-sq。(adj)も優れています。2番目の平滑化項は非常に重要であり、データとうまく適合します。


2
これは問題のような別の例を生成するだけではありませんか?それが質問にどのように応答するかをより明確に示していただけますか?
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.