我想拟合一个非线性混合模型,然后在治疗组和对照组中测试参数之间的差异。
我正在使用lme4包中的nlmer。针对此问题,我使用Orange数据集作为测试数据。5棵树的周长随时间的推移而被测量。每棵树都表现出逻辑生长。在基本的例子中,我们把树作为随机效应。我已经扩展了数据,以便有一个治疗和控制组(治疗只是一个控制的副本,周长值加倍)。我的问题是,我想把“治疗”作为一个固定的效果,然后在治疗组和对照组中测试非线性模型参数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?我试过在配方中加入治疗和Asym,但我不认为这是正确的。我想要的是Asym在治疗和控制方面的总结,以及一种统计方法来检验它们之间的差异。
发布于 2019-09-04 09:50:21
由于您似乎对使用其他工具持开放态度,下面是一个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>正如您所看到的,这显示了对渐近线的显著治疗效果,而不是对其他参数的影响,正如预期的那样。
https://stackoverflow.com/questions/57785176
复制相似问题