我正在尝试运行贝叶斯多元广义线性模型,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
而且,可用here。使用的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-structure 1病态:如果你还没有使用适当的先验,或者如果你有
重新缩放数据
和
病态的交叉产品:不能形成Cholesky因子
我确保正确地扩展我的变量(平均居中和标准化),并且我尝试过其他先验,例如反伽马先验(有效)。但是,我想先使用反向威尔特。如果我通过从中移除alpha.mu
和alpha.V
函数来修改我的反向whishart先前代码,如下所示:
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
保留在我的先前。
我有两个问题:
为什么我会收到这些错误? (也就是为什么我之前的逆向导致我这个问题,因为我目前正在编写它?)
其中包含alpha.mu
和alpha.V
函数的正确反沃尔特之前是什么?
非常感谢任何建议或想法!