如何计算 r 中 glm 的 r 平方


通常,当我们拟合线性回归模型时,我们使用R 平方来评估模型对数据的拟合程度。

R 平方表示响应变量中可由回归模型中的预测变量解释的方差比例。

该数字范围从 0 到 1,值越高表示模型拟合越好。

然而,一般线性模型(例如逻辑回归模型和泊松回归模型)没有R平方值。

相反,我们可以计算一个称为McFadden’s R-Squared 的指标,其范围从 0 到略低于 1,值越高表示模型拟合越好。

我们使用以下公式来计算 McFadden 的 R 平方:

McFadden 的 R 平方 = 1 –(对数似然模型/对数似然)

金子:

  • 对数似然模型:当前拟合模型的对数似然值
  • 对数似然:零模型的对数似然值(仅具有截距的模型)

在实践中,高于 0.40 的值表明模型非常适合数据。

以下示例演示如何计算 R 中逻辑回归模型的 McFadden R 平方。

示例:计算 R 中的 McFadden 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 中执行其他常见任务:

如何计算 R 中的 R 平方
如何计算 R 中调整后的 R 平方
什么是好的 R 平方值?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注