ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Kats 时序分析框架 BayesianVAR 模型:基于 Minnesota 先验的贝叶斯向量自回归预测实战

Kats 时序分析框架 BayesianVAR 模型:基于 Minnesota 先验的贝叶斯向量自回归预测实战 数据分析机器学习数据科学【免费下载链接】KatsKats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.项目地址https://gitcode.com/gh_mirrors/ka/Kats点击查看免费下载导读本文围绕 Kats 开源时序分析框架中的kats.models.bayesian_var模块展开系统讲解其贝叶斯向量自回归Bayesian Vector AutoregressionBayesian VAR模型的参数体系、估计原理、拟合/预测/可视化 API 与使用边界。读完本文你将掌握如何在多变量时序数据上配置BayesianVARParams含滞后阶数 p 与 Minnesota 先验四元组 phi理解模型底层先验构造—OLS 协方差—后验更新的完整求解链路并能够直接调用fit / predict / plot完成多序列联合预测。模块定位当经典 VAR 遇到系数过多时的正则化方案经典 VAR 模型对应 Kats 中的 kats.models.var基于 statsmodels 封装以 OLS 估计系数在变量个数 m 与滞后阶数 p 较大时需要估计的系数数量达到m * (m * p r 1)量级极易过拟合且数值不稳定。kats.models.bayesian_var模块正是为此场景设计它使用Minnesota 先验Minnesota prior作用于系数矩阵对过多的待估系数施加收缩正则化。源码模块头部明确写明了设计动机与理论出处bayesian_var.py动机Bayesian estimation of Vector Autoregressive Model using Minnesota prior on the coefficient matrix. This version is useful for regularization when they are too many coefficients to be estimated.实现参照MathWorks 的 normalbvarm 文档以及 Canova 的《Methods for Applied Macroeconomic Research》第 10 章第 5 页先验协方差构造公式的直接来源。该模块通过 kats/models/init.py 随 Kats 模型包默认导出对应的 Sphinx API 文档入口即为 sphinx/source/kats.models.bayesian_var.rst该页面通过automoduleautodoc机制见 sphinx/source/conf.py自动生成完整 API 参考。核心参数BayesianVARParams 及其校验规则BayesianVARParams是一个dataclass继承自Params定义于 kats/consts.py共 5 个参数。其中p控制模型复杂度后四个是 Minnesota 先验协方差矩阵的超参数含义引自 Canova 教材第 5 页bayesian_var.py。参数默认值语义p5历史滞后阶数Historical lag to usephi_00.02一阶滞后方差上的紧度tightness on the variance of the first lagphi_10.25其他内生变量的相对紧度relative tightness of other variablesphi_220外生变量的相对紧度relative tightness of the exogenous variablesphi_33滞后衰减指数衰减形式为lag^phi_3decay with lag is parameterized as lag^phi_3所有参数在validate_params()中严格校验bayesian_var.py任一非法值都会抛出带具体信息的ValueErrorp 0报错Lag order must be positivephi_0 0报错phi_0 must be positivephi_1 0或phi_1 1报错并提示参考 Canova 教材第 5 页这是唯一带区间上界的参数体现了 Minnesota 先验中其他变量相对紧度不超过 1的理论约束phi_2 0、phi_3 0分别报错。测试用例 test_bayesian_var_model.py 用 6 组非法组合(p0,...)、(phi_00,...)、(phi_10,...)、(phi_12,...)、(phi_20,...)、(phi_30,...)逐一验证这些校验分支确实触发ValueError。数据要求与使用边界BayesianVAR继承自 Kats 的基础模型类m.Model[BayesianVARParams]model.py构造时有两道硬性门槛必须多变量__init__中若data.is_univariate()为真直接抛出ValueErrorBayesian VAR Model only accepts multivariate time series.bayesian_var.py。测试用例 test_univariate_data 用单变量的 air_passengers 数据验证了该报错路径。时间频率必须规整可推断静态方法_check_get_freq调用pd.infer_freq推断失败缺失、重复或不规则时间戳即抛出ValueErrorbayesian_var.py。构造完成后模型会完成内部维度初始化bayesian_var.pym变量个数即 Y 的行数T观测长度r外生回归项个数本实现中外生项即线性时间索引RangeIndex(0, len)故r 1N m * p r 1单个方程的回归元数量p 个滞后 × m 个变量 外生项 常数项num_mu_coefficients m * N全系统待估系数总数。使用仓库内置的多变量模拟数据 kats/data/multivariate_anomaly_simulated_data.csv含 9 个数值列 time列日频即可完成一次典型建模这正是测试套件的标准数据源test_bayesian_var_model.py。完整实战从数据加载到预测绘图以下代码完整还原 Kats 中 Bayesian VAR 的标准使用流程API 与测试用例保持一致可直接运行import pandas as pd from kats.consts import TimeSeriesData from kats.data.utils import load_data from kats.models.bayesian_var import BayesianVAR, BayesianVARParams # 1. 加载多变量模拟数据并封装为 TimeSeriesData DATA_multi load_data(multivariate_anomaly_simulated_data.csv) ts_data TimeSeriesData(DATA_multi) # 2. 配置模型参数这里使用 p3 演示与测试用例一致 params BayesianVARParams(p3) # 3. 实例化并拟合 model BayesianVAR(datats_data, paramsparams) model.fit() # 4. 预测未来 30 步同时返回历史拟合值 forecast model.predict(steps30, include_historyTrue) # 5. 可视化输入序列与预测结果叠加 ax model.plot()预测结果是一个字典forecast[column_name]对应每个变量列的TimeSeriesData其 DataFrame 含time、fcst、fcst_lower、fcst_upper四列。需要特别说明的是置信区间尚未实现fcst_lower与fcst_upper统一填充为占位值-1predict内部会打印 warning 明确提示bayesian_var.py。因此该模型适用于点预测场景若需要区间预测可考虑同一模块下的 kats.models.varstatsmodels 版 VAR 通过forecast_interval提供真实置信带。plot方法默认以虚线ls--绘制预测曲线支持传入ax、figsize、title、ls等参数未提供ax时默认画布为(20, 6)bayesian_var.py。测试用例 test_plot、test_plot_ax 与 test_plot_params 分别验证了默认绘图、指定ax绘图与figsize/title/ls定制三种场景。API 使用契约fit、predict、plot 的调用顺序与错误处理模型的公开接口遵循 Kats 统一的先 fit 后 predict先 predict 后 plot契约测试用例系统性覆盖了违规调用test_bayesian_var_model.py未fit()直接predict(10)→ValueErrorpredict(0)且include_historyFalse→ValueErrorForecast produced no values...未predict()直接plot()→ValueErrorMust call predict() before plot()。此外predict还支持verboseTrue在逐步外推时输出每步的预测日志bayesian_var.py测试用例 test_sigma_u 正是用verboseTrue路径顺带验证了sigma_u属性。原理纵深Minnesota 先验与贝叶斯后验求解链路先验设计_construct_v_prior与_sigma_ijlMinnesota 先验的核心思想是系数向量的先验均值mu_prior中第 i 个变量的一阶滞后系数被置为 1随机游走先验其余系数均为 0——即mu_prior[i, p * i] 1bayesian_var.py。这体现时序大概率延续近期水平的朴素假设。先验协方差v_prior是对角阵由_sigma_ijl按三类情形赋值bayesian_var.py其中h(lag) lag^phi_3自身滞后项i jsigma_ij phi_0 / h(lag)—— 先验紧度随滞后阶数的phi_3次方衰减即越久远的滞后先验越紧越向 0 收缩外生变量/常数项sigma_ij phi_0 * phi_2其他内生变量 j 的滞后项sigma_ij phi_0 * (phi_1 / h(lag)) * (variance[j] / variance[i])—— 用变量各自方差之比做尺度归一。对角元依次按m 个变量 × p 个滞后 r 个外生 1 个常数的顺序填充最终断言元素数等于m * (m * p r 1)bayesian_var.py。默认参数下phi_00.02很小意味着先验整体紧致、强收缩而phi_220很大说明常数项与外生项先验宽松允许截距与时间趋势相对自由。OLS 协方差_compute_sigma_olsfit的第一步是估计残差协方差sigma_ols以滞后矩阵X_OLS形状N × (T-p)对Y[:, p:]做 OLS得到beta_ols再计算 SSE 并除以T - m*p - 1bayesian_var.py。它同时通过sigma_u属性暴露为带变量名索引/列名的 DataFrame测试用例对p3场景断言了精确数值矩阵test_bayesian_var_model.py可作为复现验证的基准。后验更新fit的核心循环fit以高斯共轭框架完成解析后验更新bayesian_var.py。对每个时刻t ∈ [p, T)用_construct_z拼接当前回归元向量z [fliplr(Y[:, t-p:t]).flatten(), X[:, t], 1]再用block_diag构造对角块矩阵Z_t形状m × m*Nbayesian_var.py累加信息项Z_sig_Z_sum Z_t.T inv(sigma_ols) Z_t与Z_sig_y_sum Z_t.T inv(sigma_ols) Y[:, t]后验协方差v_posterior inv(inv(v_prior) Z_sig_Z_sum)后验均值mu_posterior v_posterior (inv(v_prior) mu_prior Z_sig_y_sum)。完成后存储resid训练期逐点残差 DataFrame由_get_training_residuals对每个 t 做一步前向预测求得并置fitted Truebayesian_var.py。预测外推_evaluate_point_t与_look_ahead_step预测统一为线性变换Z_t mu_posterior历史拟合_evaluate_point_t基于训练窗口的X/Y与时刻 t 构造Z_t未来外推_look_ahead_step用当前已知 Y 下一步 X构造Z_t得到下一时刻预测并将该预测追加进Y_curr实现递归多步滚动预测时间轴由pd.date_range(start最后时刻, periodssteps1, freqtime_freq)[1:]生成bayesian_var.py、bayesian_var.py。与其他 VAR 类模型的取舍维度BayesianVARVARModelvar.py估计方法解析贝叶斯后验Minnesota 先验statsmodels OLS支持method、ic阶数选择、trend趋势项适用场景变量/滞后多、系数过多时正则化常规多变量线性预测输入仅多变量仅多变量预测输出点预测fcst_lower/upper为-1占位含真实置信区间alpha可调默认 0.05参数搜索未提供get_parameter_search_space提供见 parameter_tuning_utils.py 的get_default_var_parameter_search_space两者的__str__输出也形成对照BayesianVAR打印完整配置p、m、r、T、N、phi_0~phi_3而VARModel仅返回VARbayesian_var.py、var.py。小结kats.models.bayesian_var以不超过 10 个公开符号BayesianVARParams、BayesianVAR及 fit/predict/plot/sigma_u/k_ar 等提供了开箱即用的贝叶斯 VAR 能力五个参数即可完整刻画 Minnesota 先验与滞后结构validate_params保证配置合法性fit/predict/plot三段式 API 与 Kats 全库风格一致。在多变量高维场景下它是对经典 VAR 的有力补充但在需要置信区间或自动阶数选择的场景则应切换到VARModel。理解其先验构造与后验求解链路能帮助你根据数据方差与滞后特性合理调节phi_0~phi_3把正则化强度真正握在自己手里。赞分享数据分析机器学习数据科学【免费下载链接】KatsKats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.项目地址https://gitcode.com/gh_mirrors/ka/Kats点击查看免费下载相关推荐Kats 谐波回归模型HarmonicRegressionModel完全指南基于傅里叶级数的季节性时间序列预测Kats 谐波回归模型HarmonicRegressionModel完全指南基于傅里叶级数的季节性时间序列预测 KatsKit to Analyze T数据分析机器学习数据科学上一篇【亲测免费】 探索个性化之路IconChanger——你的App图标魔法师下一篇突破性能瓶颈Specs并行ECS架构全解析与实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表