2013-05-13 34 views
5

Trong ví dụ chuẩn của LME() chức năng trong gói nlme của R:Làm thế nào để loại bỏ bảng tương quan trong LME?

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

có xuất hiện một bảng tương quan:

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

mà có thể là rất lớn nếu có nhiều kết hợp yếu tố liên quan đến .

Có cách nào để chặn đầu ra trong lệnh tóm tắt không? Tôi biết rằng tôi có thể sử dụng

print(fm2, cor=F) 

nhưng điều này không hiển thị phần còn lại của kết quả thông thường, ví dụ: không tính giá trị p.

Trả lời

2

Nhìn vào nlme:::print.summary.lme Tôi không thấy một cách để ngăn chặn việc in ấn ma trận tương quan (mặc dù bạn có thể tạo ra một phiên bản hack của hàm tháo if khoản đầu if (nrow(x$tTable)>1) ...)

Có lẽ nó sẽ có ích để bạn có thể in chỉ tóm tắt các thông số hiệu ứng cố định ...?

printCoefmat(summary(fm2)$tTable) 
+0

Cảm ơn bạn đã giúp (một chút). Xin lỗi vì upvote muộn, tôi đã bị phân tâm. – Jens

2

Hoặc, ngắn gọn hơn, summary(fm2)$tTable

2

Tôi chỉ vừa mới chạy vào cùng một vấn đề khi mô hình phù hợp với rất nhiều hiệu ứng cố định và bảng tương quan là rất lớn và thực sự lộn xộn lên đầu ra. Nhìn vào print.summary.lme() (mà không xuất khẩu, vì vậy bạn phải sử dụng nlme:::print.summary.lme) cho thấy rằng phần xuất phát từ những dòng này:

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

như đã chỉ ra bởi Ben. Thay vì viết lại/thay thế toàn bộ hàm, chúng ta cũng có thể sử dụng một mẹo đơn giản, thay thế nlme:::print.correlation (đó là những gì thực sự làm việc in ma trận tương quan) với phương thức print của riêng chúng ta cho các đối tượng thuộc lớp correlation. Điều này có thể được thực hiện với:

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

Bây giờ ma trận tương quan sẽ bị bỏ qua, nhưng bạn nhận được kết quả còn lại.

Các vấn đề liên quan