多变量互信息估计MATLAB函数工具箱
本工具箱旨在提供一套完整的计算框架,用于评估随机变量之间的统计相关性。通过输入数据矩阵,工具箱能够精确计算边缘熵、联合熵、互信息以及归一化互信息。该方案兼顾了连续变量与离散变量的处理需求,通过高效的矩阵向量化编程,实现了在大规模数据集下的快速运算,为通信工程、机器学习、生物信息学及图像处理等领域提供了定量的相关性分析手段。
功能特性
- 多类型数据支持:内置离散化模块,既能直接处理分类离散变量,也能将连续信号(如正弦信号、噪声信号)转化为可计算的离散形式。
- 多指标综合评估:输出涵盖了信息论中的核心指标,包括边缘熵 H(A)、H(B),联合熵 H(A,B),互信息 MI 以及归一化互信息 NMI。
- 统计相关性定性分析:基于归一化互信息(NMI)的数值大小,自动给出从“独立”到“极强相关”的定性评估结果。
- 全方位可视化展示:自动生成时间序列波形图、空间散点分布图、联合概率分布热图以及熵分量对比柱状图,直观呈现变量间的相互关系。
- 高性能计算实现:利用 MATLAB 的矩阵运算特性,通过全索引构建联合频率分布,提升了计算效率并保证了数值稳定性。
系统要求
- 环境需求:MATLAB R2016b 或更高版本。
- 依赖工具箱:无需额外第三方工具箱,基于 MATLAB 核心函数库实现。
使用方法
- 准备数据:准备两组长度相同的观测矢量。可以是模拟生成的信号,也可以是从外部导入的实验数据。
- 设置参数:对于连续变量,需要指定离散化区间数(Bins),默认建议设置为 30;对于已分类好的离散变量,将该参数设为 0。
- 执行计算:运行计算模块,系统将自动执行预处理、概率分布统计、熵计算及互信息推导。
- 查看结果:在 MATLAB 命令行窗口查看数值报告及定性评价结果,并在弹出的图形窗口中观察可视化分析图表。
详细实现逻辑
工具箱的核心逻辑遵循信息论的基本定义,具体执行流程如下:
1. 数据初始化与模拟
系统通过固定随机数种子确保结果的可重复性。针对两种典型场景生成测试数据:
- 连续变量场景:模拟具有相位差的两个叠加噪声的正弦信号,用于测试工具对时域相关信号的捕捉能力。
- 离散变量场景:生成具有一定随机偏移的整数类别序列,用于验证工具在特征分类中的准确性。
2. 预处理与离散化
- 对于连续数据,采用线性映射法将原始值投影到指定的区间内。通过计算最大值与最小值的差值,将数据划分为 N 个能级。
- 对于离散数据,使用唯一值映射技术确保输入值被归一化为从 1 开始的连续整数索引,以便于后续的矩阵操作。
3. 概率分布统计
利用高性能累加函数构建联合频率分布矩阵。该矩阵的索引由变量 A 和 B 的离散值决定。通过将联合频率计数除以样本总数,得到精确的联合概率分布矩阵 P(A,B)。
4. 边缘分布与熵计算
- 边缘分布:对联合概率矩阵进行行累加和列累加,分别获得变量 A 和变量 B 的边缘概率 P(A) 和 P(B)。
- 熵运算:采用 Shannon 熵公式。程序特别处理了概率为零的情况,通过逻辑索引过滤非零项,防止计算对数时产生非数值结果。
5. 互信息推导
- MI 计算:依据 I(A;B) = H(A) + H(B) - H(A,B) 的公式提取互信息量。为了消除计算中的数值微小误差,对结果执行了非负性校验。
- NMI 计算:采用对称的归一化方式,即 2 * MI / (H(A) + H(B))。该指标取值范围为 0 到 1,消除了变量本身熵值大小的影响,使不同数据集之间的相关性具备可比性。
关键算法与实现细节
矩阵向量化计算
在构建联合分布时,没有采用传统的循环嵌套,而是通过坐标索引映射技术直接在内存中生成分布矩阵,极大地缩短了处理高维矩阵时的耗时。
数值稳定性处理
在进行对数运算和除法运算时,系统引入了极小的偏移量(Epsilon),确保在处理稀疏概率矩阵或计算归一化指标时不会出现分母为零或产生无穷大的错误。
定性评估标准
系统内置了基于 NMI 的评价体系:
- NMI > 0.8:判定为极强相关。
- 0.5 < NMI <= 0.8:判定为显著相关。
- 0.1 < NMI <= 0.5:判定为弱相关。
- NMI <= 0.1:判定为独立或极弱相关。
可视化反馈
可视化部分通过子图布局,将原始信号波形、变量空间分布和底层概率密度结构整合在一起,帮助用户从物理特性和统计特性两个维度理解互信息的内涵。