2013-05-13 4 views
5

В стандартном примере функции LME() в nlme пакете R:Как подавить корреляционную таблицу в LME?

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

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

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

, который может быть огромным, если существует множество комбинаций факторов, участвующих ,

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

print(fm2, cor=F) 

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

ответ

2

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

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

printCoefmat(summary(fm2)$tTable) 
+0

Спасибо, что помогает уже (немного). Извините за поздний взлет, я отвлекся. – Jens

2

Я только недавно столкнулся с той же проблемой при затягивании модели с большим количеством фиксированных эффектов и таблицей корреляции была огромной и действительно завален выход. Глядя на 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") 

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