R,HPD(最高后验密度)区间基于后验样本,WinBUGS
R, HPD (Highest posterior density) interval based on samples from posterior, WinBUGS
如何计算后验样本的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
如何计算后验样本的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