当前位置: 首页 > news >正文

VAR算法

向量自回归模型,简称VAR模型,是AR 模型的推广,是一种常用的计量经济模型。在一定的条件下,多元MA和ARMA模型也可转化成VAR模型。

单变量的时间序列的分析模式可以推广到多变量时间序列,建立向量自回归模型。向量自回归模型通常用于描述多变量时间序列之间的变动关系。

 

多变量时间序列具有一个以上的时间依赖变量。每个变量不仅取决于其过去的值,而且还对其他变量有一定的依赖性。

在VAR模型中,每个变量是其自身过去值和所有其他变量的过去值的线性函数。

 

模型的基本形式是弱平稳过程的自回归表达式,描述的是在同一样本期间内的若干变量可以作为它们过去值的线性函数。

 

在VAR模型中,必须保证时间序列稳定。如果不能保证时间序列稳定,那么会导致两种结果:

第一,向量自回归系数的估计值是负数,做完 t 检验后,得到的结果是无效的;
第二,两个独立变量的相关关系或者回归关系是假的,使得模型的结果无效。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.api import VAR
from statsmodels.tsa.stattools import adfuller, grangercausalitytests
from statsmodels.stats.stattools import durbin_watson
import warnings
warnings.filterwarnings('ignore')# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 1. 生成示例数据
np.random.seed(42)
n_obs = 200
date_range = pd.date_range(start='2010-01-01', periods=n_obs, freq='M')# 生成三个相关的时间序列
data = pd.DataFrame(index=date_range)
data['GDP'] = np.cumsum(np.random.normal(0.5, 0.2, n_obs)) + 100
data['Inflation'] = np.sin(np.arange(n_obs) * 0.1) + np.random.normal(0, 0.1, n_obs) + 2
data['Unemployment'] = np.cos(np.arange(n_obs) * 0.05) + np.random.normal(0, 0.1, n_obs) + 5# 2. 数据可视化
plt.figure(figsize=(12, 8))
for i, col in enumerate(data.columns, 1):plt.subplot(3, 1, i)plt.plot(data.index, data[col])plt.title(f'{col} 时间序列')plt.grid(True)
plt.tight_layout()
plt.show()# 3. 平稳性检验
print("平稳性检验 (ADF检验):")
for col in data.columns:result = adfuller(data[col])print(f"{col}: ADF统计量 = {result[0]:.4f}, p值 = {result[1]:.4f}")# 4. 格兰杰因果检验
print("\n格兰杰因果检验:")
max_lag = 4
for col1 in data.columns:for col2 in data.columns:if col1 != col2:print(f"{col2} -> {col1}:")test_result = grangercausalitytests(data[[col1, col2]], maxlag=max_lag, verbose=False)p_values = [test_result[i+1][0]['ssr_chi2test'][1] for i in range(max_lag)]print(f"  p值: {[f'{p:.4f}' for p in p_values]}")# 5. 差分处理使数据平稳
data_diff = data.diff().dropna()# 6. 确定最佳滞后阶数
model = VAR(data_diff)
lag_results = model.select_order(maxlags=10)
print(f"\n最佳滞后阶数: {lag_results.selected_orders}")# 7. 拟合VAR模型
best_lag = lag_results.selected_orders['aic']
var_model = model.fit(best_lag)
print("\n模型摘要:")
print(var_model.summary())# 8. 残差检验
print("\nDurbin-Watson检验 (接近2表示无自相关):")
residuals = var_model.resid
dw_results = durbin_watson(residuals)
for i, col in enumerate(data.columns):print(f"{col}: {dw_results[i]:.4f}")# 9. 预测
forecast_steps = 12
forecast = var_model.forecast(y=data_diff.values[-best_lag:], steps=forecast_steps)
forecast_index = pd.date_range(start=data.index[-1] + pd.DateOffset(months=1), periods=forecast_steps, freq='M')# 将差分预测值转换为原始尺度
last_values = data.iloc[-1].values
forecast_original = np.zeros_like(forecast)
for i in range(forecast_steps):if i == 0:forecast_original[i] = last_values + forecast[i]else:forecast_original[i] = forecast_original[i-1] + forecast[i]forecast_df = pd.DataFrame(forecast_original, index=forecast_index, columns=data.columns)# 10. 可视化预测结果
plt.figure(figsize=(14, 10))# 绘制每个变量的历史数据和预测
for i, col in enumerate(data.columns, 1):plt.subplot(3, 1, i)plt.plot(data.index, data[col], label='历史数据')plt.plot(forecast_df.index, forecast_df[col], label='预测', color='red', linestyle='--')plt.title(f'{col} - 历史数据与预测')plt.legend()plt.grid(True)plt.tight_layout()
plt.show()# 11. 脉冲响应分析
irf = var_model.irf(periods=20)
irf.plot(orth=False, figsize=(12, 10))
plt.suptitle('脉冲响应函数', fontsize=16)
plt.tight_layout()
plt.show()# 12. 方差分解
fevd = var_model.fevd(periods=20)
fevd_summary = fevd.summary()
print("\n方差分解:")
print(fevd_summary)# 13. 预测评估(如果需要测试集)
train_size = int(len(data) * 0.8)
train_data = data.iloc[:train_size]
test_data = data.iloc[train_size:]# 在训练数据上重新拟合模型
train_diff = train_data.diff().dropna()
var_model_train = VAR(train_diff).fit(best_lag)# 预测测试集
forecast_test = var_model_train.forecast(y=train_diff.values[-best_lag:], steps=len(test_data))# 计算预测误差
from sklearn.metrics import mean_squared_error, mean_absolute_errorfor i, col in enumerate(data.columns):mse = mean_squared_error(test_data[col].iloc[1:], forecast_test[1:, i] + train_data[col].iloc[-1])mae = mean_absolute_error(test_data[col].iloc[1:], forecast_test[1:, i] + train_data[col].iloc[-1])print(f"{col} - MSE: {mse:.4f}, MAE: {mae:.4f}")

 

相关文章:

VAR算法

向量自回归模型,简称VAR模型,是AR 模型的推广,是一种常用的计量经济模型。在一定的条件下,多元MA和ARMA模型也可转化成VAR模型。 单变量的时间序列的分析模式可以推广到多变量时间序列,建立向量自回归模型。向量自回归模型通常用于描述多变量时间序列之间的变动关系。多变…...

mysql 万能恢复主从Slave_SQL_Running 是No

STOP SLAVE;SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; # 这个值可改大START SLAVE;SHOW SLAVE STATUS\G;无聊我就学英语...

刚刚 Java 25 炸裂发布!让 Java 再次伟大

刚刚,Java 25 正式发布! Java 25 都发布了哪些新特性?有没有必要升级?一篇文章,带你速通 Java 新特性。大家好,我是程序员鱼皮。 刚刚,Java 25 正式发布!这是继 Java 21 之后,又一个 LTS 长期支持版本,也是 Java 开发者们最期待的版本之一。其中有个特性可以说是颠覆…...

go 语言结构和基础语法

结构和语法基础包声明 package main引入包函数init函数 22 会先执行init函数在执行main 函数 -------init------ hello world ------main--------变量标识符行分隔符语句&表达式注释公有成员和私有成员关键词、保留字和预定义标志引用类型切片 map channel interface func关…...

详细介绍:Linux--初识网络

详细介绍:Linux--初识网络pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...

lua程序调试方法

使用腾讯luahelper插件(lua全家桶,其中调试部分应用了LuaPanda实现) 主要有两个功能,一个是附加到已经运行的lua程序上,另一个是用debug方式运行lua程序文件,安装后默认没有配置文件,先add config就好。纯属记录程序人生,如有差错,欢迎指正,轻喷...

维保信息查询

超聚变查看维保信息: https://www.xfusion.com/support/#/zh/maintenance-information...

