我有数据,我怀疑随着时间的推移遵循幂函数。它是从具有不同截距的几个单元中收集的。因此,我想做一个混合模型,将幂函数的参数作为固定效应,截距作为随机效应。我可以这样做lme4::nlmer吗?如果没有,我可以用其他方式吗?
用一个可重现的例子来说明,假设我有这个数据,D:
x = 1:100
y1 = 7 + 2 * x^0.4 + rnorm(100); plot(y1, main='y1') # unit 1
y2 = 4 + 2 * x^0.4 + rnorm(100); plot(y2, main='y2') # unit 2
y3 = 1 + 2 * x^0.4 + rnorm(100); plot(y3, main='y3') # unit 3
D = data.frame(y=c(y1, y2, y3), id=rep(c(1,2,3), each=100), time=rep(x, 3))
plot(y ~ time, D, main='all') # combined data

nls我可以将其建模为具有公共截距的函数的幂函数:
nls(y ~ k + a * time ^ b, D, start=c(a=1, b=1, k=5))
这给了我像 a=1.3(它是 2)、b=0.47(它是 0.4)和 k=5.4(它是 1、4 和 7)这样的估计值。我想做这样的事情:
nlmer(y ~ k + a * time ^ b + (1|id), D) # doesn't work of course
稍后我将添加更多随机效果。这只是一个最小的可重现示例。
