MA(1) Estimation
/*--------------------------------------------------------------
SAS Sample Library
Name: modex04.sas
Description: Example program from SAS/ETS User's Guide,
The MODEL Procedure
Title: MA(1) Estimation
Product: SAS/ETS Software
Keys: nonlinear simultaneous equation models
PROC: MODEL
Notes:
--------------------------------------------------------------*/
data grunfeld;
input year gei gef gec whi whf whc;
label gei = 'Gross Investment GE'
gec = 'Capital Stock Lagged GE'
gef = 'Value of Outstanding Shares GE Lagged'
whi = 'Gross Investment WH'
whc = 'Capital Stock Lagged WH'
whf = 'Value of Outstanding Shares Lagged WH';
datalines;
1935 33.1 1170.6 97.8 12.93 191.5 1.8
1936 45.0 2015.8 104.4 25.90 516.0 .8
1937 77.2 2803.3 118.0 35.05 729.0 7.4
1938 44.6 2039.7 156.2 22.89 560.4 18.1
1939 48.1 2256.2 172.6 18.84 519.9 23.5
1940 74.4 2132.2 186.6 28.57 628.5 26.5
1941 113.0 1834.1 220.9 48.51 537.1 36.2
1942 91.9 1588.0 287.8 43.34 561.2 60.8
1943 61.3 1749.4 319.9 37.02 617.2 84.4
1944 56.8 1687.2 321.3 37.81 626.7 91.2
1945 93.6 2007.7 319.6 39.27 737.2 92.4
1946 159.9 2208.3 346.0 53.46 760.5 86.0
1947 147.2 1656.7 456.4 55.56 581.4 111.1
1948 146.3 1604.4 543.4 49.56 662.3 130.6
1949 98.3 1431.8 618.3 32.04 583.8 141.8
1950 93.5 1610.5 647.4 32.24 635.2 136.7
1951 135.2 1819.4 671.3 54.38 723.8 129.7
1952 157.3 2079.7 726.1 71.78 864.1 145.5
1953 179.5 2371.6 800.3 90.08 1193.5 174.8
1954 189.6 2759.9 888.9 68.60 1188.9 213.5
;
proc model outmodel=grunmod;
var gei whi gef gec whf whc;
parms ge_int ge_f ge_c wh_int wh_f wh_c;
label ge_int = 'GE Intercept'
ge_f = 'GE Lagged Share Value Coef'
ge_c = 'GE Lagged Capital Stock Coef'
wh_int = 'WH Intercept'
wh_f = 'WH Lagged Share Value Coef'
wh_c = 'WH Lagged Capital Stock Coef';
gei = ge_int + ge_f * gef + ge_c * gec;
whi = wh_int + wh_f * whf + wh_c * whc;
run;
title1 'Example of MA(1) Error Process Using Grunfeld''s Model';
title2 'MA(1) Error Process Using Unconditional Least Squares';
proc model data=grunfeld model=grunmod;
%ma(gei,1, m=uls);
%ma(whi,1, m=uls);
fit whi gei start=( gei_m1 0.8 -0.8) / startiter=2;
run;
title2 'PROC ARIMA Using Unconditional Least Squares';
proc arima data=grunfeld;
identify var=whi cross=(whf whc ) noprint;
estimate q=1 input=(whf whc) method=uls maxiter=40;
run;
title2 'MA(1) Error Process Using Maximum Likelihood ';
proc model data=grunfeld model=grunmod;
%ma(gei,1, m=ml);
%ma(whi,1, m=ml);
fit whi gei;
run;
title2 'PROC ARIMA Using Maximum Likelihood ';
proc arima data=grunfeld;
identify var=whi cross=(whf whc) noprint;
estimate q=1 input=(whf whc) method=ml;
run;