R の glm の r 二乗を計算する方法
線形回帰モデルを近似する場合、多くの場合、モデルがデータにどの程度適合するかを評価するためにR 二乗を使用します。
R 二乗は、回帰モデルの予測変数によって説明できる応答変数の分散の割合を表します。
この数値の範囲は 0 から 1 で、値が大きいほどモデルの適合性が高いことを示します。
ただし、 ロジスティック回帰モデルやポアソン回帰モデルなどの一般的な線形モデルには R 二乗値がありません。
代わりに、 McFadden の R 二乗として知られるメトリクスを計算できます。このメトリクスの範囲は 0 から 1 未満で、値が大きいほどモデルの適合性が高いことを示します。
次の式を使用してマクファデンの R 2 乗を計算します。
マクファデンの R 二乗 = 1 – (対数尤度モデル/ゼロ対数尤度)
金:
- 対数尤度モデル: 現在の近似モデルの対数尤度値
- ゼロ対数尤度: ヌル モデルの対数尤度値 (切片のあるモデルのみ)
実際には、0.40 を超える値は、モデルがデータに非常によく適合していることを示します。
次の例は、R のロジスティック回帰モデルのマクファデンの R 二乗を計算する方法を示しています。
例: R でのマクファデンの R 二乗の計算
この例では、ISLR パッケージのデフォルトのデータセットを使用します。次のコードを使用して、データセットの概要を読み込んで表示できます。
#install and load ISLR package install. packages (' ISLR ') library (ISLR) #define dataset data <- ISLR::Default #view summary of dataset summary(data) default student balance income No:9667 No:7056 Min. : 0.0 Min. : 772 Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340 Median: 823.6 Median: 34553 Mean: 835.4 Mean: 33517 3rd Qu.:1166.3 3rd Qu.:43808 Max. :2654.3 Max. :73554 #find total observations in dataset nrow(data) [1] 10000
このデータセットには、10,000 人の個人に関する次の情報が含まれています。
- デフォルト:個人がデフォルトしたかどうかを示します。
- 学生:個人が学生であるかどうかを示します。
- 残高:個人が保有する平均残高。
- 収入:個人の収入。
学生のステータス、銀行残高、収入を使用して、特定の個人が債務不履行になる確率を予測するロジスティック回帰モデルを構築します。
#fit logistic regression model model <- glm(default~student+balance+income, family=' binomial ', data=data) #view model summary summary(model) Call: glm(formula = default ~ balance + student + income, family = "binomial", data = data) Deviance Residuals: Min 1Q Median 3Q Max -2.4691 -0.1418 -0.0557 -0.0203 3.7383 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.087e+01 4.923e-01 -22.080 < 2e-16 *** balance 5.737e-03 2.319e-04 24.738 < 2e-16 *** studentYes -6.468e-01 2.363e-01 -2.738 0.00619 ** income 3.033e-06 8.203e-06 0.370 0.71152 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 2920.6 on 9999 degrees of freedom Residual deviance: 1571.5 on 9996 degrees of freedom AIC: 1579.5 Number of Fisher Scoring iterations: 8
次に、次の式を使用して、このモデルの McFadden の R 二乗値を計算します。
#calculate McFadden's R-squared for model with(summary(model), 1 - deviance/null. deviance ) [1] 0.4619194
McFadden の R 二乗値は0.4619194であることがわかります。この値は非常に高く、モデルがデータによく適合し、高い予測力を備えていることを示しています。
psclパッケージのpR2()関数を使用して、モデルの McFadden R 二乗値を計算することもできることにも注意してください。
#install and load pscl package install. packages (' pscl ') library (pscl) #calculate McFadden's R-squared for model pR2(model)[' McFadden '] McFadden 0.4619194
この値は以前に計算された値に対応することに注意してください。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。