R

时间:2018-06-08 17:26:18

标签: r bayesian mcmc multivariate-testing

我正在尝试运行贝叶斯多元广义线性模型,OFT1MIS1wtg.rate作为响应变量gridcollarsexfieldBirthDatetrialnumber作为预测变量,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.mualpha.V函数来修改我的反向whishart先前代码,如下所示:

prior.miw<-list(R=list(V=diag(4), nu=0.002), 
            G=list(G1=list(V=diag(4), 
            nu=0.002))) 

我的多变量模型运行。但是,我希望alpha.mualpha.V保留在我的先前。

我有两个问题:

  1. 为什么我会收到这些错误? (也就是为什么我之前的逆向导致我这个问题,因为我目前正在编写它?)

  2. 其中包含alpha.mualpha.V函数的正确反沃尔特之前是什么?

  3. 非常感谢任何建议或想法!

0 个答案:

没有答案