r - R 中 nlme 模型起始值的长度——我怎么知道?

标签 r

我正在尝试在 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]))

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

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

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

最佳答案

您可以使用的一个技巧是使用相同的固定项来拟合 lm 并计算 coef 的数量。

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]))

关于r - R 中 nlme 模型起始值的长度——我怎么知道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977595/

相关文章:

r - 在 R 中迭代生成名称以存储绘图

r - 强制 roc 函数(R 中的 pROC 包)中的 "direction"参数输入究竟有什么作用?

r - 插入符号包自定义指标

r - 如何在ggplot中添加表达式到标签

r - 如何在 R 的循环中创建具有不同 y 变量的图?

r - 从 R 中的 HTML 片段中提取 URL

r - 访问 r 包 `gamm4` 生成的广义加法混合模型 (GAMM) 的 AIC

r - 将 ggrepel/geom_text_repel 的标签从 geom_vline() 和 geom_hline() 绘制的线移开

R Shiny - 连续后台任务

r - 提取按条件过滤的值列表