Rでロジスティック回帰分析の疑似決定係数(pseudo
R-squared)を{perfomance}
パッケージを使って求める方法のメモ。
決定係数(R-squared、R2乗)は線形回帰分析のモデルの当てはまりの良さの指標の一つとなっている。
ロジスティック回帰分析では非線形モデルなのでモデルの当てはまりを決定係数ではなくAICなどの情報量基準を使用し検討することとなるが、当てはまりの良さが0~1で算出されないので少し分かりづらい。
そのため時折、ロジスティック回帰分析でも決定係数の算出を求められることがある。このとき算出するのが疑似決定係数となる。
Rでロジスティック回帰分析の疑似決定係数を算出する方法を調べると{BaylorEdPsych}
を使う方法が紹介されていることがあるが、現在このパッケージはメンテナンスされておらずCRANのリポジトリから削除されアーカイブ版のみが存在する。
別に{BaylorEdPsych}
をアーカイブ版からダウンロードしても良いが、現在もアクティブにメンテナンスされているパッケージを使う方が良いと思う。
ということで、Rでロジスティック回帰分析の疑似決定係数を算出する関数を提供している{performance}
を使用する。
{perfomance}
はモデルのさまざまな当てはまりの良さを含めた指標を算出してくれる便利パッケージで、{easystats}
パッケージファミリーの一つである。
詳しくはパッケージのページを見てもらえるといい。
今回はそのうち疑似決定係数の算出方法を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などが算出できる。
それぞれについては次のページを参考にしてもらえるといいと思う。
# 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
同じになる。