我一直在使用 knots()
函数在 lme4
中进行分段混合效应增长曲线回归 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
如何理解公式 RHS 上的矩阵,我能否将矩阵“扩展”为常规向量列在数据框中,这样 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 矩阵预测器?
最佳答案
基于运行具有较小数据集的测试模型,看起来将矩阵扩展为五个虚拟变量确实按预期工作,R 和 Julia 产生相同的结果(但 Julia 运行 6 分钟,lme4 大约 1 分钟) 5% 的数据子集上的相同随机截距和斜率模型小时)。
关于r - 如何用 RHS 上的矩阵项理解/扩展 r 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565228/