Как подавить корреляционную таблицу в LME?

В стандартном примере функции lme() в пакете nlme R:

fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1)
summary(fm2)

появляется корреляционная таблица:

Correlation: 
          (Intr) age   
age       -0.813       
SexFemale -0.372  0.000

который может быть огромным, если задействовано много комбинаций факторов.

Есть ли способ подавить вывод в сводной команде? Я знаю, что могу использовать

   print(fm2, cor=F) 

но это не показывает мне остальную часть обычного вывода, например, без расчета p-значения.


person Jens    schedule 13.05.2013    source источник


Ответы (3)


Глядя на nlme:::print.summary.lme, я не вижу способа подавить печать корреляционной матрицы (хотя вы можете создать взломанную версию этой функции, удалив предложение if, начинающееся с if (nrow(x$tTable)>1)...)

Возможно, вам было бы полезно иметь возможность печатать просто сводку параметров фиксированного эффекта... ?

 printCoefmat(summary(fm2)$tTable)
person Ben Bolker    schedule 13.05.2013
comment
Спасибо, это уже помогает (немного). Извините за позднее голосование, я отвлёкся. - person Jens; 23.06.2013

Или, короче, summary(fm2)$tTable

person bokov    schedule 21.06.2013
comment
это работает, но printCoefmat() делает вывод более красивым/более похожим на итоговый вывод... - person Ben Bolker; 29.11.2018

Недавно я столкнулся с той же проблемой при подборе моделей с множеством фиксированных эффектов, а таблица корреляции была огромной и действительно загромождала вывод. Глядя на print.summary.lme() (который не экспортируется, поэтому вам нужно использовать nlme:::print.summary.lme), видно, что часть исходит из этих строк:

if (nrow(x$tTable) > 1) {
    corr <- x$corFixed
    class(corr) <- "correlation"
    print(corr, title = " Correlation:", ...)
}

как уже указывал Бен. Вместо того, чтобы переписывать/заменять всю функцию, мы также можем использовать простой трюк, заменив nlme:::print.correlation (что собственно и делает печать корреляционной матрицы) нашим собственным методом print для объектов класса correlation. Это можно сделать с помощью:

assignInNamespace("print.correlation", function(x, title) return(), ns="nlme")

Теперь матрица корреляции будет опущена, но вы получите остальные выходные данные.

person Wolfgang    schedule 07.08.2015