我有一个因变量 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))
但是,由于我的数据已群集,因此我希望使用变量网站在网站级别添加随机效果。我试图找出如何指定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'
非常感谢任何帮助。