In this example, the SIMLIN procedure simulates a model of the U.S. economy called Klein’s Model I. The SAS data set KLEIN is used as input to the SYSLIN and SIMLIN procedures.
data klein; input year c p w i x wp g t k wsum; date=mdy(1,1,year); format date year.; y = c + i + g - t; yr = year - 1931; klag = lag( k ); plag = lag( p ); xlag = lag( x ); if year >= 1921; label c ='consumption' p ='profits' w ='private wage bill' i ='investment' k ='capital stock' y ='national income' x ='private production' wsum='total wage bill' wp ='govt wage bill' g ='govt demand' t ='taxes' klag='capital stock lagged' plag='profits lagged' xlag='private product lagged' yr ='year-1931'; datalines; 1920 . 12.7 . . 44.9 . . . 182.8 . 1921 41.9 12.4 25.5 -0.2 45.6 2.7 3.9 7.7 182.6 28.2 ... more lines ...
First, the model is specified and estimated using the SYSLIN procedure, and the parameter estimates are written to an OUTEST= data set. The printed output produced by the SYSLIN procedure is not shown here; see Example 29.1 in Chapter 29 for the printed output of the PROC SYSLIN step.
title1 'Simulation of Klein''s Model I using SIMLIN'; proc syslin 3sls data=klein outest=a; instruments klag plag xlag wp g t yr; endogenous c p w i x wsum k y; consume: model c = p plag wsum; invest: model i = p plag klag; labor: model w = x xlag yr; product: identity x = c + i + g; income: identity y = c + i + g - t; profit: identity p = x - w - t; stock: identity k = klag + i; wage: identity wsum = w + wp; run;
The OUTEST= data set A created by the SYSLIN procedure contains parameter estimates to be used by the SIMLIN procedure. The OUTEST= data set is shown in Output 25.1.1.
Output 25.1.1: The OUTEST= Data Set Created by PROC SYSLIN
Simulation of Klein's Model I using SIMLIN |
Obs | _TYPE_ | _STATUS_ | _MODEL_ | _DEPVAR_ | _SIGMA_ | Intercept | klag | plag | xlag | wp | g | t | yr | c | p | w | i | x | wsum | k | y |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | INST | 0 Converged | FIRST | c | 2.11403 | 58.3018 | -0.14654 | 0.74803 | 0.23007 | 0.19327 | 0.20501 | -0.36573 | 0.70109 | -1 | . | . | . | . | . | . | . |
2 | INST | 0 Converged | FIRST | p | 2.18298 | 50.3844 | -0.21610 | 0.80250 | 0.02200 | -0.07961 | 0.43902 | -0.92310 | 0.31941 | . | -1.00000 | . | . | . | . | . | . |
3 | INST | 0 Converged | FIRST | w | 1.75427 | 43.4356 | -0.12295 | 0.87192 | 0.09533 | -0.44373 | 0.86622 | -0.60415 | 0.71358 | . | . | -1 | . | . | . | . | . |
4 | INST | 0 Converged | FIRST | i | 1.72376 | 35.5182 | -0.19251 | 0.92639 | -0.11274 | -0.71661 | 0.10023 | -0.16152 | 0.33190 | . | . | . | -1 | . | . | . | . |
5 | INST | 0 Converged | FIRST | x | 3.77347 | 93.8200 | -0.33906 | 1.67442 | 0.11733 | -0.52334 | 1.30524 | -0.52725 | 1.03299 | . | . | . | . | -1.00000 | . | . | . |
6 | INST | 0 Converged | FIRST | wsum | 1.75427 | 43.4356 | -0.12295 | 0.87192 | 0.09533 | 0.55627 | 0.86622 | -0.60415 | 0.71358 | . | . | . | . | . | -1.00000 | . | . |
7 | INST | 0 Converged | FIRST | k | 1.72376 | 35.5182 | 0.80749 | 0.92639 | -0.11274 | -0.71661 | 0.10023 | -0.16152 | 0.33190 | . | . | . | . | . | . | -1 | . |
8 | INST | 0 Converged | FIRST | y | 3.77347 | 93.8200 | -0.33906 | 1.67442 | 0.11733 | -0.52334 | 1.30524 | -1.52725 | 1.03299 | . | . | . | . | . | . | . | -1 |
9 | 3SLS | 0 Converged | CONSUME | c | 1.04956 | 16.4408 | . | 0.16314 | . | . | . | . | . | -1 | 0.12489 | . | . | . | 0.79008 | . | . |
10 | 3SLS | 0 Converged | INVEST | i | 1.60796 | 28.1778 | -0.19485 | 0.75572 | . | . | . | . | . | . | -0.01308 | . | -1 | . | . | . | . |
11 | 3SLS | 0 Converged | LABOR | w | 0.80149 | 1.7972 | . | . | 0.18129 | . | . | . | 0.14967 | . | . | -1 | . | 0.40049 | . | . | . |
12 | IDENTITY | 0 Converged | PRODUCT | x | . | 0.0000 | . | . | . | . | 1.00000 | . | . | 1 | . | . | 1 | -1.00000 | . | . | . |
13 | IDENTITY | 0 Converged | INCOME | y | . | 0.0000 | . | . | . | . | 1.00000 | -1.00000 | . | 1 | . | . | 1 | . | . | . | -1 |
14 | IDENTITY | 0 Converged | PROFIT | p | . | 0.0000 | . | . | . | . | . | -1.00000 | . | . | -1.00000 | -1 | . | 1.00000 | . | . | . |
15 | IDENTITY | 0 Converged | STOCK | k | . | 0.0000 | 1.00000 | . | . | . | . | . | . | . | . | . | 1 | . | . | -1 | . |
16 | IDENTITY | 0 Converged | WAGE | wsum | . | 0.0000 | . | . | . | 1.00000 | . | . | . | . | . | 1 | . | . | -1.00000 | . | . |
Using the OUTEST= data set A produced by the SYSLIN procedure, the SIMLIN procedure can now compute the reduced form and simulate the model. The following statements perform the simulation.
title1 'Simulation of Klein''s Model I using SIMLIN'; proc simlin data=klein est=a type=3sls estprint total interim=2 outest=b; endogenous c p w i x wsum k y; exogenous wp g t yr; lagged klag k 1 plag p 1 xlag x 1; id year; output out=c p=chat phat what ihat xhat wsumhat khat yhat r=cres pres wres ires xres wsumres kres yres; run;
The reduced form coefficients and multipliers are added to the information read from EST= data set A and written to the OUTEST= data set B. The predicted and residual values from the simulation are written to the OUT= data set C specified in the OUTPUT statement.
The SIMLIN procedure first prints the structural coefficient matrices read from the EST= data set, as shown in Output 25.1.2 through Output 25.1.4.
Output 25.1.2: SIMLIN Procedure Output – Endogenous Structural Coefficients
Simulation of Klein's Model I using SIMLIN |
Structural Coefficients for Endogenous Variables | ||||||||
---|---|---|---|---|---|---|---|---|
Variable | c | p | w | i | x | wsum | k | y |
c | 1.0000 | -0.1249 | . | . | . | -0.7901 | . | . |
i | . | 0.0131 | . | 1.0000 | . | . | . | . |
w | . | . | 1.0000 | . | -0.4005 | . | . | . |
x | -1.0000 | . | . | -1.0000 | 1.0000 | . | . | . |
y | -1.0000 | . | . | -1.0000 | . | . | . | 1.0000 |
p | . | 1.0000 | 1.0000 | . | -1.0000 | . | . | . |
k | . | . | . | -1.0000 | . | . | 1.0000 | . |
wsum | . | . | -1.0000 | . | . | 1.0000 | . | . |
The SIMLIN procedure then prints the inverse of the endogenous variables coefficient matrix, as shown in Output 25.1.5.
Output 25.1.5: SIMLIN Procedure Output – Inverse Coefficient Matrix
Inverse Coefficient Matrix for Endogenous Variables | ||||||||
---|---|---|---|---|---|---|---|---|
Variable | c | i | w | x | y | p | k | wsum |
c | 1.6347 | 0.6347 | 1.0957 | 0.6347 | 0 | 0.1959 | 0 | 1.2915 |
p | 0.9724 | 0.9724 | -0.3405 | 0.9724 | 0 | 1.1087 | 0 | 0.7682 |
w | 0.6496 | 0.6496 | 1.4406 | 0.6496 | 0 | 0.0726 | 0 | 0.5132 |
i | -0.0127 | 0.9873 | 0.004453 | -0.0127 | 0 | -0.0145 | 0 | -0.0100 |
x | 1.6219 | 1.6219 | 1.1001 | 1.6219 | 0 | 0.1814 | 0 | 1.2815 |
wsum | 0.6496 | 0.6496 | 1.4406 | 0.6496 | 0 | 0.0726 | 0 | 1.5132 |
k | -0.0127 | 0.9873 | 0.004453 | -0.0127 | 0 | -0.0145 | 1.0000 | -0.0100 |
y | 1.6219 | 1.6219 | 1.1001 | 0.6219 | 1.0000 | 0.1814 | 0 | 1.2815 |
The SIMLIN procedure next prints the reduced form coefficient matrices, as shown in Output 25.1.6.
Output 25.1.6: SIMLIN Procedure Output – Reduced Form Coefficients
Reduced Form for Exogenous Variables | |||||
---|---|---|---|---|---|
Variable | wp | g | t | yr | Intercept |
c | 1.2915 | 0.6347 | -0.1959 | 0.1640 | 46.7273 |
p | 0.7682 | 0.9724 | -1.1087 | -0.0510 | 42.7736 |
w | 0.5132 | 0.6496 | -0.0726 | 0.2156 | 31.5721 |
i | -0.0100 | -0.0127 | 0.0145 | 0.000667 | 27.6184 |
x | 1.2815 | 1.6219 | -0.1814 | 0.1647 | 74.3457 |
wsum | 1.5132 | 0.6496 | -0.0726 | 0.2156 | 31.5721 |
k | -0.0100 | -0.0127 | 0.0145 | 0.000667 | 27.6184 |
y | 1.2815 | 1.6219 | -1.1814 | 0.1647 | 74.3457 |
The multiplier matrices (requested by the INTERIM=2 and TOTAL options) are printed next, as shown in Output 25.1.7 and Output 25.1.8.
Output 25.1.7: SIMLIN Procedure Output – Interim Multipliers
Interim Multipliers for Interim 1 | |||||
---|---|---|---|---|---|
Variable | wp | g | t | yr | Intercept |
c | 0.829130 | 1.049424 | -0.865262 | -.0054080 | 43.27442 |
p | 0.609213 | 0.771077 | -0.982167 | -.0558215 | 28.39545 |
w | 0.794488 | 1.005578 | -0.710961 | 0.0125018 | 41.45124 |
i | 0.574572 | 0.727231 | -0.827867 | -.0379117 | 26.57227 |
x | 1.403702 | 1.776655 | -1.693129 | -.0433197 | 69.84670 |
wsum | 0.794488 | 1.005578 | -0.710961 | 0.0125018 | 41.45124 |
k | 0.564524 | 0.714514 | -0.813366 | -.0372452 | 54.19068 |
y | 1.403702 | 1.776655 | -1.693129 | -.0433197 | 69.84670 |
Interim Multipliers for Interim 2 | |||||
---|---|---|---|---|---|
Variable | wp | g | t | yr | Intercept |
c | 0.663671 | 0.840004 | -0.968727 | -.0456589 | 28.36428 |
p | 0.350716 | 0.443899 | -0.618929 | -.0401446 | 10.79216 |
w | 0.658769 | 0.833799 | -0.925467 | -.0399178 | 28.33114 |
i | 0.345813 | 0.437694 | -0.575669 | -.0344035 | 10.75901 |
x | 1.009485 | 1.277698 | -1.544396 | -.0800624 | 39.12330 |
wsum | 0.658769 | 0.833799 | -0.925467 | -.0399178 | 28.33114 |
k | 0.910337 | 1.152208 | -1.389035 | -.0716486 | 64.94969 |
y | 1.009485 | 1.277698 | -1.544396 | -.0800624 | 39.12330 |
Output 25.1.8: SIMLIN Procedure Output – Total Multipliers
Total Multipliers | |||||
---|---|---|---|---|---|
Variable | wp | g | t | yr | Intercept |
c | 1.881667 | 1.381613 | -0.685987 | 0.1789624 | 41.3045 |
p | 0.786945 | 0.996031 | -1.286891 | -.0748290 | 15.4770 |
w | 1.094722 | 1.385582 | -0.399095 | 0.2537914 | 25.8275 |
i | 0.000000 | 0.000000 | -0.000000 | 0.0000000 | 0.0000 |
x | 1.881667 | 2.381613 | -0.685987 | 0.1789624 | 41.3045 |
wsum | 2.094722 | 1.385582 | -0.399095 | 0.2537914 | 25.8275 |
k | 2.999365 | 3.796275 | -4.904859 | -.2852032 | 203.6035 |
y | 1.881667 | 2.381613 | -1.685987 | 0.1789624 | 41.3045 |
The last part of the SIMLIN procedure output is a table of statistics of fit for the simulation, as shown in Output 25.1.9.
Output 25.1.9: SIMLIN Procedure Output – Simulation Statistics
Fit Statistics | ||||||||
---|---|---|---|---|---|---|---|---|
Variable | N | Mean Error | Mean Pct Error |
Mean Abs Error | Mean Abs Pct Error |
RMS Error |
RMS Pct Error |
Label |
c | 21 | 0.1367 | -0.3827 | 3.5011 | 6.69769 | 4.3155 | 8.1701 | consumption |
p | 21 | 0.1422 | -4.0671 | 2.9355 | 19.61400 | 3.4257 | 26.0265 | profits |
w | 21 | 0.1282 | -0.8939 | 3.1247 | 8.92110 | 4.0930 | 11.4709 | private wage bill |
i | 21 | 0.1337 | 105.8529 | 2.4983 | 127.13736 | 2.9980 | 252.3497 | investment |
x | 21 | 0.2704 | -0.9553 | 5.9622 | 10.40057 | 7.1881 | 12.5653 | private production |
wsum | 21 | 0.1282 | -0.6669 | 3.1247 | 7.88988 | 4.0930 | 10.1724 | total wage bill |
k | 21 | -0.1424 | -0.1506 | 3.8879 | 1.90614 | 5.0036 | 2.4209 | capital stock |
y | 21 | 0.2704 | -1.3476 | 5.9622 | 11.74177 | 7.1881 | 14.2214 | national income |
The OUTEST= output data set contains all the observations read from the EST= data set, and in addition contains observations for the reduced form and multiplier matrices. The following statements produce a partial listing of the OUTEST= data set, as shown in Output 25.1.10.
proc print data=b; where _type_ = 'REDUCED' | _type_ = 'IMULT1'; run;
Output 25.1.10: Partial Listing of OUTEST= Data Set
Simulation of Klein's Model I using SIMLIN |
Obs | _TYPE_ | _DEPVAR_ | _MODEL_ | _SIGMA_ | c | p | w | i | x | wsum | k | y | klag | plag | xlag | wp | g | t | yr | Intercept |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | REDUCED | c | . | 1.63465 | 0.63465 | 1.09566 | 0.63465 | 0 | 0.19585 | 0 | 1.29151 | -0.12366 | 0.74631 | 0.19863 | 1.29151 | 0.63465 | -0.19585 | 0.16399 | 46.7273 | |
10 | REDUCED | p | . | 0.97236 | 0.97236 | -0.34048 | 0.97236 | 0 | 1.10872 | 0 | 0.76825 | -0.18946 | 0.89347 | -0.06173 | 0.76825 | 0.97236 | -1.10872 | -0.05096 | 42.7736 | |
11 | REDUCED | w | . | 0.64957 | 0.64957 | 1.44059 | 0.64957 | 0 | 0.07263 | 0 | 0.51321 | -0.12657 | 0.59687 | 0.26117 | 0.51321 | 0.64957 | -0.07263 | 0.21562 | 31.5721 | |
12 | REDUCED | i | . | -0.01272 | 0.98728 | 0.00445 | -0.01272 | 0 | -0.01450 | 0 | -0.01005 | -0.19237 | 0.74404 | 0.00081 | -0.01005 | -0.01272 | 0.01450 | 0.00067 | 27.6184 | |
13 | REDUCED | x | . | 1.62194 | 1.62194 | 1.10011 | 1.62194 | 0 | 0.18135 | 0 | 1.28146 | -0.31603 | 1.49034 | 0.19944 | 1.28146 | 1.62194 | -0.18135 | 0.16466 | 74.3457 | |
14 | REDUCED | wsum | . | 0.64957 | 0.64957 | 1.44059 | 0.64957 | 0 | 0.07263 | 0 | 1.51321 | -0.12657 | 0.59687 | 0.26117 | 1.51321 | 0.64957 | -0.07263 | 0.21562 | 31.5721 | |
15 | REDUCED | k | . | -0.01272 | 0.98728 | 0.00445 | -0.01272 | 0 | -0.01450 | 1 | -0.01005 | 0.80763 | 0.74404 | 0.00081 | -0.01005 | -0.01272 | 0.01450 | 0.00067 | 27.6184 | |
16 | REDUCED | y | . | 1.62194 | 1.62194 | 1.10011 | 0.62194 | 1 | 0.18135 | 0 | 1.28146 | -0.31603 | 1.49034 | 0.19944 | 1.28146 | 1.62194 | -1.18135 | 0.16466 | 74.3457 | |
17 | IMULT1 | c | . | . | . | . | . | . | . | . | . | . | . | . | 0.82913 | 1.04942 | -0.86526 | -0.00541 | 43.2744 | |
18 | IMULT1 | p | . | . | . | . | . | . | . | . | . | . | . | . | 0.60921 | 0.77108 | -0.98217 | -0.05582 | 28.3955 | |
19 | IMULT1 | w | . | . | . | . | . | . | . | . | . | . | . | . | 0.79449 | 1.00558 | -0.71096 | 0.01250 | 41.4512 | |
20 | IMULT1 | i | . | . | . | . | . | . | . | . | . | . | . | . | 0.57457 | 0.72723 | -0.82787 | -0.03791 | 26.5723 | |
21 | IMULT1 | x | . | . | . | . | . | . | . | . | . | . | . | . | 1.40370 | 1.77666 | -1.69313 | -0.04332 | 69.8467 | |
22 | IMULT1 | wsum | . | . | . | . | . | . | . | . | . | . | . | . | 0.79449 | 1.00558 | -0.71096 | 0.01250 | 41.4512 | |
23 | IMULT1 | k | . | . | . | . | . | . | . | . | . | . | . | . | 0.56452 | 0.71451 | -0.81337 | -0.03725 | 54.1907 | |
24 | IMULT1 | y | . | . | . | . | . | . | . | . | . | . | . | . | 1.40370 | 1.77666 | -1.69313 | -0.04332 | 69.8467 |
The actual and predicted values for the variable C are plotted in Output 25.1.11.
title2 'Plots of Simulation Results'; proc sgplot data=c; scatter x=year y=c; series x=year y=chat / markers markerattrs=(symbol=plus); refline 1941.5 / axis=x; run;