Как понять / расширить формулу r с матричным термином по RHS - PullRequest
0 голосов
/ 07 февраля 2019

Я выполнял кусочную регрессию кривой смешанных эффектов в 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?

1 Ответ

0 голосов
/ 07 февраля 2019

Исходя из запущенных тестовых моделей с меньшими наборами данных, кажется, что расширение матрицы на пять фиктивных переменных работает, как и ожидалось, с R и Джулией, которые дают одинаковые результаты (но с Джулией, работающей за 6 минут, и с lme4 примерно зачас для того же случайного перехвата и модели наклона на подмножестве моих данных в 5%).

...