3、ARIMA序列预测Matlab代码、可视化(可做算法对比)

news2024/12/24 1:08:08

1、文件包中程序均收集、整理、汇总自网络。

2、文件包完整内容:

1)【ARIMA-功能函数】仅包含一个ARIMA算法函数,需要调用到自己的程序中使用

函数部分代码及预览图:

function [result] = ARIMA_algorithm(data, Periodicity, ACF_P, PACF_Q, n)
m1 = length(data);
%the number of raw data
for i = Periodicity+1:m1
    y(i-Periodicity) = data(i)-data(i-Periodicity);
end
%eliminating the periodicity
w = diff(y);
%first-order differential, for eliminating the Trending
m2 = length(w);
%the number of data after first-order differential
k = 0;
%the number of initial exploration models
for i = 0:ACF_P
    for j = 0:PACF_Q
        if i == 0 && j == 0
            continue
        elseif i == 0
            ToEstMd = arima('MALags',1:j,'Constant',0);
        elseif j == 0
            ToEstMd = arima('ARLags',1:i,'Constant',0);
        else
            ToEstMd = arima('ARLags',1:i,'MALags',1:j,'Constant',0);
        end
        %specify the structure of the model
        k = k+1;
        R(k) = i;
        M(k) = j;
        [EstMd, EstParamCov, logL, info] = estimate(ToEstMd,w');
        %model fitting
        numParams = sum(any(EstParamCov));
        %calculate the number of fitting parameters
        [aic(k), bic(k)] = aicbic(logL, numParams, m2);
    end
end

2)【ARIMA-时间序列分析-浓度数据预测】是根据浓度数据进行预测的完整程序

主函数部分代码及预览图:

%计算相关函数
r11=autocorr(a); %计算自相关函数
r12=parcorr(a); %计算偏自相关函数
da=diff(a); %数据不平稳所以计算 1 阶差分
r21=autocorr(da); %计算自相关函数
r22=parcorr(da); %计算偏相关函数
n=length(da); 
%模型的定阶p、q
u=iddata(da);
test=[];

原始数据集:

运行结果可视化:

3)【ARIMA-时间序列模型的讲解与matlab代码实现】

函数部分代码及文件预览图:

clear; 

P = sin(0.1:0.1:9.6);
F = sin(0.1:0.1:9);
 
%----------------------由于时间序列有不平稳趋势,进行两次差分运算,消除趋势性----------------------% 
for i=2:96 
    Yt(i)=P(i)-P(i-1); 
end 
for i=3:96 
    L(i)=Yt(i)-Yt(i-1); 
end 
L=L(3:96); 
Y=L(1:88); 

function [yhat , se ] = arimapred(y,phi,theta,d,mu,sa2,l)
% ARIMAPRED(Y,PHI,THETA,D,MU,SA2,L) Forecast ARIMA process
% INPUTS:
% y = observed data; n by 1
% phi = vector of AR coefficients; p by 1
% theta = vector of MA coefficients; q by 1
% d = order of differencing; 1 by 1 integer
% mu = mean of d times differenced y process; 1 by 1
% sa2 = variance of "shocks"; 1 by 1 and positive
% l = forecast lead time; 1 by 1 positive integer
% OUTPUTS:
% yhat = point forecasts; l by 1
% se = prediction standard deviations; 1 by 1
[n m ] = size(y);
z = y;
if d > 0
   for k = 1:d
      z = z(2:(n-k+1)) - z(1:(n-k));
   end
end

ARIMA简单序列的Matlab预测实例.PDF(Page67)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现YOLOv5封装成函数以供其他程序进行调用

import detect detect.UAPI(source"data/images") 通过在YOLOv5中的detect.py的代码中,对检测函数进行封装,之后其他代码通过已经封装好的函数进行调用,从而实现简单便捷的YOLOv5代码调用。 代码的主要修改部分就是如何detect.py…

pytest之parametrize()实现数据驱动

第一个参数是字符串,多个参数中间用逗号隔开 第二个参数是list,多组数据用元组类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应 传一个参数 pytest.mark.parametrize(‘参数名’,list)…

《从菜鸟到大师之路 ElasticSearch 篇》

《从菜鸟到大师之路 ElasticSearch 篇》 (一):ElasticSearch 基础概念、生态和应用场景 为什么需要学习 ElasticSearch 根据 DB Engine 的排名显示, ElasticSearch 是最受欢迎的 企业级搜索引擎 。下图红色勾选的是我们前面的系…

算法基础之二分查找

原题链接 一 、二分查找中的mid1和mid-1的问题 二分查找中的边界问题处理不好很容易导致死循环和计算错误的问题,以题目 数的范围为例。 题目大意 ​ 二分查找重复数第一次出现的位置和最后一次出现的位置。 数学含义 ​ 第一次位置即 找到 一个长度最大的 >X 区…

[代码解读] A ConvNet for the 2020s

代码地址:https://github.com/facebookresearch/ConvNeXt ConvNeXt/models/convnext.py整体的代码结构如下: 接下来我们一部分一部分来看。 1.Block类: class Block(nn.Module):r""" ConvNeXt Block. There are two equiva…

Redis集群架构搭建——主从、哨兵、集群

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。 本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别&a…

C++:list

目录 List的模拟实现 List节点类 List链表结构 List迭代器类 结构 T& operator*(); T& operator->(); Self& operator(); Self operator(int); Self& operator--(); Self& operator--(int); bool operator!(const Self& l); bool oper…

JDK、JRE 和 JVM 的区别和联系

三者关系 就这三者的关系而言,jvm是jre的子集,jre是jdk的子集,具体关系如下图: Java的执行流程 对于一个Java程序,其执行流程大致如下: 开发人员使用JDK编写和编译Java源代码,生成Java字节码文…

二叉树层序遍历及判断完全二叉树

个人主页:Lei宝啊 愿所有美好如期而遇 目录 二叉树层序遍历: 判断完全二叉树: 二叉树层序遍历: 层序遍历就是一层一层,从上到下遍历,上图遍历结果为:4 2 7 1 3 6 9 思路: 通过队列来实现层序…

lenovo联想笔记本电脑ThinkPad X13 AMD Gen2(20XH,20XJ)原装出厂Windows10系统镜像

联想原厂Win10系统,自带所有驱动、出厂主题壁纸、系统属性联想LOGO专属标志、Office办公软件、联想电脑管家等预装程序 链接:百度网盘 请输入提取码 提取码:dolg 适用于型号:20XL,20XJ,20XG,21A1,20XK,20XH,20XF,21A0 所需要…

1.vue3脚手架在vscode下面建立

一、下载安装node.js Node.js (nodejs.org) 二、安装vue3脚手架 #添加项目脚手架 npm install -g vue/cli 三、建立项目 #项目建立 vue create {appname} 测试项目安装成功:运行npm run serve命令 npm run serve 证明脚手架、项目环境已配置好 四、添加配件&#x…

5+非肿瘤+铁死亡+实验验证生信思路解析

今天给同学们分享一篇非肿瘤铁死亡实验验证的生信文章“Identification and validation of ferroptosis-related gene signature in intervertebral disc degeneration”,这篇文章于2023年2月6日发表在Front Endocrinol (Lausanne)期刊上,影响因子为5.2。…

Windows专业版的Docker下载、安装与启用Kubenetes、访问Kubernetes Dashboard

到Docker 官网https://www.docker.com/ 下载windows操作系统对应的docker软件安装 Docker Desktop Installer-Win.exe 2023-09版本是4.23 下载后双击安装 重启windows后,继续安装 接受服务继续安装 解决碰到的Docker Engine stopped 打开 控制面板》程序》启用或关…

Java-day15(Java常用类)

Java常用类 1.String类 public class test1 {/** String:代表不可变的字符序列,底层使用char[]存放* String是final的 * */Testpublic void test() {String str1 "Java EE";String str2 "Java EE";String str3 new String("…

用sublime测试正则表达式

1 打开sublime 2.使用ctrlf快捷键 3.开启如下功能 4.测试

什么是语法糖?Java中有哪些语法糖?

什么是语法糖?Java中有哪些语法糖? 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对…

【操作系统笔记十三】Shell脚本编程

什么是 shell shell 就是命令解释器,用于解释用户对操作系统的操作,比如当我们在终端上执行 ls ,然后回车,这个时候会由 shell 来解释这个命令,并且执行解释后的命令,进而对操作系统进行操作。 在 Centos…

初识软件工程

软件工程是一门涵盖软件开发、维护和管理的学科,它通过应用工程化的原则和方法来提高软件系统的质量和可靠性。在当今数字化和信息化的时代,软件工程对于现代社会的各个领域都具有至关重要的作用。 基本概念? 计算机系统中与硬件相互依存的一…

【力扣】300. 最长递增子序列 <动态规划>

【力扣】300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2…

Wiki.js - 下一代的开源Wiki软件

简介:在众多开源的Wiki软件中,Wiki.js无疑是一个独特且现代的选择。基于Node.js构建,使用了最新的Web技术,Wiki.js为用户提供了一个美观且功能丰富的界面,同时还保留了强大的扩展性和自定义性。无论你是为个人、团队或…