R语言如何提取MASS包polr模型summary输出中的AIC值
提取polr模型AIC的方法
方法1:直接调用R通用AIC函数
这是最简便的方案,不需要挖掘模型对象结构,直接用R内置的AIC()通用函数传入polr模型对象即可得到和summary输出完全一致的结果:
AIC(mod_polr) # 对应示例代码输出结果为:6
方法2:手动计算验证
summary打印的AIC值不会预先存在模型或summary对象中,是打印时临时计算得到,计算公式为:
AIC = 残差偏差 + 2 * 模型参数总数
你可以从polr模型对象中直接提取对应字段自行计算:
# 提取模型残差偏差 deviance_val <- mod_polr$deviance # 统计参数总数:自变量系数个数 + 有序分类截距(阈值)个数 param_num <- length(mod_polr$coefficients) + length(mod_polr$zeta) # 计算得到AIC aic_val <- deviance_val + 2 * param_num aic_val # 对应示例代码输出结果为:6
为什么找不到AIC的存储字段
polr返回的模型对象、summary(mod_polr)返回的结果对象都没有预先存储AIC值,该值是print.summary.polr方法在输出结果时临时计算生成的,所以你通过str()、attributes()都无法找到对应的存储位置。
内容的提问来源于stack exchange,提问作者theforestecologist
相关产品推荐
相关产品推荐

