时间序列的ARIMA预测分析

news/2024/10/29 1:16:43/

测得某一地区一口井7年的地下水埋深数据,试预报第8年全年的地下水埋深。

 

1,平稳性检验

画原始序列图和自相关图

x=[9.40,8.81,8.65,10.01,11.07,11.54,12.73,12.43,11.64,11.39,11.10,10.85,...10.71,10.24,8.48,9.88,10.31,10.53,9.55,6.51,7.75,7.80,5.96,5.21,...6.39,6.38,6.51,7.14,7.26,8.49,9.39,9.71,9.65,9.26,8.84,8.29,...7.21,6.93,7.21,7.82,8.57,9.59,8.77,8.61,8.94,8.40,8.35,7.95,...7.66,7.68,7.85,8.53,9.38,10.09,10.59,10.83,10.49,9.21,8.66,8.39,...8.27,8.14,8.71,10.43,11.47,11.73,11.61,11.93,11.55,11.35,11.11,10.49,...10.16,9.96,10.47,11.70,10.10,10.37,12.47,11.91,10.83,10.64,10.29,10.34];
x=reshape(x',numel(x),1);
subplot(1,2,1);
plot(x)
title('原始数据图像');
subplot(1,2,2);
autocorr(x)
title('自相关函数图像');

画1阶12步差分序列图和自相关图

s=12;%周期
n=12;%预报数据个数
m1=length(x);
for i=s+1:m1y(i-s)=x(i)-x(i-s);
end
x1=diff(y);
m2=length(x1);
figure;
subplot(1,2,1);
plot(x1)
title('查分后序列图像');
subplot(1,2,2);
autocorr(x1)
title('自相关函数图像');

对差分后的序列进行平稳性检验

>> [h1,p1,adf,ljz]=adftest(x1)h1 =logical1p1 =1.0000e-03adf =-7.4926ljz =-1.9450

表示1阶12步差分后的数据是平稳的。

 

2.白噪声检验

yanchi=[6,12,18];
[H,pValue,Qstat,CriticalValue]=lbqtest(x1,'lags',yanchi);
fprintf('%15s%15s%15s','延迟阶数','卡方统计量','p值');
fprintf('\n');
for i=1:length(yanchi)fprintf('%18f%19f%19f',yanchi(i),Qstat(i),pValue(i));fprintf('\n');
end
           延迟阶数          卡方统计量             p值6.000000          11.831682           0.06583112.000000          38.603461           0.00012218.000000          46.794167           0.000227

p值小于0.1,说明数据不是白噪声序列,可以建立ARIMA模型。

 

3.模型识别(AIC\BIC准则)

x1=x1';
LOGL=zeros(6,6);
PQ=zeros(6,6);
for p=0:5for q=0:5model=arima(p,0,q);[fit,~,logL]=estimate(model,x1);  %指定模型的结构LOGL(p+1,q+1)=logL;PQ(p+1,q+1)=p+q;  %计算拟合参数的个数end
end
LOGL=reshape(LOGL,36,1);
PQ=reshape(PQ,36,1);
[aic,bic]=aicbic(LOGL,PQ+1,m2);
fprintf('AIC为:\n');
reshape(aic,6,6)
fprintf('BIC为:\n');
reshape(bic,6,6)
AIC为:ans =210.6009  210.6412  206.1356  207.7248  208.0342  206.3506211.8987  203.2963  205.0547  208.4185  209.4344  205.0287205.7454  206.9559  208.8862  200.6190  207.4144  203.4940206.5786  208.2715  206.8524  196.0960  198.6505  204.3130208.4827  210.1279  200.9564  197.4272  197.1011  199.0800207.5084  209.4810  197.2431  199.0064  196.3561  186.3381BIC为:ans =212.8636  215.1666  212.9237  216.7755  219.3476  219.9266216.4240  210.0844  214.1055  219.7319  223.0105  220.8675212.5335  216.0066  220.1996  214.1951  223.2531  221.5954215.6293  219.5849  220.4284  211.9347  216.7519  224.6771219.7961  223.7040  216.7951  215.5286  217.4652  221.7068221.0844  225.3197  215.3446  219.3705  218.9829  211.2275

寻找使AIC\BIC值最小的p值和q值(p、q值越小越好)

得p=q=1

 

4.模型估计

p=input('输入阶数p=');
q=input('输入阶数q=');
model=arima(p,0,q);  %指定模型的结构
m=estimate(model,x1);  %拟合参数
输入阶数p=1
输入阶数q=1ARIMA(1,0,1) Model (Gaussian Distribution):Value      StandardError    TStatistic      PValue  ________    _____________    __________    __________Constant    -0.12332       0.21876        -0.56371        0.57295AR{1}       -0.72233       0.10787         -6.6964     2.1366e-11MA{1}        0.99639      0.060558          16.454     7.9052e-61Variance     0.94265       0.12861          7.3298     2.3048e-13

可得模型结构为

(1-B)(1-B^{12})(x_{t}+0.12332)=\frac{1-0.99639}{1+0.72233B}\varepsilon _{t}

 

5.模型检验

对残差序列进行白噪声检验

z=iddata(x1);
ml1=armax(z,[p,q]);
e=resid(ml1,z);  %拟合做残差分析
[H,pValue,Qstat,CriticalValue]=lbqtest(e.OutputData,'lags',6)
H =logical0pValue =0.3979Qstat =6.2303CriticalValue =12.5916

说明残差是白噪声序列。

 

6.运用模型进行预测

[yf,ymse]=forecast(m,n,'Y0',x1);
yhat=y(end)+cumsum(yf);  %求y的预报值
for j=1:nx(m1+j)=yhat(j)+x(m1+j-s);  %求x的预测值
end
xhat=x(m1+1:end)
xhat =10.32189.773310.411711.42569.85849.981412.064311.393310.27029.98809.58139.5490

此即为预测的第8年全年的数据。


http://www.ppmy.cn/news/190347.html

相关文章

利用JVM在线调试工具排查线上问题(超实用)

点击上方“后端技术精选”,选择“置顶公众号” 技术文章第一时间送达! 来源:牛哥的博客 cnblogs.com/nxlhero/p/11660854.html 在生产上我们经常会碰到一些不好排查的问题,例如线程安全问题,用最简单的threaddump或者h…

360环视辅助驾驶硬件系统方案---OV2715+DS90UB913+DS90UB914+FPGA

1、前置摄像头 高级驾驶员辅助系统中的摄像头系统可以分析视频内容,以便提供车道偏离警告(LDW)、自动车道保持辅助(LKA)、远光灯/近光灯控制和交通标志识别(TSR)。在前视黑白摄像头中&#xff…

jsp java json解析,jsp中获取json字符串,并解析

JqueryDemo1 function showData() {var str={ "name": "John" };//json标准格式 var obj = eval(( + str + )); alert( obj.name); var str2="{ name: John }"; var obj2 = eval(( + str2 + )); alert( obj2.name); var str3={"GetUserPost…

HIT 2715 Matrix3(最大费用最大流)

Matrix3 My Tags (Edit) Source : bin3 Time limit : 5 sec Memory limit : 64 M Submitted : 302, Accepted : 74 Zhouguyue is a "驴友" and nowadays he likes traveling on an N * N matrix with a non-negative number in each grid, and each grid has a…

Ubuntu 18.04 cuda 9.0 双1080TI 只显示一张

追加:【已解决,有一张显卡硬件不稳定】 参考我的最终记录: https://blog.csdn.net/u012911347/article/details/82854018 这又是一篇关于cuda和nvidia的博客,暂时解决了显卡就只显示一张和cuda无法使用的问题。 如果你想了解更…

dell服务器接2k显示器,4K、2K已成主流DELL高分辨率显示器推荐

【IT168 资讯】高分辨率显示器的推出,让人们的视觉体验提升到了新的层次。而高分辨率显示器如今也正在从专业市场定位逐渐走进日常用户家中。目前,市面上可见到的桌面显示器的分辨率虽然已经达到5K,不过,如此之高的分辨率要普及还需时日,所以有着高分辨率需求的用户不如更…

hoj 2715 (费用流 拆点)

http://acm.hit.edu.cn/hoj/problem/view?id2715 将每个格子 i 拆成两个点 i’, i’’并加边(i’, i’’, 1, -Vi), (i’, i’’, ∞, 0), (s, i’, ∞, 0); 控制只有一次能取到宝物。 对相邻的四个格子 j, Hi > Hj 则加边(i’’, j’, ∞, 0); 若格子 i 在边界上则加边(i’…

HarmonyOS/OpenHarmony按键设备键值

按键设备键值。 作者:坚果整理,欢迎大家加入坚果组织一起学习HarmonyOS/OpenHarmony应用开发 导入模块 import {KeyCode} from @ohos.multimodalInput.keyCode;KeyCode 按键键码值。 名称值说明KEYCODE_FN0功能(Fn)键KEYCODE_UNKNOWN-1未知按键KEYCODE_HOME1功能(Home…