我在看一篇关于贝叶斯线性回归(MHadaptive)的优秀帖子
给出后置可信区间的输出
BCI(mcmc_r)
# 0.025 0.975
# slope -5.3345970 6.841016
# intercept 0.4216079 1.690075
# epsilon 3.8863393 6.660037
我现在使用什么函数来构建具有这些参数的置信区间的模型?
我在看一篇关于贝叶斯线性回归(MHadaptive)的优秀帖子
给出后置可信区间的输出
BCI(mcmc_r)
# 0.025 0.975
# slope -5.3345970 6.841016
# intercept 0.4216079 1.690075
# epsilon 3.8863393 6.660037
我现在使用什么函数来构建具有这些参数的置信区间的模型?
为什么不使用从 MCMC 获得的分布来预测y
任意点的分布x
?在您使用的示例中,以下是相关部分,其中 eggmass = y 和 length = x
##@ 3.1 @##
## Function to compute predictions from the posterior
## distribution of the salmon regression model
predict_eggmass<-function(pars,length)
{
a <- pars[, 1] #intercept
b <- pars[, 2] #slope
sigma <- pars[, 3] #error
pred_mass <- a + b * length
pred_mass <- rnorm(length(a), pred_mass, sigma)
return(pred_mass)
}
### -- ###
##@ 3.2 @##
## generate prediction
pred_length <- 80 # predict for an 80cm individual
pred <- predict_eggmass(mcmc_salmon$trace, length=pred_length)
## Plot prediction distribution
hist(pred, breaks=30, main='', probability=TRUE)
## What is the 95% BCI of the prediction?
pred_BCI <- quantile(pred, p=c(0.025, 0.975))
2.5% 97.5%
33.61029 43.16795
我认为您在评论中提到的分布可在此处获得pred
,置信区间为pred_BCI
。
如果要查看每个参数的后边际密度,可以使用density()
存储在对象trace
组件中的样本mcmc_r
。
library(MHadaptive)
data(mcmc_r)
BCI(mcmc_r)
# 0.025 0.975 post_mean
# a -6.6113522 7.038858 0.001852978
# b 0.2217377 1.543519 0.902057671
# epsilon 3.8094802 6.550360 4.957292114
head(mcmc_r$trace)
# [,1] [,2] [,3]
# [1,] 3.1448136 0.7211228 5.449728
# [2,] 2.2287645 0.7155189 4.602004
# [3,] 2.0812509 0.8035820 4.224071
# [4,] 1.2444855 0.8448825 4.737466
# [5,] 3.2765630 0.5947548 4.740052
# [6,] 0.4271876 0.9014841 5.333821
plot(density(mcmc_r$trace[,3]), main=mcmc_r$par_names[3])