2

a ( )的默认R打印方法报告Null DevianceResidual Deviance但不报告后者的相对大小作为前者的一部分,即 IMO,与评估模型拟合比绝对值更相关。glmprint.glm

我想修改方法以使其打印相对偏差。例如,现在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

4

1 回答 1

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包含原始的“系统”函数对象

于 2013-03-14T20:31:02.620 回答