如何理解/扩展RHS上带矩阵项的r公式

如何理解/扩展RHS上带矩阵项的r公式,r,matrix,julia,formula,R,Matrix,Julia,Formula,我一直在lme4中使用发布在的knots()函数创建节点,然后调用lmer进行分段混合效应增长曲线回归,如下所示: > df$knot<-knots(df$time,seq(1.5,3.5,.5) > lmer(outcome ~ predictor*knot + (1+knot|id), data=df) 为了提高速度,我想用Julia(通过JuliaCall)来拟合这些模型,但是Julia不像R那样喜欢矩阵RHS 那么,我的问题是:Rlm/lmer如何理解公式RHS上的

我一直在
lme4
中使用发布在的
knots()
函数创建节点,然后调用
lmer
进行分段混合效应增长曲线回归,如下所示:

> df$knot<-knots(df$time,seq(1.5,3.5,.5)

> lmer(outcome ~ predictor*knot + (1+knot|id), data=df)
为了提高速度,我想用Julia(通过JuliaCall)来拟合这些模型,但是Julia不像R那样喜欢矩阵RHS

那么,我的问题是:R
lm
/
lmer
如何理解公式RHS上的矩阵,我能否将矩阵“展开”为数据帧中的正则向量列,这样Julia就不会抱怨了

我试过:

> df$knot1<-df$knot[,1]

> ...

> df$knot5<-df$knot[,5]

是这样吗?R与RHS矩阵预测器有何关系?

基于使用较小数据集运行测试模型,将矩阵扩展为五个虚拟变量确实如预期的那样有效,R和Julia产生了相同的结果(但Julia在6分钟内运行,lme4在大约一小时内运行,在我的数据的5%子集上使用相同的随机截距和斜率模型)。

如果你从随机效应中移除结,我认为lmer会运行得非常快。
lmer(output~predictor*knot+(1 | id),data=df)
。请参见
vignette(“LMERF”)
另外,还要遵循这里的提示。这是真的,但我不会拟合增长模型。(或者至少不是我尝试的那种,随机坡度)你仍然可以在固定效果中使用随机截距和结,但无论如何,关键是通过此更改,模型应该运行得更快。谢谢。我仍然想了解R在做什么,所以我可以尝试“手动”执行。如果
fm
是运行
lmer
的结果,则
model.matrix(fm)
model.matrix(fm,“random”)
将为您提供模型矩阵。建议您运行简化模型和完整模型,并在5%子集上查看是否有任何值得的差异。
> df$knot1<-df$knot[,1]

> ...

> df$knot5<-df$knot[,5]
outcome ~ predictor*(knot1+knot2+knot3+knot4+knot5) + (1+knot1+knot2+knot3+knot4+knot5|id)