Làm thế nào để chọn thư viện nlme hoặc lme4 R cho các mô hình hiệu ứng hỗn hợp?


85

Tôi có phù hợp với một vài hiệu ứng mô hình hỗn hợp (đặc biệt là mô hình theo chiều dọc) sử dụng lme4trong Rnhưng muốn thực sự nắm vững các mô hình và mã mà đi với họ.

Tuy nhiên, trước khi lặn bằng cả hai chân (và mua một số sách) tôi muốn chắc chắn rằng mình đang học đúng thư viện. Tôi đã sử dụng lme4cho đến bây giờ bởi vì tôi chỉ thấy nó dễ dàng hơn nlme, nhưng nếu nlmetốt hơn cho mục đích của tôi thì tôi cảm thấy tôi nên sử dụng nó.

Tôi chắc chắn không phải là "tốt hơn" theo cách đơn giản, nhưng tôi sẽ đánh giá cao một số ý kiến ​​hoặc suy nghĩ. Tiêu chí chính của tôi là:

  1. dễ sử dụng (Tôi là một nhà tâm lý học bằng cách đào tạo và không đặc biệt thành thạo về thống kê hoặc mã hóa, nhưng tôi đang học)
  2. các tính năng tốt để phù hợp với dữ liệu theo chiều dọc (nếu có sự khác biệt ở đây - nhưng đây là những gì tôi chủ yếu sử dụng chúng cho)
  3. tóm tắt đồ họa tốt (dễ diễn giải), một lần nữa không chắc có sự khác biệt nào ở đây không nhưng tôi thường tạo ra các biểu đồ cho những người thậm chí ít kỹ thuật hơn tôi, vì vậy các ô rõ ràng đẹp luôn luôn tốt (tôi rất thích chức năng xyplot trong mạng () vì lý do này).

Như thường lệ, hy vọng câu hỏi này không quá mơ hồ, và cảm ơn trước cho bất kỳ sự khôn ngoan!

Câu trả lời:


68

Cả hai gói đều sử dụng Latticelàm phụ trợ, nhưng nlmecó một số tính năng groupedData()hay và lmList()thiếu lme4(IMO). Tuy nhiên, từ góc độ thực tế, hai tiêu chí quan trọng nhất dường như

  1. lme4mở rộng nlmevới các hàm liên kết khác: ví dụ nlme, trong , bạn không thể phù hợp với kết quả có phân phối không phải là gaussian, lme4có thể được sử dụng để phù hợp với hồi quy logistic hiệu ứng hỗn hợp, ví dụ.
  2. trong nlme, có thể chỉ định ma trận phương sai hiệp phương sai cho các hiệu ứng ngẫu nhiên (ví dụ AR (1)); nó không phải là có thể trong lme4.

Bây giờ, lme4có thể dễ dàng xử lý số lượng lớn các hiệu ứng ngẫu nhiên (do đó, số lượng cá nhân trong một nghiên cứu nhất định) nhờ vào phần C của nó và sử dụng ma trận thưa thớt. Các nlmegói đã phần nào được thay thế bởi lme4vì vậy tôi sẽ không mong đợi mọi người dành nhiều thời gian phát triển add-on trên nlme. Cá nhân, khi tôi có phản hồi liên tục trong mô hình của mình, tôi có xu hướng sử dụng cả hai gói, nhưng giờ tôi đã thành thạo lme4cách lắp GLMM.

Thay vì mua một cuốn sách, có một cái nhìn đầu tiên tại Doug Bates' dự thảo cuốn sách về R-rèn: lme4: Mixed tác dụng Modeling với R .


5
@ 2) chính xác hơn, trong lme4bạn có thể chỉ định cấu trúc hiệp phương sai đường chéo (nghĩa là các hiệu ứng ngẫu nhiên độc lập) hoặc ma trận hiệp phương sai không cấu trúc (nghĩa là tất cả các mối tương quan phải được ước tính) hoặc ma trận hiệp phương sai một phần cho các hiệu ứng ngẫu nhiên. Tôi cũng sẽ thêm một sự khác biệt thứ ba về các khả năng có thể phù hợp hơn trong nhiều tình huống dữ liệu theo chiều dọc: nlmechúng ta hãy chỉ định các cấu trúc phương sai hiệp phương sai cho phần dư (ví dụ như tự tương quan không gian hoặc thời gian hoặc không đồng nhất), lme4không.
fabian

@fabians (+1) À, cảm ơn! Không nhận ra lme4cho phép chọn các cấu trúc VC khác nhau. Sẽ tốt hơn nếu bạn thêm nó vào phản hồi của riêng bạn, cùng với các ý tưởng khác mà bạn có thể có. Tôi sẽ upvote. BTW, tôi cũng nhận ra rằng lmList()có sẵn trong lme4quá. Tôi dường như nhớ một số cuộc thảo luận về điều đó trên R-sig-ME.
chl

