2013-03-14 4 views
2

по умолчанию R Метод печати для glm (print.glm) сообщает Null Deviance и Остаточная Deviance но не относительный размер последние как часть бывшего, которая, ИМО, более релевантная для оценки соответствия модели чем абсолютные значения.Как изменить метод печати системы?

Я хочу изменить метод, чтобы он напечатал относительное отклонение. Например, прямо сейчас 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% 

(NB: Я знаю, как вычислить и довольно напечатать номер)

Различные системы обеспечивают разные средства для этого; например, Emacs имеет крючки и CLOS MOP имеет after-methods, но я не знаю, как это сделать в R.

Как это сделать в R? Есть ли у R методы отборочных?

Спасибо!

PS. Я не хочу явно редактировать системный код, и я не хочу его копировать и изменять: когда выпущена следующая версия R, я не хочу редактировать свой код, чтобы включить улучшения, внесенные в систему. print.glm ,

+0

Итак, вы хотите «изменить метод печати системы», но вы не хотите изменять способ печати? Я немного смущен. – ndoogan

+0

этот вопрос непонятно. Добавьте пример. какова фактическая печать, и что вы ожидаете/хотите иметь. – agstudy

+0

@ndoogan: Я хочу изменить поведение системы, но я не хочу редактировать исходный код системы. Это обычное явление в объектно-ориентированных системах и обычно выполняется методами до/после/вокруг. – sds

ответ

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 содержит оригинальную функцию «системы» объект.

+1

Это выглядит как бесконечный цикл ... –

+0

@ Ferdinand.kraft: работает для меня – sds

Смежные вопросы