【问题标题】:Treatment as a fixed effect in a non-linear mixed model在非线性混合模型中作为固定效应处理
【发布时间】:2019-09-04 09:12:21
【问题描述】:

我想拟合一个非线性混合模型,然后测试治疗组和对照组参数之间的差异。

我正在使用 lme4 包中的 nlmer。 我使用 Oranges 数据集作为这个问题的测试数据。 随着时间的推移测量 5 棵树的周长。每棵树都表现出逻辑增长。在基本示例中,我们将 Tree 作为随机效果。 我已经扩展了数据,以便有一个治疗组和对照组(治疗只是控制的副本,周长值加倍)。 我的问题是,我想将“治疗”作为固定效应,然后测试治疗组和对照组中非线性模型参数 Asym 之间的差异。

   library(lme4)

   #Toy data based on Orange (lme4)
   # Create a copy of Orange data, double the circumference values, make new labels for trees (no. 6-10) and label all as treatment (1)
   Orange.with.treatment<-Orange
   Orange.with.treatment$circumference<-Orange.with.treatment$circumference*2
   Orange.with.treatment$Tree <- as.factor(as.numeric(Orange.with.treatment$Tree) + 5)
   Orange.with.treatment$treat<- as.factor(rep(1,length(Orange$Tree)))

   # Create a copy of Orange data and label all as control (1)
   Orange.control<-Orange
   Orange.control$treat<- as.factor(rep(0,length(Orange$Tree)))

   # combine into one dataframe
   Orange.full<-(rbind(Orange.control,Orange.with.treatment))


   # a nlmer fit not considering treatment as a factor
   startvec <- c(Asym = 200, xmid = 725, scal = 350)
   (nm1 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym|Tree,
                Orange.full, start = startvec))

   # a nlmer fit considering treatment as a fixed factor?
   startvec <- c(Asym = 200, xmid = 725, scal = 350)
   (nm2 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym+treat|Tree,
                Orange.full, start = startvec))

   # test differences in parameters between treat and control?

我曾尝试在公式中将 Treat 与 Asym 一起添加,但我不认为这是正确的。 我想要的是 Asym 在治疗和控制方面的总结,以及一种统计测试它们之间差异的方法。

【问题讨论】:

  • 我会使用nlme。类似nlme(circumference ~ SSlogis(age, Asym, xmid, scal), data = Orange.full, fixed = Asym + xmid + scal ~ treat, random = Asym + xmid + scal ~ 1 | Tree, start = c(200, 200, 725, 0, 350, 0), control = nlmeControl(msMaxIter = 1000))
  • summary 将为您提供治疗差异的 p 值。
  • 太棒了,谢谢罗兰!

标签: r mixed-models


【解决方案1】:

由于您似乎愿意使用其他工具,这里有一个nlme 解决方案:

library(nlme)
mod <- nlme(circumference ~ SSlogis(age, Asym, xmid, scal), data = Orange.full,
    fixed = Asym + xmid + scal ~ treat, random = Asym + xmid + scal ~ 1 | Tree,
    start = c(200, 200, 725, 0, 350, 0), control = nlmeControl(msMaxIter = 1000))
summary(mod)

#Nonlinear mixed-effects model fit by maximum likelihood
#  Model: circumference ~ SSlogis(age, Asym, xmid, scal) 
# Data: Orange.full 
#       AIC      BIC    logLik
#  608.9452 638.1756 -291.4726
#
#Random effects:
# Formula: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
# Level: Tree
# Structure: General positive-definite, Log-Cholesky parametrization
#                 StdDev   Corr         
#Asym.(Intercept) 43.23426 As.(I) xm.(I)
#xmid.(Intercept) 38.35359 -0.031       
#scal.(Intercept) 32.49873 -0.968  0.279
#Residual         11.27260              
#
#Fixed effects: Asym + xmid + scal ~ treat 
#                    Value Std.Error DF   t-value p-value
#Asym.(Intercept) 191.2135  22.30629 55  8.572177  0.0000
#Asym.treat1      193.0409  31.56922 55  6.114847  0.0000
#xmid.(Intercept) 722.4272  53.37976 55 13.533729  0.0000
#xmid.treat1        5.0466  62.02158 55  0.081368  0.9354
#scal.(Intercept) 349.4497  41.68009 55  8.384092  0.0000
#scal.treat1        7.3181  48.41709 55  0.151146  0.8804
#
#<snip>

如您所见,这显示了对渐近线的显着处理效果,但对其他参数却没有,正如预期的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-03
    • 2015-05-26
    • 2022-11-27
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多