如何计算glm(R)中的拟合优度

机器算法验证 r 回归 广义线性模型
2022-01-27 22:59:09

我从运行 glm 函数得到以下结果。

我如何解释以下值:

  • 零偏差
  • 残余偏差
  • AIC

它们与合身性有关吗?我可以从这些结果(例如 R 平方或任何其他度量)中计算出一些拟合优度吗?

Call:
glm(formula = tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
    as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.52628  -0.24781  -0.02916   0.25581   0.48509  

Coefficients:
                     Estimate Std. Error  t value Pr(>|t|)    
(Intercept         -1.305e-01  1.391e-01   -0.938   0.3482    
tmpData$X1         -9.999e-01  1.059e-03 -944.580   <2e-16 ***
tmpData$X2         -1.001e+00  1.104e-03 -906.787   <2e-16 ***
tmpData$X3         -5.500e-03  3.220e-03   -1.708   0.0877 .  
tmpData$X4         -1.825e-05  2.716e-05   -0.672   0.5017    
tmpData$X5          1.000e+00  5.904e-03  169.423   <2e-16 ***
tmpData$X6          1.002e+00  1.452e-03  690.211   <2e-16 ***
tmpData$X7          6.128e-04  3.035e-04    2.019   0.0436 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for gaussian family taken to be 0.08496843)

    Null deviance: 109217.71  on 3006  degrees of freedom
Residual deviance:    254.82  on 2999  degrees of freedom
  (4970 observations deleted due to missingness)
AIC: 1129.8

Number of Fisher Scoring iterations: 2
3个回答

使用零偏差和残余偏差,具体来说:

1 - (Residual Deviance/Null Deviance)

如果您考虑一下,您正在尝试测量模型中的偏差与零值的比率;您的模型(残余偏差)比截距(零偏差)好多少。如果该比率很小,则您正在“解释” null 中的大部分偏差;减去 1 即可获得 R 平方。

在您的实例中,您将获得 0.998。

如果您只调用线性模型 (lm) 而不是 glm,它将在摘要中明确地给您一个 R 平方,您可以看到它是相同的数字。

使用 R 中的标准glm对象,您可以将其计算为:

reg = glm(...)
with(summary(reg), 1 - deviance/null.deviance)

(语言)R 中模型的默认错误族glm是高斯的,因此通过提交的代​​码,您将得到普通的线性回归,其中是广泛接受的“拟合优度”度量。R函数不报告 Nagelkerke 伪“ ”,而是报告 AIC(Akaike 信息标准)。对于 OLS 模型,Nagelkerke GOF 度量将与大致相同。R2glmR2R2

RGLM2=1(idi,model2)2/N(idi,null2)2/N        .=.        1SSE/n[model]SST/n[total]=ROLS2

关于如何解释 LHS 上的这种度量存在一些争论,但仅限于模型偏离更简单的高斯/OLS 情况时。但是在链接函数可能不是“身份”的 GLM 中,就像这里一样,并且“平方误差”可能没有相同的明确解释,因此也报告了 Akaike 信息标准,因为它看起来更普遍。GLM GOF 抽奖活动中还有其他几个竞争者,没有明确的赢家。

如果您要使用具有其他错误结构的 GLM,您可能需要考虑不报告 GOF 度量:哪个伪度量是要报告逻辑回归(Cox & Snell 或 Nagelkerke)的度量?R2

如果您正在运行二元逻辑模型,您还可以在 glm() 模型上运行 Hosmer Lemeshow 拟合优度检验。使用 ResourceSelection 库。

library(ResourceSelection)

model <- glm(tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
           as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7, family = binomial)

summary(model)
hoslem.test(model$y, model$fitted)