基于MATLAB的简易贝叶斯参数估计演示系统
项目简介
本项目是一个基于MATLAB开发的教学演示程序,旨在直观地展示贝叶斯统计推断的核心流程。通过代码实现,项目完整呈现了如何结合先验知识(Prior)与观测数据(Likelihood),利用贝叶斯公式更新对未知参数的认知(Posterior)。
该系统通过两个经典的统计学案例——高斯模型均值估计与Beta-Binomial概率模型,深入浅出地演示了从先验设定、似然计算、后验更新到参数点估计(MAP/MMSE)的全过程。代码编写注重结构化与可读性,包含详尽的算法实现细节,非常适合作为统计信号处理、机器学习或概率论课程的实验与学习工具。
功能特性
本系统主要包含以下核心功能:
- 多样化的统计模型演示:囊括了连续型变量(高斯分布均值)和离散型试验概率(二项分布参数)两种典型的贝叶斯推断场景。
- 数值与解析解法的结合:既展示了基于网格法(Grid Method)的通用数值积分推断,也验证了共轭先验(Conjugate Prior)下的解析解更新过程。
- 防数值溢出的似然计算:在处理高斯似然函数时,实现了对数似然(Log-Likelihood)计算,有效避免了多样本累积导致的数值下溢问题。
- 多种参数估计指标:程序自动计算并对比了最大后验概率估计(MAP)和最小均方误差估计(MMSE/后验均值),并未高斯模型提供了95%的置信区间。
- 直观的可视化系统:在一个图表中同时绘制先验分布、归一化似然函数和后验分布,通过颜色填充和线条对比,使"数据如何修正信念"的过程清晰可见。
系统要求
- 软件环境:MATLAB R2016a 或更高版本(推荐使用较新版本以获得最佳绘图体验)。
- 工具箱:主要使用MATLAB基础统计函数(normpdf, betapdf, randn, rand等),无需额外的高级工具箱。
使用方法
- 将项目文件下载至本地目录。
- 在MATLAB中打开该目录。
- 在命令窗口输入 main 并回车,或直接运行 main.m 脚本。
- 程序将自动执行计算并在屏幕上弹出两个图形窗口,分别展示高斯均值估计和二项分布概率估计的结果。
核心算法与实现细节
本项目主要由主控逻辑和两个独立的演示模块组成,以下是针对代码实际逻辑的详细分析:
1. 案例一:高斯分布均值的贝叶斯估计
该模块模拟了在已知观测噪声(标准差)的情况下,估计传感器真实均值的过程。
- 数据生成:设定真实均值为10,已知标准差为2。程序生成20个服从正态分布的随机样本作为观测数据。
- 先验设定:假设参数均值服从正态分布,设定了一个带有偏差的先验(均值5),模拟初始认知的不足。
- 似然函数计算:
* 为了防止大量概率密度相乘导致数值趋近于零(下溢),代码首先计算对数似然(Log-Likelihood)。
* 通过指数还原并减去最大值进行归一化处理,使其能与概率密度函数在同一量级下进行可视化对比。
*
数值法:在预设的参数网格上,将先验概率与似然函数对应相乘,并进行数值积分归一化,得到数值后验分布。
*
解析法:利用正态-正态共轭模型的特性,直接通过公式计算后验均值和后验方差(后验精度 = 先验精度 + 样本精度),验证数值法的准确性。
*
MAP:寻找数值后验分布中的最大值对应的参数点。
*
MMSE:计算后验分布的加权均值(期望)。
*
置信区间:通过累积分布函数(CDF)计算后验概率密度覆盖95%面积的上下界。
2. 案例二:二项分布概率参数的贝叶斯估计 (Beta-Binomial)
该模块模拟了经典的抛硬币实验,估计正面朝上的概率参数 theta。
- 数据生成:设定真实概率为0.75,进行30次伯努利试验(0/1生成),统计正面和反面的次数。
- 先验设定:采用Beta分布(Beta(2,2))作为先验。这是一个"拱形"分布,表示对0.5附近的概率有微弱的偏好,但整体不确定性较大。
- 似然函数计算:根据二项分布公式计算不同 theta取值下的似然值,并对其进行面积归一化,以便于在图表中展示形状。
- 后验分布推导:利用Beta分布是二项分布共轭先验的特性,直接通过代数加法更新分布参数:
* 新Alpha = 原Alpha + 正面次数
* 新Beta = 原Beta + 反面次数
*
上子图:绘制Prior、Likelihood、Posterior的三条曲线,展示分布形态如何从宽泛的先验收敛到尖锐的后验。
*
下子图:使用条形图直观对比真实概率值、MAP估计值和MMSE估计值的差异。在此模型中,MAP对应Beta分布的众数,MMSE对应Beta分布的期望,代码清晰地展示了两者计算公式的区别。
3. 通用实现技术
- 网格化计算(Grid Method):代码中通过
linspace 创建参数的定义域网格,将连续的概率密度计算转化为离散的向量运算。这种方法虽是近似解,但极大地简化了非共轭情况下后验分布的计算逻辑,易于理解。 - 可视化增强:使用了
fill 函数为概率分布曲线下方添加半透明颜色填充,使用了 xline 和 scatter 标记关键统计量,使得图形不仅美观且信息量大。