Задание матрицы дисперсии-ковариации для случайных эффектов для medrc или nlme

#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?