Я пытаюсь запустить байесовскую многомерную обобщенную линейную модель с OFT1
, MIS1
, wt
и g.rate
в качестве переменных ответа, grid
, collar
, sex
, fieldBirthDate
и trialnumber
в качестве переменных-предикторов, и sq_id
в качестве случайного эффекта.
Мои данные выглядят так:
sq_id sex grid trialnumber collar OFT1 MIS1 fieldBirthDate wt g.rate
22640 F KL 2 Y -2.1947851 0.08686934 -2.036220 2.04349949 0.202092846
22640 F KL 1 Y 0.7661517 2.65544077 -2.036220 -0.09300674 0.546493570
22641 F KL 1 Y 0.9689955 1.38944543 -2.036220 0.04942701 0.582793646
22653 F SU 1 Y -2.1524967 1.03831742 -1.665209 0.44824150 0.691384500
22657 M KL 1 N 1.0918323 -2.03883227 -1.788879 -0.40636099 0.008592439
22657 M KL 2 N 3.1173521 -2.34449199 -1.788879 2.44231398 0.249185968
И, доступно здесь (эта ссылка больше не активна с 22.06.19).Используемый пакет R был MCMCglmm
.
Я начинаю с того, что заявляю свой предыдущий:
#inverse whishart prior
prior.miw<-list(R=list(V=diag(4), nu=0.002),
G=list(G1=list(V=diag(4),
nu=0.002,
alpha.mu=c(0,0,0,0),
alpha.V=diag(4)*1000)))
Затем моя модель:
mod.1 <- MCMCglmm(
cbind(OFT1, MIS1, wt, g.rate) ~ (trait-1):grid + (trait-1):collar + (trait-1):sex + (trait-1):fieldBirthDate + (trait-1):trialnumber,
random = ~us(trait):sq_id,
rcov = ~us(trait):units, #allows for trait to have different residuals
family = c("gaussian", "gaussian", "gaussian", "gaussian"), #state response variables distributions
data=multi_data,
prior = prior.miw,
verbose = FALSE,
nitt=103000, #number of iterations
thin=100, #the interval at which the Markov chain is stored
burnin=3000) #number of iterations before samples are stored
Но затем я получаюследующие две ошибки (которые меняются каждый раз, когда я запускаю свой код):
G-структура 1 плохо подготовлена: используйте надлежащие априоры, если у вас их нет, или масштабируйте данные, если у вас есть
и
плохо обусловленный перекрестный продукт: не может сформировать коэффициент Холецкого
Я удостоверился, что правильно измерил свои переменные (среднее по центру и стандартизированное), и я пробовал другие приоры, такие как обратная гамма априор (это работает).Тем не менее, я хочу использовать обратный Whishart до.Если я изменю свой предыдущий код обратного изменения, удалив из него функции alpha.mu
и alpha.V
, например:
prior.miw<-list(R=list(V=diag(4), nu=0.002),
G=list(G1=list(V=diag(4),
nu=0.002)))
, запустится моя многомерная модель.Но я хотел бы сохранить alpha.mu
и alpha.V
в моем предыдущем.
У меня есть два вопроса:
Почему я получаю эти ошибки?(т. е. почему мой обратный whishart предшествовал, вызывая у меня эту проблему в том виде, в котором я ее написал в настоящее время?)это?
Любые предложения или идеи будут высоко оценены!