如何在R中保存Coda对象

时间:2015-02-17 04:24:47

标签: r save mcmc jags runjags

我不确定如何在R中保存尾声(mcmc.list)对象。其他人也问了类似的问题,但我发现给出的答案并不是特别清楚。理想情况下,我希望将coda对象保存为R.data文件或文本文件(例如,csv),以便我可以重新导入它并分析JAGS链而无需重新运行模型(大约需要30个)在我的电脑上分钟)。现在我的coda对象" coda.samples"看起来像这样:

str(coda.samples)
List of 3
 $ : mcmc [1:3334, 1:1094] 0.904 0.977 0.927 0.945 0.905 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3334] "2001" "2011" "2021" "2031" ...
  .. ..$ : chr [1:1094] "alpha[1,1]" "alpha[2,1]" "alpha[1,2]" "alpha[2,2]" ...
  ..- attr(*, "mcpar")= num [1:3] 2001 35331 10
 $ : mcmc [1:3334, 1:1094] 0.824 0.866 0.839 0.832 1.032 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3334] "2001" "2011" "2021" "2031" ...
  .. ..$ : chr [1:1094] "alpha[1,1]" "alpha[2,1]" "alpha[1,2]" "alpha[2,2]" ...
  ..- attr(*, "mcpar")= num [1:3] 2001 35331 10
 $ : mcmc [1:3334, 1:1094] 0.956 0.944 0.895 0.809 1.064 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3334] "2001" "2011" "2021" "2031" ...
  .. ..$ : chr [1:1094] "alpha[1,1]" "alpha[2,1]" "alpha[1,2]" "alpha[2,2]" ...
  ..- attr(*, "mcpar")= num [1:3] 2001 35331 10
 - attr(*, "class")= chr "mcmc.list"

如您所见,它是包含3334个1094参数估计值的三个矩阵的列表(即3个长度为3334的链)。我想存储这个尾声物体,这样我就可以把它召唤回R而不必每次都重新运行模型。我还想保留这样一个事实:有三个独特的链条。

1 个答案:

答案 0 :(得分:1)

这是我从OBJECT保存链时使用的脚本。将MCMCglmm替换为您的coda对象的名称(例如,FILEPATH中的模型名称),并将save(OBJECT, file= "FILEPATH") model = load("FILEPATH") 替换为合适的保存目标。

if

方便提示:我还使用elserunmod将模型包装在交换机中 - 这可以组合成一个有用的系统,可以运行并保存脚本,也可以加载以前的运行(设置) ynloaddate,并选择runmod = "y" loaddate = "2017-01-12" NITT = 130000 BURN = 30000 THIN = 100 # Model if(runmod=="n"){ model4.1 = MCMCglmm(cbind(BWT_F, BWT_M, TAR_F, TAR_M) ~ trait-1, random = ~us(trait):animal + us(trait):BYEAR + us(trait):MOTHER, rcov = ~us(trait):units, family = rep("gaussian", times = 4), pedigree = Ped, data = Data, burnin = BURN, nitt = NITT, thin = THIN, prior = prior4.1) save(model4.1, file=paste0("FILEPATH......",NITT,"_",Sys.Date(),".rda")) }else{ model41 = load(paste0("FILEPATH......",NITT,"_",loaddate,".rda")) } 以获取正确的文件。例如:

{{1}}