首页 > 其他分享 >区间预测 | Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测

区间预测 | Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测

时间:2024-09-29 22:18:48浏览次数:3  
标签:密度估计 end KDE TempData ARIMA test 区间 SaveDiffData data

目录

效果一览

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基本介绍

1.Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测,ARIMA的核密度估计下置信区间预测。
2.含点预测图、置信区间预测图、核密度估计图,区间预测(区间覆盖率PICP、区间平均宽度百分比PINAW),点预测多指标输出(MAE、MAPE、RMSE、 MBE、R2),单个变量时间序列区间预测。
3.运行环境为Matlab2018b及以上;
4.单个变量时间序列区间预测;
5.data为数据集,ARIMA_KDE.m为主程序,运行即可,所有文件放在一个文件夹。

在这里插入图片描述

程序设计

  • 完整程序和数据获取方式:私信博主回复Matlab实现ARIMA-KDE的时间序列结合核密度估计区间预测

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

clc;clear;
warning off all
data=xlsread('data.xlsx');
%预报步长
step=6;
TempData=data;
  output=data;
%去趋势线
TempData=detrend(TempData);  
%趋势函数
TrendData=data-TempData;
%差分,平稳化时间序列
[H,PValue,TestStat,CriticalValue] = adftest(TempData);
difftime=0;
SaveDiffData=[];
while ~H
    %差分,平稳化时间序列
    SaveDiffData=[SaveDiffData,TempData(1,1)];
    TempData=diff(TempData);
    %差分次数
    difftime=difftime+1;
    %adf检验,判断时间序列是否平稳化
    [H,PValue,TestStat,CriticalValue] = adftest(TempData);
end
%模型定阶或识别
test = [];
%自回归对应PACF,给定滞后长度上限p和q
for p = 0:5 
    %移动平均对应ACF
    for q = 0:5
        if(p + q ~= 0) 
            m = armax(TempData,[p q]);
            %armax(p,q),计算AIC
            AIC = aic(m);  
            test = [test;p q AIC];
        end
    end
end
for k = 1:size(test,1)
    %选择AIC值最小的模型
    if test(k,3) == min(test(:,3)) 
        p_test = test(k,1);
        q_test = test(k,2);
        break;
    end
end
%armax(p,q),[p_test q_test]对应AIC值最小
m   = armax(TempData,[p_test q_test]);       
ARIMA_Predict   = predict(m,TempData,step);
ARIMA_Forcast   = forecast(m,TempData,step);
PreR=[ARIMA_Predict' ARIMA_Forcast'];
%还原差分
if size(SaveDiffData,2)~=0
    for index=size(SaveDiffData,2):-1:1
        %差分还原
        PreR=cumsum([SaveDiffData(index),PreR]);
    end
end


参考资料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

标签:密度估计,end,KDE,TempData,ARIMA,test,区间,SaveDiffData,data
From: https://blog.csdn.net/kjm13182345320/article/details/142644967

相关文章

  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II 、区间和、开发
    209.长度最小的子数组此题注重理解,同时我将res一开始初始化为sums的长度加一(因为不可能为此长度)INT32_MAX是一个常量,代表32位有符号整数的最大值classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){inti=0,j=0;//i为起始位置,j为......
  • 区间质数搜索——埃拉托斯特尼筛法和欧拉筛法
    参考资料【中国大学生计算机设计大赛国赛二等奖微课与教学辅助《埃拉托斯特尼筛法》】【中国大学生计算机设计大赛《素数筛选—欧拉线性筛选法详解》】Eratosthenes筛法-CSDN博客【算法/数论】欧拉筛法详解:过程详述、正确性证明、复杂度证明-CSDN博客水平有限,欢迎交流!练习题......
  • 合并区间
    对下面的区间进行合并,实例如下:输入:intervals=[[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间[1,3]和[2,6]重叠,将它们合并为[1,6].解决问题的思路:(1)先将区间进行排序(按左区间的大小)(2)遍历整个list,如上面所示:如果3>2,就更新3为6,然后依次遍历,如果不满......
  • abc367F 判断区间构成的多重集合是否相同
    给定长度为N的两个数组A[i]和B[i],有Q组询问,每次给定(l[i],r[i],L[i],R[i]),问由A[l[i]]A[r[i]]构成的multiset,与B[L[i]]B[R[i]]构成的multiset是否相同?范围:1<=N,Q<=2E5,1<=A[i],B[i]<=N,1<=l[i]<=r[i]<=N,1<=L[i]<=R[i]<=N分析:将int映射为u64,因为集合不区分先后,而加法满足交换......
  • P6292 区间本质不同子串个数
    Solution与“区间本质不同回文子串个数”类似,但没有等差数列那样优美的性质了……下面是一个更通用的做法。考虑移动一次右端点\(r\),就相当于把parent树上一条到根链的lastendpos设为\(r\).把这个看成access操作.考虑用LCT维护parent树的链,维护一个性质:一条实链......
  • PHP获取一些常用时间区间(本周、本月、本季度、今年,上周、上月、上季度、去年)
    /***@notes:获取快捷时间*@returnarray*@author:lavender*@time:2024/7/2315:36*/publicfunctiongetShortcutsTimeArea(){$arr=[];$timezone=new\DateTimeZone('PRC');$dateti......
  • 代码随想录算法训练营第一天 | 209. 长度最小的子数组 59. 螺旋矩阵 58. 区间和 Java
    209.长度最小的子数组题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/description/解题思路思路1:暴力解法通过两个for循环,找出所有的可能的区间,并比较出最小区间思路2:滑动窗口因为需要找出的是连续的一个子数组,所以可以模拟一个从左到右滑动的一个......
  • opencascade Bnd_Range源码学习区间计算
    opencascadeBnd_Range前言这个类描述了由两个实数值限定的1D空间中的区间。一个区间可以是无效的,这表示区间中不包含任何点。方法1默认构造函数。创建一个无效区间。Bnd_Range();2构造函数。创建最小最大值区间Bnd_Range(constStandard_RealtheMin,constStandar......
  • 汇总区间
    给定一个有序的list,需要根据数据的连续性进行区间的汇总实例如下: 解决方法:设置左右指针,固定左指针,当右指针对应的数+1=右指针+1对应的数and 右指针不要越界,就移动右指针,直到跳出while,并更新左指针=右指针+1classSolution(object):defsummaryRange......
  • 58. 区间和(第九期模拟笔试)
    中秋节摆了一天,感觉畏难情绪一直困扰着我,要好好调制状态才行。#include<iostream>#include<vector>usingnamespacestd;intmain(){intn=0;cin>>n;vector<int>sum(n,0);for(inti=0;i<n;++i){intnum;cin>>......