基于假近邻法(FNN)的时间序列嵌入维数计算工具
项目介绍
本项目是一个专门用于确定非线性动力学系统重构相空间时所需最小嵌入维数的分析工具。它基于 Kennel、Brown 和 Abarbanel 于 1992 年提出的假近邻法(False Nearest Neighbors, FNN)原理。该方法的核心逻辑在于:如果观测到的时间序列是由确定性动力系统产生的,那么在足够的嵌入维数下,吸引子的几何结构将完全展开。若嵌入维数不足,高维空间中的点在投影到低维空间时会形成“由于投影导致的近邻点”(即假近邻)。通过统计随着维数增加而消失的假近邻比例,可以科学地提取系统的动力学特征,避免欠拟合或过度计算。
功能特性
- 混沌序列自动生成:内置 Lorenz 混沌系统数据生成器,支持通过四阶龙格-库塔算法生成标准的测试数据集。
- 自动化相空间重构:根据设定的时间延迟和目标最大维数,自动执行多维相空间的矩阵化构建。
- 高效近邻搜索:在 MATLAB 环境下采用矩阵化运算加速,避免了低效的循环嵌套,实现了快速的欧氏距离匹配与最近邻点搜索。
- 双重判别准则:严格遵循原文几何构造原理,通过距离增长倍数准则和吸引子尺寸限制准则,精确区分确定性近邻与假近邻。
- 结果自动评估与可视化:自动识别 FNN 比例趋于零或达到极小值的临界维数,并生成直观的维数演变趋势图。
系统实现逻辑
主程序的执行逻辑遵循以下标准流程:
- 参数初始化与数据预处理:设定时间延迟 tau、最大探测维数 max_m 以及 FNN 判定阈值。生成 Lorenz 时间序列后,对其进行 Z-score 标准化处理,以消除量纲差异对距离计算的影响。
- 维度循环遍历:程序从嵌入维数 m = 1 开始遍历直至 max_m。在每个维度下,执行以下操作:
- 空间重构:根据当前维数构建观测向量矩阵。
- 寻找最近邻:对于抽样选取的参考点,在当前 m 维空间中计算其与其他所有点(排除自身)的欧氏距离,找出最近邻点的索引。
- 维度扩展映射:计算该对近邻点在增加一个维度(m + 1 维)后的坐标距离改变量。
- 逻辑判定:应用双重判定准则:
- 准则一:判断增加维度后的距离增量与原距离的比值是否超过预设阈值 R_tol。
- 准则二:判断扩展维度后的总距离与其整体吸引子几何尺寸(以标准差 sigma 衡量)的比值是否超过 A_tol。
- 若满足任一准则,则计数为假近邻。
- 统计与停机:计算每个维度下的假近邻比例。当比例下降至 1% 以下或达到局部最小值时,该维度即判定为系统的最小嵌入维数。
关键算法与实现细节
- 混沌动力学仿真:
使用四阶龙格-库塔(RK4)数值积分法求解 Lorenz 微分方程组(典型参数:sigma=10, rho=28, beta=8/3)。程序包含初始阶段的瞬态剔除机制,确保参与计算的数据完全处于混沌吸引子上。
- 向量化距离计算:
为了提升计算效率,程序利用矩阵减法和平方和运算代替传统循环,针对大规模数据集优化了最近邻搜索逻辑。
- 鲁棒的判定逻辑:
程序引入了全局标准差作为背景尺度参考。这种设计能有效防止在数据量有限的情况下,由于吸引子过于稀疏而导致的误判,使得在噪声干扰或低采样频率下仍能保持较好的稳定性。
- 推荐维数识别逻辑:
系统不仅提供趋势图,还通过逻辑检索自动标注满足阈值条件的第一个最优解。这种自动化识别机制减少了人工解读曲线的主观偏差。
使用方法
- 配置开发环境:确保计算机已安装 MATLAB 环境。
- 配置参数:根据待分析的时间序列特性,在主函数中调整时间延迟 tau(推荐预先通过自相关法或互信息法计算获取)和判定阈值 R_tol、A_tol。
- 运行分析:执行主程序,系统将依次计算各维度的 FNN 比例并在命令行实时打印计算进度。
- 获取结果:计算结束后,程序将自动跳出分析曲线图,并在命令行窗口输出系统推荐的最小有效嵌入维数结果。
系统要求
- 软件环境:MATLAB R2016b 及以上版本(以支持现代图形函数和矩阵运算特性)。
- 硬件要求:由于重构过程涉及大规模矩阵运算,建议内存不少于 8GB。
- 数据要求:虽然工具内置了 Lorenz 数据生成器,但用户亦可将自定义的一维时间序列导入 series 变量进行分析。数据建议进行去趋势或标准化处理。