Analyzing the Structure of Large Models
PROC MODEL provides several features to aid in analyzing the structure
of the model program.
These features summarize properties of the model
in various forms.
The following Klein's model program is used
to introduce the LISTDEP, BLOCK, and GRAPH options.
proc model out=m data=klein listdep graph block;
endogenous c p w i x wsum k y;
exogenous wp g t year;
parms c0c3 i0i3 w0w3;
a: c = c0 + c1 * p + c2 * lag(p) + c3 * wsum;
b: i = i0 + i1 * p + i2 * lag(p) + i3 * lag(k);
c: w = w0 + w1 * x + w2 * lag(x) + w3 * year;
x = c + i + g;
y = c + i + gt;
p = xwt;
k = lag(k) + i;
wsum = w + wp;
id year;
run;
Dependency List
The LISTDEP option produces a dependency list for
each variable in the model program. For each variable, a list of
variables that depend on it and a list of variables it depends
on is given. The dependency list produced by the example program
is shown in Figure 14.77.
Dependency Listing For Program 
Symbol 
Dependencies 
c 
Current values affect: ERROR.c PRED.x RESID.x ERROR.x PRED.y RESID.y ERROR.y 
p 
Current values affect: PRED.c RESID.c ERROR.c PRED.i RESID.i ERROR.i ERROR.p 

Lagged values affect: PRED.c PRED.i 
w 
Current values affect: ERROR.w PRED.p RESID.p ERROR.p PRED.wsum RESID.wsum ERROR.wsum 
i 
Current values affect: ERROR.i PRED.x RESID.x ERROR.x PRED.y RESID.y ERROR.y PRED.k RESID.k ERROR.k 
x 
Current values affect: PRED.w RESID.w ERROR.w ERROR.x PRED.p RESID.p ERROR.p 

Lagged values affect: PRED.w 
wsum 
Current values affect: PRED.c RESID.c ERROR.c ERROR.wsum 
k 
Current values affect: ERROR.k 

Lagged values affect: PRED.i RESID.i ERROR.i PRED.k RESID.k 

Figure 14.77: A Portion of the LISTDEP Output for Klein's Model
BLOCK Listing
The BLOCK option prints an analysis of the program variables
based on the assignments in the model program. The output
produced by the example is shown in Figure 14.78.
The MODEL Procedure 
Model Structure Analysis 
(Based on Assignments to Endogenous Model Variables) 
Exogenous Variables 
wp g t year 
Endogenous Variables 
c p w i x wsum k y 
NOTE: 
The System Consists of 2 Recursive Equations and 1 Simultaneous Blocks. 

Block Structure of the System 
Block 1 
c p w i x wsum 
Dependency Structure of the System 
Block 1 
Depends On All_Exogenous 
k 
Depends On Block 1 All_Exogenous 
y 
Depends On Block 1 All_Exogenous 

Figure 14.78: The BLOCK Output for Klein's Model
One use for the block output is
to put a model in recursive form. Simulations of the model can be
done with the SEIDEL method, which is efficient if the model is recursive
and if the equations are in recursive order. By examining the block output,
you can determine how to reorder the model equations for the most
efficient simulation.
Adjacency Graph
The GRAPH option displays the same information as the BLOCK
option with the addition of an adjacency graph. An X in a column
in an adjacency graph indicates that the variable associated with
the row depends on the variable associated with the column.
The output produced by the example is shown in Figure 14.79.
Adjacency Matrix for Graph of System 
Variable 

c 
p 
w 
i 
x 
wsum 
k 
y 
wp 
g 
t 
year 










* 
* 
* 
* 
c 

X 
X 
. 
. 
. 
X 
. 
. 
. 
. 
. 
. 
p 

. 
X 
X 
. 
X 
. 
. 
. 
. 
. 
X 
. 
w 

. 
. 
X 
. 
X 
. 
. 
. 
. 
. 
. 
X 
i 

. 
X 
. 
X 
. 
. 
. 
. 
. 
. 
. 
. 
x 

X 
. 
. 
X 
X 
. 
. 
. 
. 
X 
. 
. 
wsum 

. 
. 
X 
. 
. 
X 
. 
. 
X 
. 
. 
. 
k 

. 
. 
. 
X 
. 
. 
X 
. 
. 
. 
. 
. 
y 

X 
. 
. 
X 
. 
. 
. 
X 
. 
X 
X 
. 
wp 
* 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 
. 
. 
g 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 
. 
t 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 
year 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
(Note: * = Exogenous Variable.) 
Transitive Closure Matrix of Sorted System 
Block 
Variable 

c 
p 
w 
i 
x 
wsum 
k 
y 
1 
c 

X 
X 
X 
X 
X 
X 
. 
. 
1 
p 

X 
X 
X 
X 
X 
X 
. 
. 
1 
w 

X 
X 
X 
X 
X 
X 
. 
. 
1 
i 

X 
X 
X 
X 
X 
X 
. 
. 
1 
x 

X 
X 
X 
X 
X 
X 
. 
. 
1 
wsum 

X 
X 
X 
X 
X 
X 
. 
. 

k 

X 
X 
X 
X 
X 
X 
X 
. 

y 

X 
X 
X 
X 
X 
X 
. 
X 
Adjacency Matrix for Graph of System Including Lagged Impacts 
Block 
Variable 

c 
p 
w 
i 
x 
wsum 
k 
y 
wp 
g 
t 
year 











* 
* 
* 
* 
1 
c 

X 
L 
. 
. 
. 
X 
. 
. 
. 
. 
. 
. 
1 
p 

. 
X 
X 
. 
X 
. 
. 
. 
. 
. 
X 
. 
1 
w 

. 
. 
X 
. 
L 
. 
. 
. 
. 
. 
. 
X 
1 
i 

. 
L 
. 
X 
. 
. 
L 
. 
. 
. 
. 
. 
1 
x 

X 
. 
. 
X 
X 
. 
. 
. 
. 
X 
. 
. 
1 
wsum 

. 
. 
X 
. 
. 
X 
. 
. 
X 
. 
. 
. 

k 

. 
. 
. 
X 
. 
. 
L 
. 
. 
. 
. 
. 

y 

X 
. 
. 
X 
. 
. 
. 
X 
. 
X 
X 
. 

wp 
* 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 
. 
. 

g 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 
. 

t 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
. 

year 
* 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
X 
(Note: * = Exogenous Variable.) 

Figure 14.79: The GRAPH Output for Klein's Model
The first and last graphs are straightforward. The middle graph
represents the dependencies of the nonexogenous variables after
transitive closure has been performed (that is, A depends on B, and B
depends on C, so A depends on C). The preceding transitive closure
matrix indicates that K and Y do not directly or indirectly
depend on each other.
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.