/
ARIMA.m
277 lines (247 loc) · 11.9 KB
/
ARIMA.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
%% ARIMA NASDAQ
load('NDX.mat');
y = NDX;
T = length(y);
t = (1:T);
ly = log(y);
K = (0:20)';
%% Stima modelli ARIMA
%ARIMA(1,1,0)
Mdl = arima(1,1,0); % definizione del modello ARIMA(1,1,0)
EstMdl10 = estimate(Mdl,ly); % stima del modello definito sui dati della serie storica
res10 = infer(EstMdl10,ly);
% ARIMA(0,1,1)
Mdl = arima(0,1,1);
EstMdl01 = estimate(Mdl,ly);
res01 = infer(EstMdl01,ly);
% ARIMA(1,1,1)
Mdl = arima(1,1,1);
EstMdl11 = estimate(Mdl,ly);
res11 = infer(EstMdl11,ly);
% ARIMA(2,1,0)
Mdl = arima(2,1,0);
EstMdl20 = estimate(Mdl,ly);
res20 = infer(EstMdl20,ly);
% ARIMA(0,1,2)
Mdl = arima(0,1,2);
EstMdl02 = estimate(Mdl,ly);
res02 = infer(EstMdl02,ly);
% ARIMA(2,1,1)
Mdl = arima(2,1,1);
EstMdl21 = estimate(Mdl,ly);
res21 = infer(EstMdl21,ly);
% ARIMA(1,1,2)
Mdl = arima(1,1,2);
EstMdl12 = estimate(Mdl,ly);
res12 = infer(EstMdl12,ly);
% ARIMA(2,1,2)
Mdl = arima(2,1,2);
EstMdl22 = estimate(Mdl,ly);
res22 = infer(EstMdl22,ly);
% ARIMA(2,1,0), 3-4
Mdl = arima('ArLags',[3 4],'D',1,'MaLags',[]);
EstMdl340 = estimate(Mdl,ly);
res340 = infer(EstMdl340,ly);
% ARIMA(0,1,2), 3-4
Mdl = arima('ArLags',[],'D',1,'MaLags',[3 4]);
EstMdl034 = estimate(Mdl,ly);
res034 = infer(EstMdl034,ly);
% ARIMA(2,1,2), 3-4
Mdl = arima('ArLags',[3 4],'D',1,'MaLags',[3 4]);
EstMdl3434 = estimate(Mdl,ly);
res3434 = infer(EstMdl3434,ly);
%% 3) Analisi dei residui
%Valutiamo la qualità del modello specificato analizzando la distribuzione dei residui della regressione.
%%
% _Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hendrerit tortor quis justo elementum, quis consequat felis facilisis. Curabitur volutpat est non felis feugiat, in iaculis elit tincidunt. Sed euismod est id semper hendrerit. Aenean non leo dapibus, posuere nulla rhoncus, posuere purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc convallis est in neque laoreet tristique. Sed tincidunt euismod egestas. Nam turpis nibh, gravida non faucibus ac, eleifend ac tortor.
% Morbi ultricies leo sed ante volutpat, sed vehicula enim malesuada. Nunc dui urna, iaculis vitae massa quis, facilisis rhoncus nibh. Nam feugiat efficitur velit sed laoreet. Curabitur id nunc ac neque sodales pulvinar ac vitae lectus. Aliquam eu iaculis nunc, at sagittis arcu. Phasellus tincidunt rutrum elit ac laoreet. Sed vestibulum ex id metus sodales, nec imperdiet tellus aliquet. Suspendisse facilisis augue sem, sed sodales nisl tincidunt sed._
% Praesent aliquam justo sit amet tellus accumsan, a imperdiet diam aliquet. Phasellus sagittis ex diam, molestie scelerisque augue cursus non. Quisque laoreet arcu et ex luctus convallis. Curabitur sit amet sapien mauris. Nam facilisis neque nec felis maximus, nec porttitor lorem congue. Aliquam erat volutpat. Donec sit amet turpis posuere, blandit lectus eget, ultrices nibh.
%
% Phasellus faucibus dolor mi, vel hendrerit erat lobortis sed. Praesent nec interdum elit. Vivamus consectetur nulla non elementum tempus. Phasellus id ipsum pulvinar, commodo sapien non, venenatis ante. In vitae lectus mattis, feugiat diam ac, cursus massa. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam ac egestas nisl. Sed ac hendrerit ex. Nulla neque est, malesuada et vehicula ultrices, ornare sit amet lacus. Quisque ut lacus tempor orci fermentum tincidunt facilisis ut quam. Sed eleifend sed enim vel auctor. Suspendisse potenti.
%
% Donec auctor sit amet eros eu lobortis. Suspendisse potenti. In sed diam vitae felis malesuada dictum. Fusce vehicula lacus mi, vitae ultrices tortor porta a. Donec neque ex, feugiat nec venenatis vitae, consectetur in lacus. Proin laoreet et dolor eu sagittis. Nam vitae placerat nulla. Cras laoreet turpis vel porttitor luctus. Nam et tincidunt est, vitae auctor purus. Nunc scelerisque cursus erat non condimentum. Integer sed faucibus libero. Integer at volutpat elit, ut rhoncus eros. Cras dolor erat, lobortis ac felis vitae, fermentum commodo massa. Duis velit nunc, suscipit a massa id, mollis efficitur dolor. Integer semper, leo sed aliquet vulputate, lorem nibh pellentesque elit, et tincidunt ligula lectus vel tellus.
% Donec auctor sit amet eros eu lobortis. Suspendisse potenti. In sed diam vitae felis malesuada dictum. Fusce vehicula lacus mi, vitae ultrices tortor porta a.
% Donec auctor sit amet eros eu lobortis. Suspendisse potenti. In sed diam vitae felis malesuada dictum. Fusce vehicula lacus mi, vitae ultrices tortor porta a. Donec neque ex, feugiat nec venenatis vitae, consectetur in lacus. Proin laoreet et dolor eu sagittis. Nam vitae placerat nulla. Cras laoreet turpis vel porttitor luctus. Nam et tincidunt est, vitae auctor purus. Nunc scelerisque cursus erat non condimentum. Integer sed faucibus libero. Integer at volutpat elit, ut rhoncus eros. Cras dolor erat, lobortis ac felis vitae, fermentum commodo massa. Duis velit nunc, suscipit a massa id, mollis efficitur dolor. Integer semper, leo sed aliquet vulputate, lorem nibh pellentesque elit, et tincidunt ligula lectus vel tellus.
% Donec auctor sit amet eros eu lobortis. Suspendisse potenti. In sed diam vitae felis malesuada dictum. Fusce vehicula lacus mi, vitae ultrices tortor porta a.
%% ARIMA(1,1,0)
figure
subplot(2,2,1)
histogram(res10,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res10) % qqplot dei residui
subplot(2,2,3)
autocorr(res10) % correlogramma
subplot(2,2,4)
parcorr(res10)
%% ARIMA(0,1,1)
figure
subplot(2,2,1)
histogram(res01,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res01) % qqplot dei residui
subplot(2,2,3)
autocorr(res01) % correlogramma
subplot(2,2,4)
parcorr(res01)
%% ARIMA(0,1,1)
figure
subplot(2,2,1)
histogram(res11,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res11) % qqplot dei residui
subplot(2,2,3)
autocorr(res11) % correlogramma
subplot(2,2,4)
parcorr(res11)
%% ARIMA(1,1,1)
figure
subplot(2,2,1)
histogram(res11,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res11) % qqplot dei residui
subplot(2,2,3)
autocorr(res11) % correlogramma
subplot(2,2,4)
parcorr(res11)
%% ARIMA(2,1,0)
figure
subplot(2,2,1)
histogram(res20,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res20) % qqplot dei residui
subplot(2,2,3)
autocorr(res20) % correlogramma
subplot(2,2,4)
parcorr(res20)
%% ARIMA(0,1,2)
figure
subplot(2,2,1)
histogram(res02,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res02) % qqplot dei residui
subplot(2,2,3)
autocorr(res02) % correlogramma
subplot(2,2,4)
parcorr(res02)
%% ARIMA(2,1,1)
figure
subplot(2,2,1)
histogram(res21,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res21) % qqplot dei residui
subplot(2,2,3)
autocorr(res21) % correlogramma
subplot(2,2,4)
parcorr(res21)
%% ARIMA(1,1,2)
figure
subplot(2,2,1)
histogram(res12,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res12) % qqplot dei residui
subplot(2,2,3)
autocorr(res12) % correlogramma
subplot(2,2,4)
parcorr(res12)
%% ARIMA(2,1,2)
figure
subplot(2,2,1)
histogram(res22,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res22) % qqplot dei residui
subplot(2,2,3)
autocorr(res22) % correlogramma
subplot(2,2,4)
parcorr(res22)
%% ARIMA(2,1,0) 3-4
figure
subplot(2,2,1)
histogram(res340,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res340) % qqplot dei residui
subplot(2,2,3)
autocorr(res340) % correlogramma
subplot(2,2,4)
parcorr(res340)
%% ARIMA(0,1,2) 3-4
figure
subplot(2,2,1)
histogram(res034,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res034) % qqplot dei residui
subplot(2,2,3)
autocorr(res034) % correlogramma
subplot(2,2,4)
parcorr(res034)
%% ARIMA(2,1,2)
figure
subplot(2,2,1)
histogram(res3434,60) % istogramma dei residui
title('Istogramma residui')
subplot(2,2,2)
qqplot(res3434) % qqplot dei residui
subplot(2,2,3)
autocorr(res3434) % correlogramma
subplot(2,2,4)
parcorr(res3434)
%% 3) TABELLE
%Valutiamo la qualità del modello specificato analizzando la distribuzione dei residui della regressione.
%% ARIMA(1,1,0)
[h,p,Qstat,crit] = lbqtest(res10,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(0,1,1)
[h,p,Qstat,crit] = lbqtest(res01,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(0,1,1)
[h,p,Qstat,crit] = lbqtest(res11,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(1,1,1)
[h,p,Qstat,crit] = lbqtest(res11,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(2,1,0)
[h,p,Qstat,crit] = lbqtest(res20,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(0,1,2)
[h,p,Qstat,crit] = lbqtest(res02,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(2,1,1)
[h,p,Qstat,crit] = lbqtest(res21,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(1,1,2)
[h,p,Qstat,crit] = lbqtest(res12,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(2,1,2)
[h,p,Qstat,crit] = lbqtest(res22,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(4,1,0)
[h,p,Qstat,crit] = lbqtest(res340,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(0,1,4)
[h,p,Qstat,crit] = lbqtest(res034,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput
%% ARIMA(4,1,4)
[h,p,Qstat,crit] = lbqtest(res3434,'lags',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]);
names = {'K';'H';'pvalue';'Qstat';'Crit'};
table(K(2:end),h',p',Qstat',crit','VariableNames',names) % creazione tabella ouput