Я подгоняю полупараметрическую модель, используя функцию lme в пакете nlme.У меня проблемы с переводом на lmer (nlme4).
Основная проблема с моим кодом заключается в том, что я полагаюсь на pdIdent и pdSymm в спецификации моих случайных эффектов.Я не могу найти, как перевести это в код для lmer.
Мой код nlme ниже.Z.spline представляет собой основную матрицу сплайна 25 x 25, а индикатор - это столбец 1. Мои данные (dat2
) представлены в длинном формате, где у каждого человека есть 25 наблюдений.frac
- это переменная в диапазоне от 1 до 5, которая упорядочивает наблюдения.rs445925
- это SNP, факторная переменная, принимающая 3 значения.density
непрерывно.
Z.spline<-outer(frac,knots,"-")
Z.spline<-Z.spline*(Z.spline>0)
dat2$Z.spline <- do.call(rbind, replicate(n, Z.spline, simplify=FALSE))
fit <-lme(density~ frac * rs445925,
random=list(indic=pdIdent(~Z.spline-1),FID=pdSymm(~1)),
data=dat2,method="ML",control=lmeControl(returnObject=TRUE))
Я думаю, что первая часть модели будет переведена в lmer-код следующим образом:
fit2 <- lmer(density ~ frac * rs445925 + (1|FID) + ....
Часть pdIdent модели, которая содержит основу сплайна, дает мне головные боли,Я не могу перевести его в код lmer.