我有一个因变量w,自变量x代表时间,它由变量site聚类。此外,我有 3 个时间段的指标变量:i1, i2, i3,它们对应于时间轴上的三个不同时间段(由 t1 和 t2 分隔)。由于我想要一个整体拟合,它评估三个时间段内的趋势,我试图使用线性模型拟合的斜率估计来拟合一个非线性函数(定义为L3 ),如下所示:
L3<-function(x,alpha1,beta1,beta2,beta3) {
brk = c(t1,t2)
alpha2 <- alpha1 + beta1*brk[1]-beta2*brk[1]
alpha3 = alpha2 + beta2 * brk[2] - beta3*brk[2]
lebrk <- (x < brk[1])
gebrk <- (x > brk[2])
mdbrk <- (x > brk[1] & x < brk[2])
result <- rep(0,length(x))
result[lebrk] <- alpha1 + beta1*x[lebrk]
result[mdbrk] <- alpha2 + beta2*x[mdbrk]
result[gebrk] <- alpha3 + beta3*x[gebrk]
result
}
fit0 = lm(w ~ x + I(i2+i3)+I(x*(i2+i3))+ I(i3)+I(x*i3), data = wr_tx1)
summary(fit0)
alpha1 = fit0$coef[1]
beta1 = fit0$coef[2]
beta2 = fit0$coef[2] + fit0$coef[4]
beta3 = fit0$coef[2] + fit0$coef[4] + fit0$coef[6]
fit1 <- nls(w ~ L3(x = x, alpha1, beta1, beta2, beta3)
, data = wr_tx1
, start = list(alpha1 = alpha1, beta1 = beta1, beta2 = beta2, beta3 = beta3)
, control=nls.control(maxiter=100))
但是,由于我的数据是聚类的,因此我想使用变量site在站点级别包含随机效应。我试图弄清楚如何指定 NLME 函数来执行此操作,但它似乎需要一个固定效果参数,即使我现在不关心任何固定效果。或者,我可以为每个站点所在的治疗组包含一个固定效应变量(称为tx的变量),但在这种情况下如何指定 NLME 函数也不清楚。
为了尝试合并固定效果,我尝试了以下方法,但出现错误:
wr$tx = as.factor(wr$tx)
fit2 = nlme(w ~ L3(x = x, alpha1, beta1, beta2, beta3)
, random = alpha1 + beta1 + beta2 + beta3 ~ 1 | site
, fixed = tx ~ 1
, data = wr
, start = list(alpha1 = alpha1, beta1 = beta1, beta2 = beta2, beta3 = beta3))
Error in nlme.formula(w ~ L3(x = x, alpha1, beta1, beta2, beta3), random = alpha1
'start' must have a component called 'fixed'
任何帮助是极大的赞赏。