对于nlmer模型,我可能做错了“错误:s> 0不为TRUE”?

时间:2012-04-18 13:40:50

标签: r

我正在尝试学习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

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

1 个答案:

答案 0 :(得分: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)))