今天咱们聊聊用MATLAB玩时间序列预测的野路子。别被那些AR、ARIMA之类的缩写吓到,说白了就是找规律猜未来的游戏。直接上代码更实在,咱边写边唠

今天咱们聊聊用MATLAB玩时间序列预测的野路子。别被那些AR、ARIMA之类的缩写吓到,说白了就是找规律猜未来的游戏。直接上代码更实在,咱边写边唠

几种时间序列预测方法(MATLAB R2021B) 算法运行环境为MATLAB R2021B,执行几种时间序列预测方法,包括: 1) Autoregression (AR) 2) Moving Average 3) Autoregressive Moving Average 4) Autoregressive Integrated Moving Average (ARIMA) 5) Seasonal Autoregressive Integrated Moving-Average (SARIMA) 6) Seasonal Autoregressive Integrated Moving Average with Exogenous Regressors (SARIMAX) 7) Vector Autoregression (VAR) 8) GARCH Model 9) Glostan, Jagannathan and Runkle GARCH Model

先整点数据热身。假设手头有个股票收盘价序列,长度500天:

data = cumsum(randn(500,1)*0.5 + 0.01) + 50; % 带趋势的随机游走 plot(data) title('假装这是股票价格')

这串随机数生成器造的数据有微弱正趋势,标准差0.5,初始值50。cumsum让数据有持续性特征,符合金融时间序列特性。

AR模型实战

自回归的核心就是拿历史数据当预测依据。比如用前3天的数据预测明天:

Mdl = arima('ARLags',1:3); EstMdl = estimate(Mdl, data); [YF, YMSE] = forecast(EstMdl, 5, data); % 预测未来5天

这里'ARLags'参数指定滞后阶数,1:3表示用t-1,t-2,t-3时刻的值。estimate函数会返回模型参数估计值,注意MATLAB自动做了标准化处理。预测时YMSE是预测方差,可以画置信区间。

ARIMA进阶版

加上差分处理非平稳数据更带劲:

Mdl = arima(2,1,1); % AR阶2,差分阶1,MA阶1 EstMdl = estimate(Mdl, data); [YF, YMSE] = forecast(EstMdl, 5, 'Y0', data);

差分阶数1表示做一阶差分消除趋势。模型训练时注意看命令行输出的参数显著性,p值小于0.05的项才有保留价值。如果MA项系数不显著,可以降阶试试。

GARCH家族玩波动

几种时间序列预测方法(MATLAB R2021B) 算法运行环境为MATLAB R2021B,执行几种时间序列预测方法,包括: 1) Autoregression (AR) 2) Moving Average 3) Autoregressive Moving Average 4) Autoregressive Integrated Moving Average (ARIMA) 5) Seasonal Autoregressive Integrated Moving-Average (SARIMA) 6) Seasonal Autoregressive Integrated Moving Average with Exogenous Regressors (SARIMAX) 7) Vector Autoregression (VAR) 8) GARCH Model 9) Glostan, Jagannathan and Runkle GARCH Model

搞金融预测必须处理波动聚集现象:

Mdl = garch('GARCHLags',1,'ARCHLags',1); EstMdl = estimate(Mdl, diff(data)); % 对收益率建模 condVar = infer(EstMdl, diff(data)); % 提取条件方差 plot([diff(data), condVar]) legend('收益率','波动率')

这里用差分后的收益率数据,infer函数能提取波动率估计。GARCH(1,1)模型里,ARCH项反映新息冲击,GARCH项体现波动持续性。如果发现杠杆效应(跌的时候波动更大),可以升级到GJR-GARCH:

Mdl = gjr('GARCHLags',1,'ARCHLags',1,'LeverageLags',1); EstMdl = estimate(Mdl, diff(data));

多了个LeverageLags参数来捕捉不对称效应。回测时要注意,这类模型对参数初值敏感,可能需要多试几次初值设定。

多变量搞事情——VAR模型

当多个时间序列互相影响时:

data_multi = [data, randn(500,1)*2 + 5]; % 伪造第二个变量 Mdl = varm(2,2); % 两个变量,滞后2阶 EstMdl = estimate(Mdl, data_multi); [YF, YMSE] = forecast(EstMdl, 5, data_multi);

varm模型会自动估计变量间的交叉影响。注意数据要先做平稳性检验,可以用MATLAB的adftest做单位根检验。预测时输出的YF是矩阵,每列对应一个变量的预测值。

季节杀器SARIMA

处理像销售额这种有季节波动的:

Mdl = arima('ARLags',1:2,'D',1,'Seasonality',12,... 'MALags',1,'SMALags',12); EstMdl = estimate(Mdl, data);

这里设置季节周期为12(比如月度数据),Seasonality参数自动创建季节性差分。实际操作中要先用季节图判断周期长度,别瞎猜参数。可以用x13as工具做季节调整,再喂给模型。

代码跑完别急着收工,几个避坑指南:

  1. 预测前务必做残差诊断:用lbqtest检验自相关性
  2. 模型对比用AIC/BIC指标,别光看拟合误差
  3. 样本外预测要用滚动窗口验证,防止过拟合
  4. 用parfor加速参数寻优,特别是SARIMAX这种参数多的模型

