Исправить компоненты дисперсии в mmer2 Соммера? - PullRequest
0 голосов
/ 14 ноября 2018

При установке модели с mmer2() из пакета sommer - возможно ли зафиксировать отклонения компонентов до определенного значения, аналогичного тому, что мы можем сделать например с Оператор PARMS в SAS или аргументы G.param и R.param в ASReml-R v3 ?

Я особенно заинтересован в исправлении отдельных компонентов независимо от того, включены ли ониG-сторона или R-сторона моей смешанной модели.

1 Ответ

0 голосов
/ 14 ноября 2018

Если у вас есть sommer> = 3.7, форсировать определенные компоненты дисперсии или ковариации можно, используя аргументы Gt (начальные значения) и Gtc (сокращения) из функции vs (), которая используется для указания модели дисперсии для случайного эффекта,

Например, предположим, что вы подходите к следующей многомерной смешанной модели для двух признаков:

library(sommer)
data(DT_cpdata)
#### create the variance-covariance matrix for id levels
A <- A.mat(GT) # additive relationship matrix
D <- D.mat(GT) # additive relationship matrix
#### look at the data and fit the model
DT$idd <- DT$id
head(DT)
ans.m <- mmer(cbind(Yield,color)~1,
               random=~ vs(id, Gu=A)
               + vs(Rowf,Gtc=diag(2)),
               rcov=~ vs(units),
               data=DT)

В этой модели есть 2 случайных эффекта (id и Rowf) и остаточный член для юнитов.По умолчанию используется неструктурированная модель отклонений (т. Е. Единиц и идентификаторов), но вы можете увидеть, как для Rowf аргумент Gtc является матрицей ограничений, которая создает диагональную модель для Rowf:

> diag(2)
     [,1] [,2]
[1,]    1    0
[2,]    0    1 

, которая следует правилам:0: не оценивать 1: оценивать и ограничивать, чтобы быть положительным 2: оценивать и не ограничивать 3: фиксированный компонент дисперсии-ковариации, представленный в Gt

После этого легко увидеть, что если вы хотите форсировать определенные компоненты дисперсииВы должны предоставить начальные значения (аргумент Gt) и указать матрицу ограничений со значениями 3 (такая функция может быть создана функцией fixm ()).

ans.mf <- mmer(cbind(Yield,color)~1,
              random=~ vs(id, Gu=A, Gt=ans.m$sigma_scaled$id,Gtc=fixm(2))
              + vs(Rowf,Gt=ans.m$sigma_scaled$Rowf, Gtc=fixm(2))
              + vs(idd, Gu=D),
              rcov=~ vs(units, Gt=ans.m$sigma_scaled$units, Gtc=fixm(2)),
              data=DT)

ans.m$sigma
ans.mf$sigma

Если вы проверите результаты, вы увидите, что у вас естьвынудил компоненты дисперсии для id, Rowf и единиц и правильно оценил компоненты для idd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...