1

我正在尝试在 R 中拟合非线性混合效应模型。我正在逐步执行此操作,以便更轻松地找到模型的起始值。它看起来像这样:

fit.nlme.10<-nlme(fit.beta.10, random=pdDiag(w.max ~1))

cfs <- fixef(fit.nlme.10)
fit.nlme2 <- update(fit.nlme.10, fixed = list(w.max ~ trt, t.e + t.m ~ 1),
                start = c(cfs[1], rep(0,2), cfs[2:3]))

cfsT <- fixef(fit.nlme2)


fit.nlme3 <- update(fit.nlme.10, fixed = list(w.max ~ ground, t.e + t.m ~ 1),
             start = c(cfs[1], rep(0,1), cfs[2:3]))

cfsG <- fixef(fit.nlme3)

fit.nlme4 <- update(fit.nlme.10, fixed = list(w.max ~ trt + ground, t.e + t.m ~ 1),
                    start = c(cfsT2[1:3], cfsG2[1:2], cfs[2:3]))

这个想法是随着模型变得更加复杂,使用先前拟合的系数作为起始值。我以前成功地做到了这一点,但从未完全理解它。我经常收到错误消息“固定组件的起始值不是正确的长度”。我花了很多时间玩弄长度,直到不再出现错误消息。

谁能向我解释我如何从一开始就知道正确的长度是多少?

很抱歉没有附加数据,但要运行它,您还需要一些冗长的自定义函数。

4

1 回答 1

2

您可以使用的一个技巧是lm用相同的固定术语拟合 a 并计算 coefs 的数量。

temp<-length(coef(lm(w.max ~ trt + ground,data)))
fit.nlme4 <- update(fit.nlme.10, fixed = list(w.max ~ trt + ground, t.e + t.m ~ 1),
                start = c(cfs[1], rep(0,temp-1), cfs[2:3]))
于 2013-04-29T07:48:08.103 回答