arfor.m (993B)
1 % arfor.m yf=arfor(y,P,k,todiff) 2 % 3 % Computes a forecast using an AR model 4 % y = data series (e.g. log GDP) 5 % P = # of AR terms in regression 6 % k = # of years to forecast, e.g. 2 7 % todiff = string 'diff' if we need to difference the data first 8 % (e.g. if we have a trending series). Then undifference at end. 9 % yf = the k years worth of forecasts, e.g. 2x1 vector 10 11 function [yf,y]=arfor(y,P,k,todiff); 12 13 y=packr(y); 14 ylev=y; 15 16 if todiff=='diff'; 17 y=delta(y); 18 end; 19 20 [y ylags]=lagx(y,P); 21 22 N=length(y); 23 X=[ones(N,1) ylags]; 24 b=lstiny(y,X); 25 26 for i=1:k; 27 T=length(y); 28 [yy1 yy2]=lagx(y,P); 29 blah=[yy1 yy2]; 30 ylags=[ylags; blah(T-P,1:P)]; % Bc the first value is T 31 y=[y; [1 ylags(T+1,:)]*b]; 32 end; 33 34 if todiff=='diff'; 35 y=[ylev(1+P); y]; 36 y=cumsum(y); 37 y=trimr(y,1,0); % so the N+1:N+k will work 38 end; 39 40 %plot(y); 41 %hold on; z=lagx(trimr(ylev,1,0),P); plot(z); hold off; 42 %disp 'press any key to continue'; 43 %pause; 44 45 yf=y((N+1):(N+k));