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

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型


版本更新:

2023/7/29版本:
1.增加自定义参数,方便直接套数据运行。

pre_num=3;%预采样数据个数
learn_pr=0.85;  %训练数据比例(不包括预采样数据)
mm=pre_num;%输入响应数据个数    
nn=pre_num;%输出响应数据个数   

2.增加ARIMAX模型参数自动选择功能
(1)可手动选择ADF或者KPSS平稳性检验方式
存在不足:目前无法解决D>0的问题,所以优先选择D=0的检验方法,本文选用KPSS检验
[p, d, q ] = fit_model( Y,learn_num, test_num );
(2)检验p、d、q是否满足后续正常运行条件

if pre_num>=p+ddisp('--------------------------------------------');fprintf('ARIMAX(%d, %d, %d)满足运行要求', p, d, q);
elsedisp('--------------------------------------------');fprintf('ARIMAX(%d, %d, %d)不满足运行要求,', p, d, q);disp('请增大pre_num预采样数值');
end

3.增加参数评估结果(命令行窗口展示)

最优模型参数为:ARIMAX (2, 0, 0)
ARIMAX(2,0,0) Model (Gaussian Distribution)Effective Sample Size: 53Number of Estimated Parameters: 7LogLikelihood: -164.451AIC: 342.901BIC: 356.693Value     StandardError    TStatistic    PValue______    _____________    __________    ______Constant    -25.21        10.11          -2.49        0.01 AR{1}         0.30         0.08           3.63        0.00 AR{2}        -0.06         0.06          -1.01        0.31 Beta(1)       3.24         0.32          10.27        0.00 Beta(2)       0.00         0.00           3.21        0.00 Beta(3)       1.92         0.58           3.31        0.00 Variance     29.01         7.63           3.81        0.00 

4.增加置信区间绘图及评价(默认95%,可自行调整)
在这里插入图片描述

picp2 = PICP (ci, Y(end-test_num+1:end));
pimw2 = PIMWP(ci, Y(end-test_num+1:end));
disp(['测试集的区间覆盖率为:', num2str(picp2), '。区间平均宽度百分比为:', num2str(pimw2)])
测试集的区间覆盖率为:1。区间平均宽度百分比为:3.212

版本不足:

1.未解决D>0的问题,即只能处理通过检验方法判定的平稳的时间序列数据。
2.p、q筛选区间最大值目前只能为2,且缺少d结果的选择(d通过平稳性检验提前确定)。



一、简要介绍

  1. ARMAX模型相比ARMA考虑了影响因素 ,即可以实现基于时间序列数据的回归预测。
  2. 目前,ARMAX预测未来功能存在困难,本篇文章不予介绍。大致思路需要通过时间滞后构造数据,使前时间段的X预测后时间段的Y,即多步预测。
  3. 此示例展示如何将时间序列中的时间划分为预采样期T0、训练期Ty和预测期Tf,并显示了如何提供适当数量的观测值来初始化用于估计和预测的动态模型。
  4. 通过定义ARMA模型中的参数,可实现ARIMAX和SARIMAX模型。本文介绍最基础的ARMAX模型。
    在这里插入图片描述

二、导入数据

  1. 本篇文章案例数据采用3输入1输出,62个样本(1962-2023年)。
  2. 本文用table格式打开,方便对时间进行处理。
clear all
data=readtable('数据集.xlsx');
DataTable = table2timetable(data);%将DataTable转换为时间表。
varnames = ["Y" "X1" "X2" "X3" ];
Tbl = rmmissing(DataTable(:,varnames));%通过应用列表删除从数据中删除所有前导NaN。
T = size(Tbl,1) %总样本量
Y = Tbl.Y; %因变量
X = Tbl{:,varnames(2:end)};%变量

在这里插入图片描述

三、建立模型

为了训练和预测模型,估计必须有足够的预采样数据来初始化自回归项,同样,要从训练模型中预测,预测必须有足够的预采样样本。
此外,预测期中的回归分量需要预测历史数据或未来的预测数据Y,那么需要有与之对应的X,不然无法预测未来。

  1. 本文考虑一个ARMAX(1,2)模型,该模型以X1、X2、X3为外生变量,预测Y。
  2. 将样本的时间线划分为预采样、训练和预测时段。将模型拟合到训练样本,并使用预采样数据来初始化自回归项。然后,根据训练模型对Y进行预测。
  3. 指定预采样数据,以初始化自回归项。一般预采样数据个数为Mdl.P,因为p在之前就设置好了,所以手动设置为1。 -
  4. 指定训练数据,选择2-56作为训练数据。输入数据XEst则为X2-X56,输出为Y2-Y56
  5. 指定预测数据,57-62共6个数据进行测试。输入数据则为X57-X62,输出为Y57-Y62
