我正在尝试学习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
我可能会忽略一些简单的事情,所以我提前为我的无知道歉。
答案 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)))