1

我正在尝试学习 lme4,并且我会预先承认,我的统计学术培训是 20 多年前在 SAS(北卡罗来纳州)的家中进行的传统 ANOVA 设计。我现在有大约 4-5 年的 R 经验,但主要是使用传统的一般线性模型,所有因素都被视为固定效应。

我现在想估计一个用于淡水贻贝实验的 von Bertalanffy 生长模型的参数。壳长每年对已知个体 (ID) 测量一次,为期 4 年,因此这是一个重复测量设计。最终,我想添加一个主要处理因素和一个裂区因素。但是,目前我无法运行简化模型。我正在使用的 R 代码是:

VBGF <- function(Linf, k, age, age.0) {
  Linf * (1-exp(-k*((age-age.0))))
}
VBGF <- deriv(L ~ VBGF, namevec=c("Lin", "k", "age.0"), function.arg=VBGF)
mod1 <- nlmer(L ~ VBGF(Linf,k,AGE,age.0) ~ (Linf+k+age.0|ID), 
              mussels,
              start=c(50,0.1,-11),
              verbose=TRUE)

我收到以下错误,并且我完全没有成功找到它的含义的参考。

Error: s > 0 is not TRUE

这可能是我忽略了一些简单的事情,所以我提前为我的无知道歉。

4

1 回答 1

2

导致函数错误的行nlmer

stopifnot(length(start$fixef) > 0, s > 0, inherits(data, 
    "data.frame"), nrow(data) > 1)

通过查看代码,我得到的印象s是列表中的名称数量start。在您的情况下,您提供了一个vector没有名称的名称,这可能会导致错误。

帮助页面说

start: a named list of starting values for the parameters in the
      model. (..)

所以他们对它必须有名字这一事实非常具体。在示例中,您将看到它们还为参数命名。

## nonlinear mixed models
(nm1 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym|Tree,
             Orange, start = c(Asym = 200, xmid = 725, scal = 350)))
于 2012-06-02T18:13:12.317 回答