简体   繁体   English

lme4中的多元线性混合模型

[英]Multivariate Linear Mixed Model in lme4

I wonder how to fit multivariate linear mixed model with lme4 . 我想知道如何使用lme4拟合多元线性混合模型。 I fitted univariate linear mixed models with the following code: 我使用以下代码拟合单变量线性混合模型:

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)

I'd like to know how to fit multivariate linear mixed model with lme4 . 我想知道如何使用lme4拟合多元线性混合模型。 The data is below: 数据如下:

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

Thank in advance for your time and cooperation. 提前感谢您的时间和合作。

This can sometimes be faked satisfactorily in nlme/lme4 by simply reformatting your data like 通过简单地重新格式化数据,有时可以在nlme / lme4中令人满意地伪造

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
...

and then including the new variable Y in your linear mixed model. 然后在线性混合模型中包含新变量Y

However, for true Multivariate Generalized Linear Mixed Models (MGLMM), you will probably need the sabreR package or similar. 但是,对于真正的多元广义线性混合模型(MGLMM),您可能需要sabreR包或类似的。 There is also an entire book to accompany the package, Multivariate Generalized Linear Mixed Models Using R . 这个包附带了一本完整的书, 使用R的多元广义线性混合模型 If you have a proxy to a subscribing institution, you might even be able to download it for free from http://www.crcnetbase.com/isbn/9781439813270 . 如果您有订阅机构的代理,您甚至可以从http://www.crcnetbase.com/isbn/9781439813270免费下载。 I would refer you there for any further advice, as this is a meaty topic and I am very much a novice. 我会在那里向你推荐任何进一步的建议,因为这是一个多肉的主题,我非常新手。

lmer and its elder sibling lme are inherently "one parameter left of ~". lmer和它的兄弟姐妹lme本身就是“一个参数左边的〜”。 Have a look at the car packages; 看看汽车包装; it offers no off-the shelf repeated measurement support, but you will find a few comments on the subject by searching the R list: 它没有提供现成的重复测量支持,但您可以通过搜索R列表找到关于该主题的一些评论:

John Fox on car package 约翰福克斯在汽车包装上

@John's answer above should be largely right. @ John在上面的回答应该是非常正确的。 You add a dummy variable (ie--the factor variable Y ) to the model. 您将虚拟变量(即 - 因子变量Y )添加到模型中。 Here you have 3 subscripts i= 1...N for observations, j=1,...,4 for blocks, and h=1,2 for the dependent var. 这里有3个下标i= 1...N表示观察, j=1,...,4表示块, h=1,2表示因变量。 But you also need to force the level 1 error term to 0 (or to near zero), which I'm not sure lme4 does. 但是你还需要将1级错误项强制为0(或接近零),我不确定lme4 Ben Bolker might provide more information. Ben Bolker可能会提供更多信息。 This is described more in Goldstein (2011) Chap 6 and Chap 7 for latent multivariate models. 对于潜在的多变量模型,Goldstein(2011)第6章和第7章更详细地描述了这一点。

IE IE

Y_hij = \\beta_{01} z_{1ij} + \\beta_{02} z_{2ij} + \\beta X + u_{1j} z_{1ij} + u_{2j} z_{2ij} Y_hij = \\ beta_ {01} z_ {1ij} + \\ beta_ {02} z_ {2ij} + \\ beta X + u_ {1j} z_ {1ij} + u_ {2j} z_ {2ij}

So: 所以:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM