报告贝叶斯结果

Python 中的贝叶斯数据分析

Michal Oleszak

Machine Learning Engineer

诚实的方式

  • 报告每个参数的先验与后验
posterior_draws
array([8.02800413, 8.97359548, 7.57437476, ..., 5.85264609, 7.92875104,
       7.41463758])
  • 绘制先验与后验分布
sns.kdeplot(prior_draws, shade=True, label="prior")
sns.kdeplot(posterior_draws, shade=True, label="posterior")
Python 中的贝叶斯数据分析

诚实的方式

两条叠加的密度曲线,均为钟形。先验以0为中心,矮而宽;后验约以7为中心,更高更窄。

Python 中的贝叶斯数据分析

诚实的方式

两条叠加的密度曲线,均为钟形。先验以0为中心,矮而宽;后验约以7为中心,更高更窄。

Python 中的贝叶斯数据分析

诚实的方式

两条叠加的密度曲线,均为钟形。先验以0为中心,矮而宽;后验约以7为中心,更高更窄。

Python 中的贝叶斯数据分析

诚实的方式

两条叠加的密度曲线,均为钟形。先验以0为中心,矮而宽;后验约以7为中心,更高更窄。

Python 中的贝叶斯数据分析

贝叶斯点估计

  • 单个数值无法完整表达分布中的全部信息

  • 但有时需要参数的点估计

钟形密度图。

Python 中的贝叶斯数据分析

贝叶斯点估计

  • 单个数值无法完整表达分布中的全部信息

  • 但有时需要参数的点估计

posterior_mean = np.mean(posterior_draws)


钟形密度图,竖线标出其均值。

Python 中的贝叶斯数据分析

贝叶斯点估计

  • 单个数值无法完整表达分布中的全部信息

  • 但有时需要参数的点估计

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)

钟形密度图,竖线标出其中位数。

Python 中的贝叶斯数据分析

贝叶斯点估计

  • 单个数值无法完整表达分布中的全部信息

  • 但有时需要参数的点估计

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)
posterior_p75 = np.percentile(posterior_draws, 75)

钟形密度图,竖线标出其第75百分位。

Python 中的贝叶斯数据分析

可信区间

  • 使参数落入区间的概率为 x% 的区间
  • 区间越宽,参数估计的不确定性越大
  • 参数是随机的,因此其落入区间具有一定概率
  • 频率学派中,(置信)区间是随机的,而参数是固定的

钟形密度图,两个虚线竖线标出其间的区域。

Python 中的贝叶斯数据分析

最高后验密度(HPD)

钟形密度图的GIF:一条水平线在图中下移,线与曲线的交点间的概率质量随之增大。

import arviz as az

hpd = az.hdi(posterior_draws, 
             hdi_prob=0.9)
print(hpd)
[-4.86840193  4.96075498]
Python 中的贝叶斯数据分析

让我们练习报告贝叶斯结果!

Python 中的贝叶斯数据分析

Preparing Video For Download...