【问题标题】:Multivariate Linear Mixed Model in lme4lme4中的多元线性混合模型
【发布时间】:2011-12-11 11:42:27
【问题描述】:

我想知道如何用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)

我想知道如何用lme4 拟合多元线性混合模型。数据如下:

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

提前感谢您的时间和合作。

【问题讨论】:

  • 可以通过“融合”数据集(即用一个共同的“ID”变量将 Y1 和 Y2 分开观察)然后用 ID 作为随机效应拟合模型来做到这一点。现在没时间细说。您可能想在 r-sig-mixed-models 列表中提出这个问题。
  • @Ben Bolker:感谢您的评论。我在等待你的答复。谢谢
  • 我在rpubs.com/bbolker/3336提供了更多细节

标签: r lme4


【解决方案1】:

@John 上面的回答应该基本正确。您将一个虚拟变量(即因子变量Y)添加到模型中。这里有 3 个下标 i= 1...N 用于观察,j=1,...,4 用于块,h=1,2 用于依赖变量。但是您还需要将 1 级错误项强制为 0(或接近于零),我不确定 lme4 是否这样做。 Ben Bolker 可能会提供更多信息。 Goldstein (2011) 第 6 章和第 7 章对潜在多元模型进行了更多描述。

IE

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

所以:

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

【讨论】:

    【解决方案2】:

    lmer 和它的大兄弟 lme 本质上是“~ 的一个参数”。看一下车包;它不提供现成的重复测量支持,但您可以通过搜索 R 列表找到一些关于该主题的 cmets:

    John Fox on car package

    【讨论】:

      【解决方案3】:

      这有时可以在 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
      ...
      

      然后在您的线性混合模型中包含新变量 Y

      但是,对于真正的多元广义线性混合模型 (MGLMM),您可能需要 sabreR 包或类似的包。该软件包还附带一整本书,Multivariate Generalized Linear Mixed Models Using R。如果您有订阅机构的代理,您甚至可以从http://www.crcnetbase.com/isbn/9781439813270 免费下载它。我会向您推荐任何进一步的建议,因为这是一个很丰富的话题,而且我还是个新手。

      【讨论】:

      • 感谢您的回复。如果您提供更多指导以使这种模型适合 lme4 或 nlme,我将不胜感激。谢谢
      • 您有基本的语法,但确定要拟合的具体模型完全取决于您的数据和实验的结构。这可能不是正确的论坛。如果您不熟悉混合模型,Mixed Effects Models in S and S-Plusnlme 软件包附带的一本书,可能是一个不错的起点。
      猜你喜欢
      • 1970-01-01
      • 2019-07-02
      • 2011-12-15
      • 2018-07-26
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 2022-08-22
      • 2012-03-07
      相关资源
      最近更新 更多