人工智能学习路线学习资料整理

人工智能学习资料(个人整理) 先导 开始之前,让我们先看几个demo和视频 【纪录片】阿尔法狗【双语特效字幕】 https://www.bilibili.com/video/BV1pE411y7Pu/?spm_id_from=333.337.search-card.all.click&vd_source=d5f2b87dc23c8806dfc6d9550f24aaf2路线 书籍资源—理论…...

软件设计师知识点总结(2023)上

第1题: 第2题: 第3题: 第4题: 第5题: 第6题:第7题:第8题: 第9题: 先来先服务:最短寻道时间:电梯调度: 单向扫描: 第10题: 第11题: 第12题: 第13题: 第14题: 第15题: 第16题: 第17题: 第18题: 第19题:...

【运维自动化-标准运维】各类全局变量使用说明(中)

一、集群资源筛选 此变量用于按照资源筛选方案创建新的集群。 创建 输入名称和KEY值 引用 ${KEY}引用${KEY},返回的是创建集群成功的信息Allocate {set_number} sets with names: 引用${KEY._module},返回的是集群下的模块信息,类型为字典,键为模块名,值为模块下的主机列表…...

提示词工程(Prompt Engineering)是不是“新时代的编程”?

一、引子:为什么大家开始重视 Prompt?从 ChatGPT、Claude 到文生图工具(Stable Diffusion、MidJourney),AI 输出的质量高度依赖输入的提示词。不同的人输入同样的问题,得到的答案可能天差地别。出现了一个新角色:提示词工程师(Prompt Engineer),甚至有公司开出年薪几…...

python日志记录之logging模块

logging模块是python中用于提供格式化输出的模块。...

O - Color a Tree

题意:任务是在一棵树状结构中以最小的成本完成所有节点的染色,如果要染一个节点那么他的父节点必须已经染过色。染色成本取决于节点的染色成本因子与染色时间。通过分析得出正确的染色策略,并给出了一种有效的算法实现。 错误的贪心策略:对于一个节点的子节点 染过这个结点…...

电脑时间改了,软件不能用了

软件突然不能用了,检查没什么问题,重装也查不出来毛病,想再卸载的时候,发现日期改成了几年前。 日期改正软件就好了。。。...

OFDM 自适应功率与比特分配

1. 要点场景:单用户 OFDM,频率选择性衰落,完美 CSI 目标:总功率约束下 最大化速率 或 总速率约束下 最小化功率 算法:注水(Water-Filling)——理论最优 Chow——次优,低复杂度 Hughes-Hartogs——贪婪,最优但慢输出:子载波功率、比特数、BER vs Eb/N0、容量曲线2. 结…...

前 k 小问题期末考

有意思P6646...

1380亿条微博全量数据集,可用于自然语言处理、情感分析、舆情分析、推荐系统、用户行为数据、商业智能、人工智能模型训练、中文文本数据、地理位置信息、时间序列分析、JSON格式、机器学习、文本挖掘等

引言与背景 在数字化时代,社交媒体数据已成为理解人类行为、社会趋势和语言演变的宝贵资源。微博作为中国最大的社交媒体平台之一,汇聚了亿万用户的真实表达,承载着丰富的社会信息和文化内涵。本数据集自2015年开始采集至今,累计收集了约1380亿条微博数据,为人工智能研究、…...

本土化技术平台的崛起:Gitee如何重塑中国开发者生态

本土化技术平台的崛起:Gitee如何重塑中国开发者生态 在数字化转型浪潮席卷全球的当下,中国开发者生态正经历着一场深刻的变革。作为这一变革的重要见证者和推动者,Gitee这一本土代码托管平台凭借其独特的本土化优势,正在重新定义中国开发者的工作方式。最新数据显示,Gitee…...

一次内网穿透的实践

博主还在上学,因为要经常跑一些仿真实验(实验需要在Linux系统下才能跑),而博主手里有两台台式主机: 1)实验室主机(windows系统,性能较弱) 2)宿舍主机(windows系统,性能较强) 但是由于老师经常派活所以本人大部分时间还是位于实验室的,这就导致大部分时间我都是利…...

m1芯片怎么安装windows系统

如何在M1芯片Mac上安装Windows系统 一、M1芯片与Windows系统的兼容性介绍 Apple M1芯片是苹果公司推出的首款专为Mac设计的基于Arm架构的处理器。它集成了CPU、GPU、神经网络引擎等组件,使得Mac电脑在性能、能效等方面有了显著提升。然而,由于M1芯片采用的是Arm架构,而Windo…...

m1оƬװx86windowsϵͳ

如何在M1芯片上安装x86 Windows系统 随着技术的不断进步,苹果公司推出的搭载M1芯片的Mac电脑凭借其出色的性能和能效比受到了广泛欢迎。然而,对于一些需要运行特定Windows应用程序的用户来说,如何在基于ARM架构的M1芯片上安装原本为x86架构设计的Windows系统成为了一个挑战。…...

C++ 强制类型转化

C++ 提供了四种显式强制类型转换运算符(static_cast、dynamic_cast、const_cast、reinterpret_cast),相比 C 风格的强制转换((类型)表达式),它们更具针对性、可读性和安全性,能让转换意图更清晰,且编译器可提供更严格的检查。 1、static_cast - 静态转换 用于编译器可在…...

Linux shred 命令:安全擦除文件指南

Linux shred 命令:安全擦除文件指南Linux 中的 shred 命令是一个用于​​安全删除文件​​的工具,它通过多次覆盖文件内容来确保数据难以恢复,非常适合处理敏感信息。下面我将为你详细解释这个命令的用法、注意事项以及典型应用场景。 🛡️ Linux shred 命令:安全擦除文件…...

研究生化学英文题库数据集:300万条LaTeX格式AI训练资源,覆盖有机化学物理化学无机化学分析化学,用于智能评估系统、个性化学习平台、化学知识图谱构建、自动化工具开发、深度学习模型

引言与背景 在当今人工智能技术飞速发展的时代,专业化学教育领域正面临着前所未有的变革机遇。化学作为一门基础性、应用性极强的学科,其教育质量的提升直接关系到国家科技创新能力和人才培养水平。然而,传统的化学教育模式在个性化学习、智能评估和知识体系构建方面仍存在诸…...

lvm硬盘分区与不分区优缺点

