全文链接:https://tecdat.cn/?p=40152
在统计学领域中,层次建模是一种极为强大且实用的工具。它能够巧妙地处理复杂的数据结构,通过分层的方式对数据进行建模。在贝叶斯统计的框架内,层次建模优势尽显,其可以有效地融合先验信息,进而实现更精准的推断。这种方法在多个学科如生物医学、社会科学等领域有着广泛的应用前景,为解决实际问题提供了有力的支持(点击文末“阅读原文”获取完整代码、数据、文档)。
层次建模的初步应用
以下是一个针对特定球员本垒打数据进行逻辑模型拟合的示例。
依据输入的球员名字,从数据集中筛选出相关数据,并运用逻辑回归模型来拟合本垒打概率与球员年龄之间的关系。随后,通过循环操作对多个球员的数据进行处理整合,并使用xyplot
函数绘制出每个球员的拟合曲线。
xyplot(Fitted ~ Age | Player,
data=new_data,
type="l", lwd=3, col="black")
通过运行这些代码并查看生成的图形(图1),我们能够直观地观察到不同球员的本垒打概率随年龄的变化趋势。
图1:不同球员本垒打概率随年龄变化的拟合曲线
个体估计与联合估计
在分析心脏移植数据时,我们可通过以下代码绘制散点图,以观察数据特征。
绘制了心脏移植数据中预期值的对数与观测值和预期值比值的散点图,并标注了观测值(图2)。通过该图,我们能初步了解数据的分布状况,为后续深入分析奠定基础。
图2:心脏移植数据散点图
死亡率是否相等的检验
为判断等死亡率模型是否合适,我们采用后验预测检验方法。首先计算数据中的总观测值和总预期值。接着,通过生成伽马分布的随机数模拟参数lambda
,并据此生成泊松分布的随机数来模拟观测值。
随后,绘制模拟观测值的直方图,并标注实际观测值(图3),以此直观判断等死亡率模型的合理性。最后,绘制概率与预期值对数的关系图(图4),以便进一步分析。
with(hearttransplants,
plot(log(e), pout, ylab="Prob(extreme)"))
图3:模拟观测值直方图及实际观测值标注
图4:概率与预期值对数关系图
点击标题查阅往期内容
Python用PyMC3马尔可夫链蒙特卡罗MCMC对疾病症状数据贝叶斯推断
左右滑动查看更多
01
02
03
04
可交换性先验信念的建模
为对泊松率的可交换性信念进行建模,我们定义了一个两阶段先验函数。
通过设置不同的alpha
值,并使用函数绘制等高线图(图5),可直观展示先验分布的形态。
图5:不同alpha
值下的先验分布等高线图
后验模拟
在贝叶斯分析里,后验分布的模拟是关键步骤。我们将后验分布表示为[μ,αμ,α]
和{λj}|μ,α{λj}|μ,α
的形式,并着重关注[μ,αμ,α]
的后验分布。
通过mycontour
函数绘制等高线图(图6),呈现后验分布的轮廓。
此外,运用gibbs
抽样方法模拟后验分布。
通过绘制抽样点的分布以及参数的密度图(图7、图8),深入了解后验分布的特征。
最后,依据后验模拟结果,计算速率的后验分布,并绘制相关图形(图9)展示观测值与后验分布的关系。
with(hearttransplants,
lines(log(e\[i\]) * c(1, 1), probint))
}
图6:[μ,αμ,α]
后验分布等高线图
图7:gibbs
抽样点分布
图8:参数log.alpha
的密度图
图9:观测值与速率后验分布关系图
后验推断
后验推断是基于后验分布对模型参数进行估计和推断的过程。我们再次绘制后验分布的等高线图(图10)。
通过计算收缩率,并绘制收缩率与预期值对数的关系图(图11),分析不同观测值的收缩情况。
在比较不同医院时,计算每个医院的平均速率,找出平均速率最小的医院。
通过模拟速率并进行比较(图12),进一步了解不同医院之间的差异。
图10:后验分布等高线图
图11:收缩率与预期值对数关系图
贝叶斯敏感性分析
贝叶斯敏感性分析主要探究先验选择对推断结果的影响。我们通过改变先验中的参数z0
,观察后验分布的变化。
log.alpha <- fitgibbs$par\[, 1\]
log.alpha.new <- sir.old.new(log.alpha,
prior, prior.new)
借助lattice
软件包绘制密度图(图13),直观比较原始先验和新先验下的后验分布。
图13:原始先验和新先验下后验分布的密度图
从图中可以清晰地看到,不同先验设定下后验分布的差异,这有助于我们了解先验选择对推断结果的影响程度,进而在实际应用中更加谨慎地选择合适的先验分布。
后验预测模型检验
后验预测模型检验是衡量模型预测能力的重要环节。我们通过模拟预测分布,并与实际观测值对比来进行检验。首先生成参数lambda
的后验样本,并据此生成预测的观测值。
然后绘制预测观测值的直方图,并标注实际观测值(图14),以此直观展示预测分布与实际值的契合情况。
图14:预测观测值直方图及实际观测值标注
为更全面评估模型的预测性能,我们计算每个观测值的预测分布至少与实际观测值一样大的概率。
最后,绘制概率对比图(图15),将等均值情况下的极端概率与可交换情况下的极端概率进行对比,从而深入分析模型的性能。
图15:等均值与可交换情况下极端概率对比图
从图中我们可以直观地看出两种情况下概率的差异,进而对模型的预测能力和合理性有更深入的认识,判断模型是否能够较好地捕捉数据的特征和规律。
结论
本文围绕贝叶斯框架下的层次建模展开了深入的研究与实践。通过对本垒打数据和心脏移植数据的分析,展示了层次建模在数据拟合、后验模拟、推断、敏感性分析以及后验预测模型检验等方面的具体应用过程。
本文中分析的完整数据、代码、文档分享到会员群,扫描下面二维码即可加群!
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取完整代码、数据、文档。
本文选自《R语言用逻辑回归贝叶斯层次对本垒打数据与心脏移植数据后验预测检验模拟推断及先验影响分析|附数据代码》。
点击标题查阅往期内容
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
Python用PyMC贝叶斯GLM广义线性模型、NUTS采样器拟合、后验分布可视化
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
使用贝叶斯层次模型进行空间数据分析
MCMC的rstan贝叶斯回归模型和标准线性回归模型比较
python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
matlab贝叶斯隐马尔可夫hmm模型实现
贝叶斯线性回归和多元线性回归构建工资预测模型
Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间
R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
随机森林优化贝叶斯预测分析汽车燃油经济性
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
Python贝叶斯回归分析住房负担能力数据集
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python用PyMC3实现贝叶斯线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言贝叶斯线性回归和多元线性回归构建工资预测模型
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言stan进行基于贝叶斯推断的回归模型
R语言中RStan贝叶斯层次模型分析示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计