Я выполнял кусочную регрессию кривой смешанных эффектов в 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" ...
Для скорости я бы хотел приспособить эти модели, используя вместо этого Джулию (через JuliaCall), но Джулия не получает матрицу RHS, как это делает R.
Итак, мой вопрос: как R lm
/ lmer
понимает матрицу RHS формулы и можно ли вместо этого "развернуть" матрицу в столбцы регулярных векторов во фрейме данных, чтобы Юлияне будете жаловаться?
Я пытался:
> 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?