Bất kỳ thay thế nhanh hơn? Tôi cần phải phù hợp với các mô hình với bộ dữ liệu lớn và mất gần một giờ trong máy tính của tôi. Có nhiều gói hồi quy nhanh nhưng dường như không có gói nào có thể xử lý các hiệu ứng ngẫu nhiên.
skan

52

Như chl đã chỉ ra, sự khác biệt chính là loại cấu trúc phương sai hiệp phương sai nào bạn có thể chỉ định cho các hiệu ứng ngẫu nhiên. Trong lme4bạn có thể chỉ định một trong hai:

  • cấu trúc hiệp phương sai đường chéo (nghĩa là thực thi các hiệu ứng ngẫu nhiên không tương quan lẫn nhau thông qua cú pháp như ~ (1 | group)+ (0 + x1 | group) + (0 + x2 | group))
  • hoặc ma trận hiệp phương sai không cấu trúc (nghĩa là tất cả các mối tương quan được ước tính, ~ (1 + x1 + x2 | group))
  • hoặc một phần đường chéo, hiệp phương sai một phần không cấu trúc ( y ~ (1 + x1 | group) + (0 + x2 | group)trong đó bạn sẽ ước tính mối tương quan giữa độ dốc ngẫu nhiên và độ dốc ngẫu nhiên cho x1, nhưng không có mối tương quan giữa độ dốc ngẫu nhiên và độ dốc x2ngẫu nhiên và giữa độ dốc ngẫu nhiên x2và độ dốc ngẫu nhiên cho x1).

nlmecung cấp một lớp cấu trúc hiệp phương sai rộng hơn nhiều cho các hiệu ứng ngẫu nhiên. lme4Tuy nhiên, kinh nghiệm của tôi là tính linh hoạt là đủ cho hầu hết các ứng dụng.

Tôi cũng muốn thêm một sự khác biệt thứ ba trong khả năng mà bạn có thể phù hợp hơn với nhiều tình huống dữ liệu theo chiều dọc: nlme cho phép của bạn xác định cấu trúc sai-hiệp phương sai cho dư (tức là tương quan không gian hoặc thời gian hoặc heteroskedasticity hoặc biến covariate phụ thuộc) trong weightslập luận (cf ?varFunc), trong khi lme4chỉ cho phép các trọng số trước cố định cho các quan sát.

Một điểm khác biệt thứ tư là khó có thể đạt được nlme(một phần) hiệu ứng ngẫu nhiên chéo, trong khi đó không phải là vấn đề lme4.

Có lẽ bạn sẽ ổn nếu bạn gắn bó với lme4.


1
Với ngoại lệ có thể (như bạn đã chỉ ra) về việc có thể kết hợp tự tương quan thời gian trong nlme nhưng không phải lme4. Nếu tập dữ liệu đủ lớn và nếu dữ liệu có loại cấu trúc này, đó có thể là một lợi thế lớn của nlme.
Ben Bolker

22

Những người khác đã tóm tắt sự khác biệt rất tốt. Ấn tượng của tôi là lme4phù hợp hơn cho các tập dữ liệu được nhóm, đặc biệt là khi bạn cần sử dụng các hiệu ứng ngẫu nhiên chéo. Tuy nhiên, đối với các thiết kế đo lặp lại (bao gồm nhiều thiết kế theo chiều dọc), nlmelà công cụ vì chỉ nlmehỗ trợ xác định cấu trúc tương quan cho phần dư. Bạn làm điều đó bằng cách sử dụng correlationshoặc corđối số với một corStructđối tượng. Nó cũng cho phép bạn mô hình hóa tính không đồng nhất bằng cách sử dụng một varFuncđối tượng.


13

Thực tế, có một số gói trong R để phù hợp với các mô hình hiệu ứng hỗn hợp ngoài lme4nlme. Có một wiki đẹp được điều hành bởi nhóm lợi ích đặc biệt R dành cho các mô hình hỗn hợp, trong đó có Câu hỏi thường gặp rất hay và một trang so sánh các gói khác nhau .

Đối với ý kiến ​​của tôi về việc thực sự sử dụng lme4nlme: Tôi thấy lme4thường dễ sử dụng hơn do phần mở rộng trực tiếp của cú pháp công thức R cơ bản. (Nếu bạn cần làm việc với các mô hình phụ gia tổng quát, thì gamm4gói sẽ mở rộng cú pháp này thêm một bước nữa và do đó bạn có một đường cong học tập tốt đẹp.) Như những người khác đã đề cập, lme4có thể xử lý các mô hình tổng quát (các hàm liên kết khác và phân phối lỗi), trong khi nlmeViệc tập trung vào chức năng liên kết Gaussian cho phép nó thực hiện một số điều rất khó trong trường hợp chung (chỉ định cấu trúc hiệp phương sai và một số điều nhất định phụ thuộc vào mức độ tính toán tự do, như giá trị p, sau này tôi khuyến khích bạn di chuyển tránh xa!).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.