#r #nlme
Вопрос:
Я пытаюсь указать заблокированную матрицу дисперсии-ковариации для случайных эффектов нелинейной модели смешанных эффектов с использованием пакета medrc (который использует nlme для оценки модели). Я использую лог-логистическую функцию с 3 параметрами
f(x) = frac{d}{1 exp(b(log(x)-log(e)))}
Я включаю переменную индикатора, основанную на том, исходят ли мои данные от людей (H) или крыс (R). Я ищу, чтобы указать заблокированную матрицу дисперсии-ковариации для случайных эффектов, где ковариации оцениваются для отклонений от диагоналей параметров функций внутри одного и того же вида, но не между видами. Изображение матрицы находится здесь. Я попытался выполнить это в пакете medrc, используя следующее уравнение, которое определяет заблокированную матрицу vcov с помощью функции «pdBlocked».:
M3b <- medrm(inhibition ~ concentration, curveid=b d e ~ species, data=OP,
random= list(subject=pdBlocked(list(b~species, d~species, e~species))),
fct=LL.3(), control=c(drmc(method="CG"), nlmeControl(msMaxIter = 150)))
Однако это приводит почти к противоположному тому, что я предполагал, обеспечивая ковариации внутри типа параметра, но между видами (что бессмысленно, учитывая, что ни один субъект не может быть одновременно человеком и крысой).
> M3b$fit$modelStruct$reStruct$subject
b.(Intercept) b.speciesRat d.(Intercept) d.speciesRat e.(Intercept) e.speciesRat
b.(Intercept) 1502.382 -1507.117 0.0000 0.0000 0.000000000 0.000000000
b.speciesRat -1507.117 1511.867 0.0000 0.0000 0.000000000 0.000000000
d.(Intercept) 0.000 0.000 218.6504 -194.7073 0.000000000 0.000000000
d.speciesRat 0.000 0.000 -194.7073 173.6319 0.000000000 0.000000000
e.(Intercept) 0.000 0.000 0.0000 0.0000 0.006579729 -0.006578661
e.speciesRat 0.000 0.000 0.0000 0.0000 -0.006578661 0.006577594
Есть какие-либо рекомендации о том, как это исправить, в идеале используя одну из существующих функций матрицы pd?