【问题标题】:Model Fit statistics for a Logistic RegressionLogistic 回归的模型拟合统计量
【发布时间】:2010-07-26 16:55:32
【问题描述】:

我在 R 中运行逻辑回归模型。我使用了 Zelig 和 Car 包。但是,我想知道是否有一种简单的方法可以获取模型的模型拟合统计信息。 (伪 R 方、卡方、对数似然等)

【问题讨论】:

标签: r statistics r-zelig


【解决方案1】:

假设 glm1 是您的模型,并且您的样本大小是 n = 100

以下是一些拟合优度指标:

R2 <- 1 - ((glm1$deviance/-2)/(glm1$null.deviance/-2))
cat("mcFadden R2 = ", R2, "\n")

R2 <- 1 - exp((glm1$deviance - glm1$null.deviance)/2 * n)
cat("Cox-Snell R2 = ", R2, "\n")

R2 <- R2/(1 - exp((-glm1$null.deviance)/n))
cat("Nagelkerke R2 = ", R2, "\n")

AIC <- glm1$deviance + 2 * 2
cat("AIC = ", AIC, "\n")

通过这种方式,您可以大致了解如何计算 GoF 测量值。

【讨论】:

  • 只是对这个主题的简短补充:GoF 测量取决于对数似然值,为什么它们不像“正常”R 方那样对待。 McFadden 值为 0.2 并不意味着模型解释了 20% 的方差,因此它与 OLS 计算的 R-Square 不同。但在大多数模型中,Pseudo R-Squares >= 0.2 的值非常好。
【解决方案2】:

这通常使用summary() 函数完成。

【讨论】:

  • summary() 为我提供了系数和回归参数。这很重要,但不是我想要的。此外,使用 Zelig 输出,我得到以下输出: Null deviance: 1068.24 on 772 Freedom 残余偏差:939.48 on 761 degree of Freedom(941 个观测因缺失而被删除)AIC:963.48
  • 谢谢!!!我还发现使用 Design 包中的 lrm 函数运行逻辑回归会给出伪 R^2 作为输出。
【解决方案3】:

在不知道模型对象是什么的情况下很难回答这个问题。我不确定Zelig 会产生什么。

我会查看names(model)names(summary(model))names(anova(model,test = "Chisq")),看看是否有您想要的统计数据。我知道对于对数似然,logLik(model) 会给你你想要的。

【讨论】:

    【解决方案4】:

    虽然我不是专家,但物流回归模型的模型拟合统计数据在解释上并不像线性回归那样简单。假设您有二元响应,我发现一种有用的方法是按预测的概率区间(0-10%、10%-20%、....90%-100%)对数据进行分组并比较实际概率到预测的。这非常有用,因为您的模型通常会在低端过度预测或在高端预测不足。这也可能导致更好的模型。

    【讨论】:

    • 这不只是 logit 中 GOF 的 Hosmer-Lemeshow 测试吗?
    【解决方案5】:

    看看 pscl 包。但是要小心,缺少数据:

    library("MASS","pscl")
    
    admit_2 <- admit
    admit_2$gre.quant[sample(1:106, 45)] <- NA
    
    m0 <- MASS::polr(score ~ gre.quant + gre.verbal + ap + pt + female,
                  Hess=TRUE,
                  data=admit_2,
                  method="probit")
    
    m1 <- MASS::polr(score ~ gre.quant + gre.verbal + ap + pt + female,
                 Hess=TRUE,
                 data= na.omit(admit_2),
                 method="probit")
    
    pR2(m0)
         llh      llhNull           G2     McFadden         r2ML         r2CU 
     -57.4666891 -151.0299826  187.1265870    0.6195015    0.9534696    0.9602592 
    
    pR2(m1)
        llh     llhNull          G2    McFadden        r2ML        r2CU 
    -57.4666891 -83.3891852  51.8449922   0.3108616   0.5725500   0.6123230
    

    另外,请看这里: https://stats.stackexchange.com/questions/8511/how-to-calculate-pseudo-r2-from-rs-logistic-regression

    【讨论】: