ARMA_Forecast_Diff.zip

  • PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2021-03-09 21:02
    上传日期
ARMA模型一步预测,实现数据的建模,可直接运行
ARMA_Forecast_Diff.zip
  • ARMA_Forecast_Diff.m
    2.6KB
内容介绍
%% 进行预测的程序 % 知乎专栏中的单步预测代码。为脚本文件,可以直接运行。 % Copyright (c) 2019 Mr.括号 All rights reserved. % 原文链接 https://zhuanlan.zhihu.com/p/69630638 % 代码地址:https://github.com/KuoHaoJun/ARMA %% 1.导入数据 close all clear all data=csvread('132.txt'); %纳斯达克综合指数 len = 1200; data = DataTable.NASDAQ(1:len); plot(data) %% 2.平稳性检验 % 原数据 y_h_adf = adftest(data) y_h_kpss = kpsstest(data)% 一阶差分,结果平稳。如果依旧不平稳的话,再次求差分,直至通过检验 Yd1 = diff(data); yd1_h_adf = adftest(Yd1) yd1_h_kpss = kpsstest(Yd1) Y = diff(data); %% 3.确定ARMA模型阶数 % ACF和PACF法,确定阶数 figure autocorr(Y) figure parcorr(Y) % 通过AIC,BIC等准则暴力选定阶数 max_ar = 3; max_ma = 3; % [AR_Order,MA_Order] = ARMA_Order_Select(Y,max_ar,max_ma,1); %% 4.残差检验 Mdl = arima(AR_Order, 1, MA_Order); %第二个变量值为1,即一阶差分 EstMdl = estimate(Mdl,data); [res,~,logL] = infer(EstMdl,data); %res即残差 stdr = res/sqrt(EstMdl.Variance); figure('Name','残差检验') subplot(2,3,1) plot(stdr) title('Standardized Residuals') subplot(2,3,2) histogram(stdr,10) title('Standardized Residuals') subplot(2,3,3) autocorr(stdr) subplot(2,3,4) parcorr(stdr) subplot(2,3,5) qqplot(stdr) % Durbin-Watson 统计是计量经济学分析中最常用的自相关度量 diffRes0 = diff(res); SSE0 = res'*res; DW0 = (diffRes0'*diffRes0)/SSE0 % Durbin-Watson statistic,该值接近2,则可以认为序列不存在一阶相关性。 %% 5.预测 step = 300; [forData,YMSE] = forecast(EstMdl,step,'Y0',data); %matlab2019写为[forData,YMSE] = forecast(EstMdl,step,data); lower = forData - 1.96*sqrt(YMSE); %95置信区间下限 upper = forData + 1.96*sqrt(YMSE); %95置信区间上限 figure() plot(data,'Color',[.7,.7,.7]); hold on h1 = plot(length(data):length(data)+step,[data(end);lower],'r:','LineWidth',2); plot(length(data):length(data)+step,[data(end);upper],'r:','LineWidth',2) h2 = plot(length(data):length(data)+step,[data(end);forData],'k','LineWidth',2); legend([h1 h2],'95% 置信区间','预测值',... 'Location','NorthWest') title('Forecast') hold off % 上述从2~5步程序可以使用一行封装好的函数程序实现: % Fun_ARIMA_Forecast(data,300,3,3,'on') % -该函数程序可以快速实现你想要完成的预测 % -可以通过输入原始数据、预测步数等直接获得预测结果 % -将使用ARIMA进行预测的过程中的大部分工作都固化下来 % -有实现多步预测、单步预测、剩余寿命预测的demos。 % -可以得到更高阶的模型 % -简易式调用,适合小白入手 % -持续更新 % 获需取该封装好的的代码及相关程序可以看这里:https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.49ab4831rm8DbS&id=612059653145 % 关于该工具更多的描述在这里:http://www.khscience.cn/docs/index.php/2020/04/19/123/
评论
    相关推荐