2011-10-20 34 views
12

Tôi tự hỏi làm thế nào để phù hợp với mô hình hỗn hợp tuyến tính đa biến với lme4. Tôi lắp đơn biến mô hình hỗn hợp tuyến tính với đoạn mã sau:Mô hình hỗn hợp tuyến tính đa biến trong lme4

library(lme4) 
lmer.m1 <- lmer(Y1~A*B+(1|Block)+(1|Block:A), data=Data) 
summary(lmer.m1) 
anova(lmer.m1) 

lmer.m2 <- lmer(Y2~A*B+(1|Block)+(1|Block:A), data=Data) 
summary(lmer.m2) 
anova(lmer.m2) 

Tôi muốn biết làm thế nào để phù hợp với đa biến mô hình hỗn hợp tuyến tính với lme4. Dữ liệu bên dưới:

Block A B Y1 Y2 
1 1 1 135.8 121.6 
1 1 2 149.4 142.5 
1 1 3 155.4 145.0 
1 2 1 105.9 106.6 
1 2 2 112.9 119.2 
1 2 3 121.6 126.7 
2 1 1 121.9 133.5 
2 1 2 136.5 146.1 
2 1 3 145.8 154.0 
2 2 1 102.1 116.0 
2 2 2 112.0 121.3 
2 2 3 114.6 137.3 
3 1 1 133.4 132.4 
3 1 2 139.1 141.8 
3 1 3 157.3 156.1 
3 2 1 101.2 89.0 
3 2 2 109.8 104.6 
3 2 3 111.0 107.7 
4 1 1 124.9 133.4 
4 1 2 140.3 147.7 
4 1 3 147.1 157.7 
4 2 1 110.5 99.1 
4 2 2 117.7 100.9 
4 2 3 129.5 116.2 

Cảm ơn trước về thời gian và hợp tác của bạn.

+0

có thể làm điều này bằng cách 'tan chảy' tập dữ liệu (tức là làm cho Y1 và Y2 quan sát riêng biệt với một biến 'ID' phổ biến) và sau đó lắp một mô hình với ID là một hiệu ứng ngẫu nhiên. Không có thời gian để xây dựng ngay bây giờ. Bạn có thể muốn hỏi điều này trong danh sách các mô hình r-sig-hỗn hợp. –

+0

@Ben Bolker: Cảm ơn nhận xét của bạn. Tôi đang chờ trả lời của bạn. Cảm ơn – MYaseen208

+2

Tôi đã đưa ra một số chi tiết khác tại http://rpubs.com/bbolker/3336 –

Trả lời

11

này đôi khi có thể được làm giả một cách thỏa đáng trong nlme/lme4 bằng cách đơn giản dạng của bạn dữ liệu như

require(reshape) 
Data = melt(data, id.vars=1:3, variable_name='Y') 
Data$Y = factor(gsub('Y(.+)', '\\1', Data$Y)) 
> Data 
    Block A B Y value 
1  1 1 1 1 135.8 
2  1 1 2 1 149.4 
3  1 1 3 1 155.4 
4  1 2 1 1 105.9 
5  1 2 2 1 112.9 
6  1 2 3 1 121.6 
... 

và sau đó bao gồm các biến mới Y trong mô hình hỗn hợp tuyến tính của bạn.

Tuy nhiên, đối với mô hình hỗn hợp đa tuyến tính đa biến thực (MGLMM), có thể bạn sẽ cần gói sabreR hoặc tương tự. Ngoài ra còn có toàn bộ cuốn sách để đi kèm với gói, Mô hình hỗn hợp tuyến tính đa biến đa biến sử dụng R. Nếu bạn có proxy cho một tổ chức đăng ký, thậm chí bạn có thể tải xuống miễn phí từ http://www.crcnetbase.com/isbn/9781439813270. Tôi sẽ giới thiệu bạn ở đó để được tư vấn thêm, vì đây là một chủ đề thịt và tôi rất nhiều người mới.

+0

Cảm ơn bạn đã trả lời. Tôi đánh giá cao nếu bạn cung cấp thêm hướng dẫn để phù hợp với loại mô hình này với lme4 hoặc nlme. Cảm ơn – MYaseen208

+0

Bạn có cú pháp cơ bản, nhưng việc xác định mô hình cụ thể nào phù hợp sẽ phụ thuộc hoàn toàn vào dữ liệu của bạn và cấu trúc thử nghiệm của bạn. Đây có lẽ không phải là diễn đàn thích hợp cho điều đó.Nếu bạn không quen với các mô hình hỗn hợp, * Các mô hình hiệu ứng hỗn hợp trong S và S-Plus * là cuốn sách đi kèm với gói 'nlme', và có thể là một nơi tốt để bắt đầu. –

5

lmer và lùn anh chị em của nó vốn là "một tham số bên trái của ~". Hãy xem các gói xe; nó cung cấp không off-kệ lặp đi lặp lại hỗ trợ đo lường, nhưng bạn sẽ tìm thấy một vài ý kiến ​​về đề tài này bằng cách tìm kiếm danh sách R:

John Fox on car package

+0

Cảm ơn bạn đã trả lời. Bạn có thể cung cấp thêm chi tiết không? Cảm ơn bạn – MYaseen208

1

@ Câu trả lời của John ở trên phần lớn là đúng. Bạn thêm một biến giả (ví dụ - biến yếu tố Y) vào mô hình. Tại đây, bạn có 3 đăng ký i= 1...N để quan sát, j=1,...,4 cho các khối và h=1,2 cho biến phụ thuộc. Nhưng bạn cũng cần phải ép buộc thuật ngữ lỗi cấp 1 thành 0 (hoặc gần bằng 0), điều mà tôi không chắc chắn là lme4. Ben Bolker có thể cung cấp thêm thông tin. Điều này được mô tả nhiều hơn trong Goldstein (2011) Chap 6 và Chap 7 cho các mô hình đa biến tiềm ẩn.

IE

Y_hij = \ beta_ {01} Z_ {1ij} + \ beta_ {02} Z_ {2ij} + \ beta X + u_ {1J} Z_ {1ij} + u_ {2J} Z_ { 2ij}

Vì vậy:

require(reshape2) 
Data = melt(data, id.vars=1:3, variable_name='Y') 
Data$Y = factor(gsub('Y(.+)', '\\1', Data$Y)) 

m1 <- lmer(value ~ Y + A*B + (1|Block) + (1|Block*A), data= Data) 
# not sure how to set the level 1 variance to 0, @BenBolker 
# also unclear to me if you're requesting Y*A*B instead of Y + A*B 
Các vấn đề liên quan