如何根据后验样本计算HPD(最高后验密度(区间?我有四个参数,我从后验参数分布中生成1000个样本。现在如何在R软件中计算HPD。我使用了包代码,但我得到了一个错误,
HPDinterval(winbugsresult$sims.list,prob=0.05)
Error in UseMethod("HPDinterval") :
no applicable method for 'HPDinterval' applied to an object of class "list"
其中";winbugsresult"是一个包含后验样本的列表。
我还使用了一个向量,我得到了以下错误
HPDinterval(winbugsresult$sims.list$alpha ,prob=0.05)
Error in UseMethod("HPDinterval") :
no applicable method for 'HPDinterval' applied to an object of class "c('double', 'numeric')"
我只使用了一个来自正常的随机矢量,我再次出现错误
HPDinterval(rnorm(100))
Error in UseMethod("HPDinterval") :
no applicable method for 'HPDinterval' applied to an object of class "c('double', 'numeric')"
我不太确定winbugsresult$sims.list
的结构是什么(你可以编辑你的答案以包括str(winbugsresult$sims.list)
(,但用as.mcmc()
转换数字向量或矩阵会给你一个可以传递给HPDinterval的对象,例如
library(coda)
HPDinterval(as.mcmc(rnorm(1000)))
HPDinterval(as.mcmc(matrix(rnorm(1000),ncol=10))) # matrix