ロジスティック回帰:anovaカイ2乗検定対係数の有意性(anova()vs summary()in R)


35

8つの変数を持つロジスティックGLMモデルがあります。Rでカイ2乗検定を実行しましたanova(glm.model,test='Chisq')が、変数の2つは、テストの一番上で注文したときに予測的であり、一番下で注文したときにはそれほど予測されませんでした。summary(glm.model)それらの係数は有意でない(高いp値)であることを示唆しています。この場合、変数は重要ではないようです。

変数の有意性のより良い検定-モデルの要約の係数の有意性またはからのカイ2乗検定のどちらがよいかを尋ねたかったのanova()です。また、どちらが一方よりも優れているのはいつですか?

私はそれは広範な質問だと思いますが、何を考慮すべきかについてのポインタは評価されるでしょう。


4
これは、線形モデルで係数をテストするためのタイプIとタイプIIIの二乗和の区別に似ています。ここで私の答えを読むのに役立つかもしれません:タイプIシーケンシャルANOVAとMANOVAを解釈する方法
GUNG -復活モニカ

回答:


61

@gungの答えに加えて、anova関数が実際にテストするものの例を提供しようとします。これにより、テストに興味のある仮説に適したテスト決定できるようになります

結果と3つの予測変数、、およびがあると仮定します。ここで、ロジスティック回帰モデルがである場合。を実行すると、関数は次のモデルを順番に比較します。yx1x2x3my.mod <- glm(y~x1+x2+x3, family="binomial")anova(my.mod, test="Chisq")

  1. glm(y~1, family="binomial")glm(y~x1, family="binomial")
  2. glm(y~x1, family="binomial")glm(y~x1+x2, family="binomial")
  3. glm(y~x1+x2, family="binomial")glm(y~x1+x2+x3, family="binomial")

したがって、各ステップで1つの変数を追加することにより、小さなモデルを次に複雑なモデルと順次比較します。これらの比較はそれぞれ、尤度比検定(LR検定。以下の例を参照)を介して行われます。私の知る限り、これらの仮説はめったに興味がありませんが、これはあなたによって決定されなければなりません。

以下に例を示しRます。

mydata      <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
   ---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

# The sequential analysis
anova(my.mod, test="Chisq")

Terms added sequentially (first to last)    

     Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
NULL                   399     499.98              
gre   1  13.9204       398     486.06 0.0001907 ***
gpa   1   5.7122       397     480.34 0.0168478 *  
rank  3  21.8265       394     458.52 7.088e-05 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# We can make the comparisons by hand (adding a variable in each step)

  # model only the intercept
mod1 <- glm(admit ~ 1,                data = mydata, family = "binomial") 
  # model with intercept + gre
mod2 <- glm(admit ~ gre,              data = mydata, family = "binomial") 
  # model with intercept + gre + gpa
mod3 <- glm(admit ~ gre + gpa,        data = mydata, family = "binomial") 
  # model containing all variables (full model)
mod4 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") 

anova(mod1, mod2, test="LRT")

Model 1: admit ~ 1
Model 2: admit ~ gre
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       399     499.98                          
2       398     486.06  1    13.92 0.0001907 ***

anova(mod2, mod3, test="LRT")

Model 1: admit ~ gre
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       398     486.06                       
2       397     480.34  1   5.7122  0.01685 *

anova(mod3, mod4, test="LRT")

Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       397     480.34                          
2       394     458.52  3   21.826 7.088e-05 ***

の出力で-値があるワルド検定たテスト以下の仮説(彼らはしている交換可能とすることを注目すべきテストの順序は重要ではありません):psummary(my.mod)

  • 係数の場合x1glm(y~x2+x3, family="binomial")vs. glm(y~x1+x2+x3, family="binomial")
  • 係数の場合x2glm(y~x1+x3, family="binomial")vs.glm(y~x1+x2+x3, family="binomial")
  • 係数の場合x3glm(y~x1+x2, family="binomial")vs.glm(y~x1+x2+x3, family="binomial")

したがって、すべての係数を含む完全なモデルに対する各係数。Wald検定は、尤度比検定の近似です。また、尤度比テスト(LRテスト)も実行できます。方法は次のとおりです。

mod1.2 <- glm(admit ~ gre + gpa,  data = mydata, family = "binomial")
mod2.2 <- glm(admit ~ gre + rank, data = mydata, family = "binomial")
mod3.2 <- glm(admit ~ gpa + rank, data = mydata, family = "binomial")

anova(mod1.2, my.mod, test="LRT") # joint LR test for rank

Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       397     480.34                          
2       394     458.52  3   21.826 7.088e-05 ***

anova(mod2.2, my.mod, test="LRT") # LR test for gpa

Model 1: admit ~ gre + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       395     464.53                       
2       394     458.52  1   6.0143  0.01419 *

anova(mod3.2, my.mod, test="LRT") # LR test for gre

Model 1: admit ~ gpa + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       395     462.88                       
2       394     458.52  1   4.3578  0.03684 *

尤度比検定の値は、上記のWald検定で得られた値と非常に似ています。psummary(my.mod)

注:rankof の3番目のモデル比較anova(my.mod, test="Chisq")は、rank以下の例の比較(anova(mod1.2, my.mod, test="Chisq"))と同じです。毎回、値は同じです。毎回、それを含まないモデルとそれを含むモデルとの間の比較です。p7.088105rank


1
+1、これは優れた包括的な説明です。1つの小さな点:test="Chisq"尤度比テストを実行していない場合、そのために設定する必要があると思います。?anova.glmをtest="LRT"参照してください。
GUNG -復活モニカ

6
@gungお世辞に感謝します。test="LRT"そして、test="Chisq"(それはあなたがリンクされたページ上でそれを言う)同義です。
COOLSerdash

2
問題ありませんが、実際には良い点だと思います。test="LRT"尤度比検定であることはすぐに明らかなので、より良いです。私はそれを変更しました。ありがとう。
COOLSerdash

4
+1わずか1か月でここに急速に進歩したことと、うまく機能した明確な説明を提供する能力に感銘を受けました。あなたの努力に感謝します!
whuber

1
素晴らしい答え。p値(7.088e-05, 0.01419, 00.03684)をどのように解釈するかを質問できますか?
TheSimpliFire
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.