R
(glm
)报告 Null Deviance 和剩余偏差的默认print.glm
打印方法,但不是相对的作为前者的一部分的后者的大小,即IMO,与评估模型拟合比绝对值更相关。
我想修改方法以使其打印相对偏差。
例如,现在R
打印:
Degrees of Freedom: 36 Total (i.e. Null); 35 Residual
Null Deviance: 182.8
Residual Deviance: 10.22 AIC: 63.39
我希望它打印
Degrees of Freedom: 36 Total (i.e. Null); 35 Residual
Null Deviance: 182.8
Residual Deviance: 10.22 AIC: 63.39
Relative Residual Deviance: 5.59%
(注意:我知道如何计算和打印数字!)
不同的系统为此提供不同的设施;例如,Emacs
有挂钩,CLOS MOP有after
-methods,但我不知道如何在R
中执行此操作。
我如何在R
中执行此操作? R
是否有方法限定符?
谢谢!
PS。我不想显式编辑系统代码,我也不想复制和修改它:当R
的下一个版本发布时,我不想编辑我的代码来合并所做的改进到系统print.glm
。
答案 0 :(得分:2)
啊,结果很简单:
print.glm.system <- print.glm
print.glm <- function(glm, ...) {
print.glm.system(glm, ...)
cat("Relative Residual Deviance: ",100*glm$deviance/glm$null.deviance,"%\n")
invisible(glm)
}
PS。这不是无限循环,因为print.glm.system
包含原始的“系统”函数对象。