idxpresample = 1;%预采样数据y0es个数,1
idxestimate = 2:56;%训练数据yest 个数,55
idxforecast = 57:T;%预测数据个数 ,6
  1. 建立ARMAX(1,2)模型
Mdl = arima(1,0,2); % P D Q
%ARIMAX(1,0,2) Model (Gaussian Distribution)
Effective Sample Size: 55
Number of Estimated Parameters: 8
LogLikelihood: -162.152
AIC: 340.303
BIC: 356.362Value     StandardError    TStatistic    PValue______    _____________    __________    ______Constant    -28.86        12.92          -2.23        0.03 
AR{1}         0.20         0.05           4.02        0.00 
MA{1}         0.65         0.16           4.19        0.00 
MA{2}         0.05         0.18           0.31        0.76 
Beta(1)       3.42         0.28          12.37        0.00 
Beta(2)       0.00         0.00           3.19        0.00 
Beta(3)       1.96         0.76           2.57        0.01 
Variance     21.30         5.16           4.13        0.00 
  1. 在训练样本结束时指定必要的观测值作为样本前数据进行预测,需指定训练期的数据,且数据个数至少为1,本文取两个,即训练输入的最后2个值X55-X56和训练输出的最后2个值Y55-Y56。
  2. 预测数据,假设预测的数量为M,则M必须小于等于XF的个数,不然无法运行。本文指定M=6,预测期的输入变量XF为X57-X62。
 [yf,ymse] = forecast(Mdl,M);
  1. 置信区间预测
ci = yf + 1.96*[-sqrt(ymse) sqrt(ymse)];
  1. 绘图。因年份较多,故只展示后面一半的数据。
yrs = year(Tbl.Time(round(T/2):end));%绘制后半部分的响应数据和预测。figure;
plot(yrs,Tbl.Y(round(T/2):end),"b","LineWidth",2);
hold on
plot(yrs(end-size(idxforecast,2)+1:end),yf,"r--","LineWidth",2);
h = gca;
px = yrs([end - size(idxforecast,2)+1 end end end - size(idxforecast,2)+1]);
py = h.YLim([1 1 2 2]);
hp = patch(px,py,[0.9 0.9 0.9]);
uistack(hp,"bottom");
axis tight
title("ARMAX模型");
legend(["预测区段" "实际值" "预测值"])

四、效果展示

在这里插入图片描述

五、代码获取

后台私信回复“60期”即可获取下载方式。

相关文章:

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型

【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型 版本更新: 2023/7/29版本: 1.增加自定义参数,方便直接套数据运行。 pre_num3;%预采样数据个数 learn_pr0.85; %训练数据比例(不包括预采样数…...

Vue 常用指令 v-on 自定义参数,事件修饰符

自定义参数就是可以在触发事件的时候传入自定义的值。 文本框,绑定了一个按钮事件,对应的逻辑是sayhi,现在无论按下什么按钮都会触发这个sayhi。但是实际上不是所有的按钮都会触发,只会限定某一些按钮,最常见的按钮就…...

重要通知|关于JumpServer开源堡垒机V2版本产品生命周期的相关说明

JumpServer(https://github.com/jumpserver)开源项目创立于2014年6月,已经走过了九年的发展历程。经过长期的产品迭代,JumpServer已经成为广受欢迎的开源堡垒机。 JumpServer堡垒机遵循GPL v3开源许可协议,是符合4A&a…...

下载快 kaggle output

下载快 kaggle output 文档:下载快 kaggle output.note 链接:http://note.youdao.com/noteshare?id0e89033f5675252add0a39ee97b6f060&sub63D673D0AD224FC581CC30627B4E2ED8 添加链接描述 但是 数据集下载慢 input 里面下载数据集 也是慢的 数据集…...

结构型设计模式-1.代理设计模式

结构型设计模式-1.代理设计模式 结构型设计模式:利用类与类之间的关系(继承、组合),形成一种类与类之间的结构,通过这种结构提高代码的可拓展性、可维护性和可重用性。 一、简介 代理设计模式(Proxy Des…...

Python(四十九)获取列表指定元素的索引

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...

年轻人的第一套海景房

前段时间新房装修,我把书房设计成工作室的风格,并自己装配了一台电脑,本文是对电脑选购与装配的一则经验贴,仅包含我对计算机硬件的浅薄理解。 配件选购 装机契源 事实上,很多电脑店都提供装配和测试服务&#xff0c…...

Vue输入内容/链接生成二维码

方式一&#xff1a;qrcode&#xff08;无 icon 图标&#xff09; npm i qrcodejs2 --save完整代码 <template><div class"flex-box"><div>qrcode&#xff08;无 icon 图标&#xff09;</div><div class"qr-code" ref"qrCo…...

使用langchain与你自己的数据对话(二):向量存储与嵌入

之前我以前完成了“使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割”这篇博客&#xff0c;没有阅读的朋友可以先阅读一下&#xff0c;今天我们来继续讲解deepleaning.AI的在线课程“LangChain: Chat with Your Data”的第三门课&#xff1a;向量存储与嵌入。 …...

No105.精选前端面试题,享受每天的挑战和学习

文章目录 手写new手写Mapget和post区别发起post请求的时候&#xff0c;服务端是怎么解析你的body的&#xff08;content-type&#xff09;&#xff0c;常见的content-type都有哪些&#xff0c;发文件是怎么解析的&#xff08;FormData&#xff09;&#xff0c;如果多个文件&…...

【计算机网络】第 3 课 - 计算机网络体系结构

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、常见的计算机网络体系结构 2、计算机网络体系结构分层的必要性 2.1、物理层 2.2、数据链路层 2.3、网路层 2.4、运输层 2…...

精细呵护:如何维护自己的电脑,提升性能和寿命

导语&#xff1a; 在当今数字化时代&#xff0c;电脑已经成为我们日常生活和工作的必需品。然而&#xff0c;就像任何其他设备一样&#xff0c;电脑需要得到适当的维护和保养&#xff0c;以保持良好的性能和延长使用寿命。在本文中&#xff0c;我们将分享一些简单而有效的方法&…...

DevOps-Jenkins

Jenkins Jenkins是一个可扩展的持续集成引擎&#xff0c;是一个开源软件项目&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 官网 应用场景 场景一 研发人员上传开发好的代码到github代码仓库需要将代码下载nginx服务器部署手动下载再…...

Jasper裁员,成也GPT,败也GPT

大家好&#xff01; 我是老洪。 今天来聊一聊人工智能(artificial intelligence)&#xff0c;简称AI。 当前的AI可谓是热火朝天&#xff0c; 自从ChatGPT发布以来&#xff0c;引起了广泛的关注和热情&#xff0c; 许多公司和研究者都试图将其应用于自己的产品或研究中。 按理说…...

安卓开发后台应用周期循环获取位置信息上报服务器

问题背景 最近有需求&#xff0c;在APP启动后&#xff0c;退到后台&#xff0c;还要能实现周期获取位置信息上报服务器&#xff0c;研究了一下实现方案。 问题分析 一、APP退到后台后网络请求实现 APP退到后台后&#xff0c;实现周期循环发送网络请求。目前尝试了两种方案是…...

为什么你的独立站有流量没转化?如何做诊断检查?

新店的创业初期&#xff0c;即使网站有流量&#xff0c;但是销售额为零的情况也常有发生。如果你确定流量是高质量的&#xff0c;寻找阻止潜在客户购买的具体因素可能会感到困难重重。 从“立即购买”按钮的色彩选择这样的细节&#xff0c;到构建品牌故事这样的大计划&#xf…...

【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程

【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程 文章目录 【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程前言确定版本对应关系源码编译安装Pytorch3d总结 前言 本人windows10下使用【Code for Neural Reflectance Surfaces (NeRS)】算法时需要搭…...

【算法和数据结构】257、LeetCode二叉树的所有路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;首先看这道题的输出结果&#xff0c;是前序遍历。然后需要找到从根节点到叶子节点的所有路径&#xff…...

yolov5的后处理解析

由于最近实习项目使用到了yolov5&#xff0c; 发现对yolov5的后处理部分不太熟悉&#xff0c;为防止忘记&#xff0c;这里简单做个记录。 在yolov5里&#xff0c;利用FPN特征金字塔&#xff0c;可以得到三个加强特征层&#xff0c;每一个特征层上每一个特征点存在3个先验框&am…...

Java中注解应用场景

1.Parameter注解 Parameter(names "-browser", description "browser name, supported scope [chrome]", required true) Param注解的用法解析_parameter_fFee-ops的博客-CSDN博客 Public User selectUser(param(“userName”) String name, param(“…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...