挖掘具有多个参数的nlme模型

时间:2016-01-22 14:49:14

标签: r nonlinear-functions nlme

声明:

  • 首先,我尝试为可重现的示例创建模拟数据集,但每当我创建随机集或获取部分实际数据时,模型都不会收敛。在没有真实数据的情况下,我无法看到为可重复的示例提供必要材料的方法。如果认为有必要且有人愿意提供帮助,我可以发布真实数据。

  • 我认为这篇文章正在解决类似的想法,但这些评论并没有解释如何对这种特殊的编码挑战进行“黑客攻击”。

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中执行'挖泥般的'过程?

怎么会这样呢?

______

我非常感谢一些建议。

干杯!

1 个答案:

答案 0 :(得分:0)

你需要写一个&#34;包装&#34;围绕nlme的函数将线性公式(例如y ~ x1 + x2 + x3)映射到三个nlme组件:fixedrandom(我假设您要保留相同的model,然后将其提供给dredge。它很可行,但很棘手。