備忘ログ

チラシの裏的備忘録&メモ

Rでロジスティック回帰分析の疑似決定係数(pseudo R-squared)を{perfomance}パッケージを使って求める方法のメモ

Rでロジスティック回帰分析の疑似決定係数(pseudo R-squared)を{perfomance}パッケージを使って求める方法のメモ。

決定係数(R-squared、R2乗)は線形回帰分析のモデルの当てはまりの良さの指標の一つとなっている。

ロジスティック回帰分析では非線形モデルなのでモデルの当てはまりを決定係数ではなくAICなどの情報量基準を使用し検討することとなるが、当てはまりの良さが0~1で算出されないので少し分かりづらい。

そのため時折、ロジスティック回帰分析でも決定係数の算出を求められることがある。このとき算出するのが疑似決定係数となる。

Rでロジスティック回帰分析の疑似決定係数を算出する方法を調べると{BaylorEdPsych}を使う方法が紹介されていることがあるが、現在このパッケージはメンテナンスされておらずCRANのリポジトリから削除されアーカイブ版のみが存在する。

別に{BaylorEdPsych}アーカイブ版からダウンロードしても良いが、現在もアクティブにメンテナンスされているパッケージを使う方が良いと思う。

ということで、Rでロジスティック回帰分析の疑似決定係数を算出する関数を提供している{performance}を使用する。

{perfomance}はモデルのさまざまな当てはまりの良さを含めた指標を算出してくれる便利パッケージで、{easystats}パッケージファミリーの一つである。

詳しくはパッケージのページを見てもらえるといい。

easystats.github.io

今回はそのうち疑似決定係数の算出方法をexampleの例で示していく。

まずはパッケージをロードする。

require(performance)
##  要求されたパッケージ performance をロード中です

exampleに示されている通り、mtcarsのデータでエンジンの形と車重と燃費の関係のロジスティック回帰モデルをつくる。

model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial")
model
## 
## Call:  glm(formula = vs ~ wt + mpg, family = "binomial", data = mtcars)
## 
## Coefficients:
## (Intercept)           wt          mpg  
##    -12.5412       0.5829       0.5241  
## 
## Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
## Null Deviance:       43.86 
## Residual Deviance: 25.3  AIC: 31.3

このロジスティック回帰分析の疑似決定係数を求めるにはr2()という関数を使うと、Tjurの疑似決定係数を算出することができる。ci = 0.95などと指定すると疑似決定係数の95%信頼区間も算出できる。

r2(model, ci = 0.95)
##   Tjur's R2: 0.478
##    CI_low: 0.173
##    CI_high: 0.684

その他、Efron、McFadden、Cox & Snell、Nagelkerke / Cragg & Uhler、McKelvey & Zavoinaなどが算出できる。

それぞれについては次のページを参考にしてもらえるといいと思う。

stats.oarc.ucla.edu

# Efron’s
r2_efron(model)
## [1] 0.4749003
# McFadden’s
r2_mcfadden(model)
## # R2 for Generalized Linear Regression
##        R2: 0.423
##   adj. R2: 0.378
# Cox & Snell   
r2_coxsnell(model)
## Cox & Snell's R2 
##        0.4401407
# Nagelkerke / Cragg & Uhler’s
r2_nagelkerke(model)
## Nagelkerke's R2 
##       0.5899593
# McKelvey & Zavoina
r2_mckelvey(model)
## McKelvey's R2 
##     0.6787614

参考までに{BaylorEdPsych}パッケージのPseudoR2()で計算される疑似決定係数と比較してみる。

BaylorEdPsych::PseudoR2(model)
##         McFadden     Adj.McFadden        Cox.Snell       Nagelkerke 
##        0.4232145        0.2408164        0.4401407        0.5899593 
## McKelvey.Zavoina           Effron            Count        Adj.Count 
##        0.6787614        0.4749003        0.8437500        0.6428571 
##              AIC    Corrected.AIC 
##       31.2978755       32.1550184

同じになる。