说到底,时间序列预测就是平衡bias和variance的艺术。没有通吃所有场景的银弹,多备几把刷子,根据数据特征选兵器才是王道。下次遇到震荡市,不妨试试GARCH系模型;要是数据有明显周期规律,SARIMA可能更香。代码只是工具,理解数据内在逻辑才是真功夫。

Read more

论文阅读--Agent AI 探索多模态交互的前沿领域(一)

论文阅读--Agent AI 探索多模态交互的前沿领域(一)

这篇文章是近来介绍 Agent AI 非常全面的一篇综述,围绕多模态交互与通用人工智能(AGI)的发展需求展开,融合了学术研究积累、技术突破与行业应用诉求。整篇文章的结构如下: 摘要 多模态人工智能系统有望在我们的日常生活中普及。让这些系统具备更强交互性的一个有效途径,是将其作为智能体(Agent)嵌入物理与虚拟环境中。目前,现有系统以大型基础模型为核心构建模块来打造具象化智能体(embodied agents)。将智能体嵌入此类环境,能助力模型处理和解读视觉信息与上下文数据 —— 这对于开发更复杂、更具上下文感知能力的人工智能系统至关重要。例如,一个能够感知用户动作、人类行为、环境物体、音频表达及场景整体情绪的系统,可用于指导智能体在特定环境中做出合理响应。 为推动基于智能体的多模态智能研究,本文将 “智能体人工智能(Agent AI)” 定义为一类交互式系统:这类系统能够感知视觉刺激、语言输入及其他基于环境的数据,并能产生有意义的具象化动作。具体而言,我们探索的系统旨在通过整合外部知识、多感官输入和人类反馈,基于 “下一具象化动作预测” 来优化智能体性能。我们认为,通过在真实

FPGA验证利器:全方位解析AXI Verification IP (AXI VIP)

FPGA验证利器:全方位解析AXI Verification IP (AXI VIP)

【致读者】 您好!在深入本篇关于 AXI Verification IP (AXI VIP) 的技术细节之前,我们想与您分享一个更重要的信息。为方便同行交流,我创建了一个硬件技术交流群,群内聚焦: FPGA技术分享 实战问题讨论与答疑 行业动态与职业发展交流 若您对本专题感兴趣,欢迎私信我 “FPGA” 加入群聊 ———————————————— 一  引言 在复杂的FPGA系统中,AXI总线是连接各个IP核的“大动脉”。如何确保这片繁忙的交通网络高效、无误地运转?本文将带你深入探讨Xilinx官方出品的验证神器——AXI Verification IP (AXI VIP)。我们将通过实例解析其强大的协议检查与事务生成能力,为你构建一个清晰、系统的AXI VIP知识框架,为后续进行DDR3等高速接口的工程级验证打下坚实基础。 二 AXI VIP:为何是FPGA验证的“必需品”? 当我们对自定义的AXI主设备或从设备进行验证时,传统方法是手动编写测试平台(Testbench)。这种方式不仅效率低下,且极易因测试代码本身的错误而引入误导,更难以覆盖协议的所有边界情况

OpenClaw基础-3-telegram机器人配置与加入群聊

OpenClaw基础-3-telegram机器人配置与加入群聊 💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AI编程、AI自动化和自媒体。 Openclaw的优势是接入各种聊天工作,在前面的文章里,已经介绍了如何接入飞书。但之前我也提到了,飞书的最大的问题是请求多的限制,以及无法在非认证企业账号下面组建群聊。但这些限制另一个聊天工具可以打破,那就是Telegram,今天就跟大家分享一下,如果在OpenClaw里面接入Telegram。 第一步:Openclaw端配置 通过命令openclaw config,local→channels→telegrams 这里等待输入API Token,接下来我们去Telegram里面获取 第二步:Telegram端配置 1. 1. 在聊天窗口找到BotFather,打开对话与他私聊 2. 3. 然后再输入一个机器人,再输入一个账号名username,这里面要求以Bot或者Bot结尾,这个是全网的id,要 2. /newbot 来创建一个机器人,输入一个名字name

ROS2:无人机从 “能飞” 到 “会思考” 的全栈技术引擎 —— 深度拆解与落地指南(上)

前言 在无人机技术飞速迭代的今天,“飞得稳” 已不再是终极目标,工业巡检、农业植保、仓储物流、应急搜救等复杂场景,对无人机提出了 “自主定位、智能感知、协同作业” 的高阶要求。而 ROS2(Robot Operating System 2)作为新一代机器人操作系统,正成为无人机突破 “手动控制” 瓶颈、迈向 “自主智能” 的核心引擎。 很多开发者会困惑:飞控系统(如 PX4、ArduPilot)已能实现起飞、悬停、巡航,为何还要集成 ROS2?两者如何分工协作?不同场景下的硬件配置最低要求是什么?本文将从核心定位、飞控配合、协调底座能力、硬件 OS 最小要求、集成实战、典型场景六大维度,用通俗语言 + 海量表格,全方位拆解 ROS2