Если sommer> = 3.7, то для настройки модели rrBLUP в многовариантной настройке достаточно просто, DT_cpdata имеет хороший пример
librayr(sommer)
data(DT_cpdata)
mix.rrblup <- mmer(fixed=cbind(color,Yield)~1,
random=~vs(list(GT),Gtc=unsm(2)) + vs(Rowf,Gtc=diag(2))
rcov=~vs(units,Gtc=unsm(2)),
data=DT)
summary(mix.rrblup)
A <- A.mat(GT)
mix.gblup <- mmer(fixed=cbind(color,Yield)~1,
random=~vs(id,Gu=A, Gtc=unsm(2)) + vs(Rowf,Gtc=diag(2))
rcov=~vs(units,Gtc=unsm(2)),
data=DT)
summary(mix.gblup)
функция vs () создает дисперсионную структуру для данного случайного эффекта, а ковариационная структура для одномерного / многомерного параметра предоставляется в аргументе Gtc в виде матрицы, в которой можно указать диагональную, неструктурированную или настраиваемую структуру , Когда пользователь хочет предоставить настраиваемую матрицу в качестве случайного эффекта, такую как маркерная матрица GT, для выполнения rrBLUP, она должна быть предоставлена в list (), чтобы внутренне помочь sommer поместить ее в правильный формат, тогда как в версии GBLUP идентификатор случайного эффекта, который имеет метки для отдельных лиц, может иметь ковариационную матрицу, указанную в аргументе Gu.