一、不分区,直接用整块硬盘创建 PV pvcreate /dev/sdb vgcreate myvg /dev/sdb 优点:简单快捷,少了一层分区表的管理。硬盘整个容量都能交给 LVM 管理,空间利用最大化。避免分区表损坏导致 LVM 无法识别的问题。缺点:硬盘完全交由 LVM 使用,不能轻易与其他用途(比如放一…...

中电金信能碳虚拟电厂数智化平台破局“双碳”难题

在国家“双碳”目标持续推进的背景下,零碳园区已成为实现碳达峰碳中和(“双碳”)的重要抓手。2023年《国家碳达峰试点建设方案》提出选取100个典型城市和园区试点;2024年中央经济工作会议首次提出建设一批“零碳园区”;2025年3月政府工作报告将“零碳园区”建设纳入年度重…...

充分验证用户需求和商业价值,是软件创业者首要解决的问题

引言 最近常混迹于各类创业和技术圈子,看到很多不错的产品,但痛苦的是,你几乎能预料到他们大部分都会很快陨落,这引起了我的思考。 软件创业的目的 软件创业驱动方式无非三种:一个兴趣驱动、二是使命感或成就感驱动,三是商业驱动。三者虽有不同,但其中有一个目的都是一样…...

国产DevOps工具链崛起:Gitee如何赋能企业数字化转型

国产DevOps工具链崛起:Gitee如何赋能企业数字化转型 在数字化转型的浪潮中,中国企业正面临前所未有的技术升级压力。随着国际形势变化和国内政策导向,构建自主可控的DevOps工具链已成为企业技术决策者的战略选择。Gitee作为国内领先的代码托管与DevOps平台,凭借其本地化服务…...

milvus创建一个用户管理多个库

1.创建用户export CLUSTER_ENDPOINT="http://localhost:19530" export TOKEN="root:Milvus"curl --request POST \ --url "${CLUSTER_ENDPOINT}/v2/vectordb/users/create" \ --header "Authorization: Bearer ${TOKEN}" \ --header &…...

为什么ceph新添加的硬盘会自动变为osd

您好!这是一个非常好的问题,也是 Ceph 运维中一个关键的特性。 根据您图片中的信息和您描述的现象(新硬盘会自动变为 OSD),​​根本原因在于 Ceph 集群(特别是 cephadm)的“自动化运维(Orchestrator)”功能默认是开启的,并且它有一个默认策略:自动识别和利用所有“可…...

Zabbix Proxy 技术实践与运维思考

在分布式监控体系中,Zabbix Proxy 是一个常被忽视但极具价值的组件。相比单点的 Zabbix Server,它更像是一座“前哨站”:在业务网络的前沿收集监控数据、缓存事件,并将结果按需汇聚到中心。本文将结合实际运维案例,深入探讨 Zabbix Proxy 的定位、部署要点与常见问题。 一…...

OF SF CF ZF 的判断方式以及例子

进位/借位标志CF,最高位有进位/错位时CF=1 零标志ZF,运算结果为0时,ZF=1 符号标志SF,运算结果为负,SF=1 溢出标志OF,运算结果有溢出,OF=1 OF(溢出)的判断: 二进制相加后,最高位与次高位异或。 例如 \[FFE8H +7FE6H=7FCEH \]\[1111 1111 1110 1000 +0111 1111 1110 0…...

2025年30个CRM系统盘点:哪款CRM系统适合你的企业? - SaaS软件

在数字化转型加速的2025年,客户关系管理(CRM)系统已成为企业提升竞争力的核心引擎。根据最新市场数据,全球CRM市场规模已突破1500亿美元,年复合增长率达15.3%,其中中国市场以28%的增速领跑全球。面对日益复杂的商业环境和客户需求,选择一款适合企业特性的CRM系统,已成为关…...

TSN Qav测试实践

1.前言我们在以往的文章中介绍了TSN相关的各个内容,包括《TSN(时间敏感网络)纯干货分享》、《TSN(Time-Sensitive Networking)时间敏感网络 协议导读:时间同步 | 延时 | 802.1Qav | 802.1Qch | 802.1Qbv | 802.1Qbu》、《基于TSN 802.1AS协议的时间同步分析(7种延时,1次…...

adobe illustrator中生成连续直角线段

001、工具栏选矩形工具 002、绘制一个矩形 003、鼠标切换到这里 004、 鼠标以横向拖动的方式选中一个边 005、键盘delete健删除 006、同样的方法删除下边这条边 。...

多重分形去趋势交叉相关性分析

多重分形去趋势交叉相关性分析(Multifractal Detrended Cross-Correlation Analysis, MF-DCCA) 1. 核心概念与理解 要理解MF-DCCA,我们最好将其拆解为几个部分:交叉相关性分析 (Cross-Correlation Analysis): 研究两个不同时间序列 \(x(i)\) 和 \(y(i)\) 之间在不同时间滞…...

智启燃气新未来丨众智鸿图精彩亮相2025燃气运营与安全研讨会 - 教程

智启燃气新未来丨众智鸿图精彩亮相2025燃气运营与安全研讨会 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New…...

燕千云ITR平台引领服务流管理革命,构建企业客户服务智慧生态

燕千云ITR平台提出服务流作为企业第四大管理命脉,通过智能化解决方案重塑客户服务价值链。该平台整合多渠道受理、三线协同支持及AI知识沉淀三大核心功能,实现从被动响应到主动价值创造的转变。 当企业对资金流、物流、信息流的管理已成标配,决定未来竞争力的"第四大命…...

WPF 容器尺寸行为总结

WPF 容器尺寸行为总结 在 WPF 中,布局容器的尺寸来源可以分为三类:一类:尺寸主要取决于 父容器的约束 → “父大则大,父小则小” 一类:尺寸主要取决于 子元素的大小 → “子大则大,子小则小” 一类:尺寸基本固定,不跟随父或子变化📌 常见容器的尺寸行为对比容器 尺寸…...

在adobe illustrator中如何插入大于、小于号

001、1-4步骤 002、double click 。003、 效果 。...

三分钟了解流量卡的选择

选一张好用又省心的流量卡,信号是根本,但背后还有几个关键细节——做好功课再办卡,不花冤枉钱!1️⃣ 信号质量是核心基础中国移动用户数最多(截至2025年3月末:9.83亿户),电信4.2亿户,联通4.81亿户。用户多通常代表基站更多、覆盖更好,尤其是在偏远或室内场景优势更明…...

SARIMA算法

SARIMA模型 SARIMA模型,全称为季节性自回归积分滑动平均模型(Seasonal Autoregressive Integrated Moving Average Model),是时间序列分析中的一种重要模型,用于处理具有明显季节性特征的数据。它在ARIMA模型的基础上,增加了季节性因素的考量,使得模型能够更好地捕捉和预…...

【IEEE出版|EI检索稳定】第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)

CBASE 2025旨在汇聚全球云计算、大数据、软件工程等计算机相关领域的顶尖学者与专业人士,打造一个高水平、国际化的学术交流平台,共同探讨最新研究进展与发展趋势。会议诚挚欢迎云计算、大数据、软件工程、网络安全、人工智能、计算机视觉、机器学习、智能计算等方向的专家学…...

Gitee推出革命性MCP Server:AI深度参与开发全流程 开启智能协作新时代

Gitee推出革命性MCP Server:AI深度参与开发全流程 开启智能协作新时代 在人工智能技术快速发展的当下,Gitee迈出了划时代的一步——正式发布官方MCP Server,将AI助手深度整合到软件开发全生命周期中。这一创新举措标志着代码托管平台从单纯的版本管理工具向智能开发平台的战…...

用机器语言实现循环

一般情况下实现循环 int result=0; for (int i=0;i<=100;i++){result +=1; }mov eax,0 #用eax保存result,初始值为0 mov edx,1 #用edx保存i,初始值为1 cmp edx,100 #比较i和100 if(i>100)如果大于一百就直接跳过 jg L2 #如果i>100跳转到L2 goto l2 L1: #循环主体…...

取证 - voasem

分类 内存取证 经常利用volatility分析取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,img命令 python3 vol.py -f [取证文件] 插件可以使用 -h…...

django对接drf-spectacular替代swagger

django对接drf-spectacular替代swagger 1.1、安装drf-spectacular pip install drf-spectacular pip install django-restframework1.2 配置 Django 设置 # settings.pyINSTALLED_APPS = [ # ... drf_spectacular, # 添加此项 rest_framework, # 确保 DRF 已添加 # ... ]REST_F…...

可画

https://www.canva.cn/...

Symbol VBRK: Invalid data type u SAP 事务成功新号码获取到 但是提交后提示失败如何处理

前几天用户提了个错误问题 Symbol "VBRK": Invalid data type "u" 提示说发票创建车工但是离开的时候报错 分析问题可能 增强失败 ST22检查没有讯息 今天经过更老的老师傅提示 SM14查看可能事务回滚了 赶紧查看了下 有错 点击 DEBUG发现是发票创建成功以…...

Oracle 19c asm单机OPatch补丁报错checkSystemCommandAvailable failed.

Oracle 19c asm单机OPatch补丁报错"checkSystemCommandAvailable" failed.一、OPatch Conflict Check As the Grid home user: % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/36916690/3691259…...