2013-05-13 10 views
5

W standardowym przykładzie funkcji LME() w opakowaniu nlme R:Jak zablokować tabelę korelacji w LME?

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

pojawia tabela korelacji:

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

który może być ogromny jeśli istnieje wiele kombinacji czynników zaangażowanych .

Czy istnieje sposób na wyłączenie wyjścia w komendzie podsumowania? wiem, że mogę używać

print(fm2, cor=F) 

ale nie pokazuje mi resztę zwykłym wyjściem na przykład nie obliczeniową wartość p.

Odpowiedz

2

Patrząc na nlme:::print.summary.lme nie widzę sposobu, aby stłumić drukowanie macierzy korelacji (choć można utworzyć posiekany wersję tej funkcji usuwania klauzuli if rozpoczynające if (nrow(x$tTable)>1) ...)

Być może warto byłoby do ciebie, aby móc wydrukować tylko podsumowanie parametrów stałych efektów ...?

printCoefmat(summary(fm2)$tTable) 
+0

Dziękuję, to już pomaga (trochę). Przepraszam za spóźniony głos, ale rozproszyłem się. – Jens

2

Właśnie niedawno prowadził do tego samego problemu, gdy modele dopasowane z dużą ilością stałych efektów i tabelą korelacji był ogromny i bardzo zaśmiecone się wyjście. Patrząc na print.summary.lme() (co nie jest eksportowana, więc trzeba użyć nlme:::print.summary.lme) pokazuje, że część pochodzi z tych linii:

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

jak już wspomniano przez Bena. Zamiast przepisywania/zastępowania całej funkcji, możemy również użyć prostej sztuczki, zastępując nlme:::print.correlation (czyli to, co faktycznie robi drukowanie macierzy korelacji) z naszą własną metodą print dla obiektów klasy correlation. Można to zrobić za pomocą:

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

Teraz macierz korelacji zostanie pominięta, ale otrzymamy pozostały wynik.