声明:
首先,我尝试为可重现的示例创建模拟数据集,但每当我创建随机集或获取部分实际数据时,模型都不会收敛。在没有真实数据的情况下,我无法看到为可重复的示例提供必要材料的方法。如果认为有必要且有人愿意提供帮助,我可以发布真实数据。
我认为这篇文章正在解决类似的想法,但这些评论并没有解释如何对这种特殊的编码挑战进行“黑客攻击”。
Adding covariates to nlme model in R
概述:
利用来自多个地点的解释性abitoic变量(自变量)对无柄物种的百分比覆盖率(因变量)进行建模。
在其他人的帮助下,我使用R中的nlme包创建了以下逻辑增长模型。百分比封面依赖于四个模型参数。天数就是测量时间的天数。 MaxPop =每个给定站点的最大人口(覆盖百分比 - 介于0-100%之间)。 Days50 = MaxPop的50%所需的时间。 Hill =控制生长的滞后和通过拐点的斜率。 MaxPop,Days50和Hill中的每一个都由独立的非生物变量,温度,水加速度,盐度和pH(必要时居中)组成。
Global_Model <- nlme(PercentCover ~ I(100 *((inv.logit(exp(MaxPop) *Days^Hill/(exp(Days50)^Hill + Days^Hill))-0.5)*2)),
data = Data15,
fixed = list(MaxPop ~ I(Temp-14) + Accel + I(Sal-30) + I(pH-8), LogDays50 ~ I(Temp-14) + Accel + I(Sal-30) +I(pH-8), Hill ~ I(Temp-14) + Accel + I(Sal-30) + I(pH-8)),
random = MaxPop ~1|Site,
start = c(11, -1, -1925, 1.6, 0, 7.4, -0.2, -776, 0.6, 0, 3.9, -.004, 2009, -0.3, 0), control = nlmeControl(maxIter=100), verbose = T)
我从一组预定义的理论模型开始,但我开始建立一个全局模型,因为所有的非生物变量都是预选的,并且都有理论上包含在模型中的理由。希望这将降低全球模型过度拟合的风险。
使用MuMIn
包我尝试使用dredge(Global_Model)
在全局模型中运行所有嵌套模型,但得到“FUN中的错误(X [[i]],...):下标超出范围“
我不确定如何尝试这个,因为每个模型参数(MaxPop,Day50和Hill)都由相同的四个独立变量组成。我想运行一个挖泥机来测试IV内部和参数间的每个排列。
问题:
是否有可能在nlme中执行'挖泥般的'过程?
怎么会这样呢?
______
我非常感谢一些建议。
干杯!
答案 0 :(得分:0)
你需要写一个&#34;包装&#34;围绕nlme
的函数将线性公式(例如y ~ x1 + x2 + x3
)映射到三个nlme
组件:fixed
和random
(我假设您要保留相同的model
,然后将其提供给dredge
。它很可行,但很棘手。