我一直在使用lme4
中的knots()
函数进行分段混合效应生长曲线回归,该函数发布在https://stats.stackexchange.com/questions/13361/fitting-piecewise-linear-curves-with-lmer上用于创建节点,然后像这样调用lmer
:
> df$knot<-knots(df$time,seq(1.5,3.5,.5)
> lmer(outcome ~ predictor*knot + (1+knot|id), data=df)
这很好。 str(df$knot)
显示它是一个矩阵:
num [1:1492895, 1:5] 0 0 0 0 0 0 0 0 0 0 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "1.5" "2" "2.5" "3" ...
为了提高速度,我想使用Julia(通过JuliaCall)来拟合这些模型,但是Julia不能像R一样理解矩阵RHS。
所以我的问题是:R的lm
/lmer
如何理解公式右侧的矩阵,我是否可以将矩阵“展开”成数据框中的常规向量列,以便Julia不会抱怨?
我尝试过:
> df$knot1<-df$knot[,1]
> ...
> df$knot5<-df$knot[,5]
然后使用公式
outcome ~ predictor*(knot1+knot2+knot3+knot4+knot5) + (1+knot1+knot2+knot3+knot4+knot5|id)
这是正确的吗?R对RHS矩阵预测器进行了什么处理?
lmer(outcome ~ predictor*knot + (1|id), data=df)
。请参阅vignette("lmerperf")
并遵循其中的提示。 - G. Grothendieckfm
是运行lmer
的结果,则model.matrix(fm)
和model.matrix(fm, "random")
将为您提供模型矩阵。 - G. Grothendieck