Solved
Contributor
Posts: 45

# proc varmax

can anypne please give me an example how to do  a dynamic multiplaier in proc varmax ?

thanks

CL

Accepted Solutions
Solution
‎03-14-2013 03:56 PM
SAS Employee
Posts: 89

## Re: proc varmax

Hi clcl

Well, intially I thought "control the change" meant to "allow the size of the change in exogeneous x to be controlled by the user."  That can't be done as part of the estimation and would be post-processing in a datastep.

But then I got to chatting with the developer and he read your question differentlly.  He thought you might be asking about a RESTRICT statement. If that is the case, yes you can restrict the size of the effects of the variables with a restrict option.

For instance, in the example above, it you wanted to restrict the contemporaneous response of the exogenous regressor to be zero for each equation, you could use the following syntax,

ods graphics on;
proc varmax data=grunfeld plots=impulse;

model y1 y2 = x1 / p=1 lagmax=3 xlag=2 print=(impulsx=(all) estimates);
restrict XL(0,1,1)=0, XL(0,2,1)=0;

run;

good luck!

All Replies
SAS Employee
Posts: 89

## Re: proc varmax

Hi CL,

I spoke with the developer and we determined that the solution to your problem was to use the the PRINT=(IMPULSX=(all)) option on the model statement in VARMAX.

The following code should work for you. Let me know if you need anything else.

data grunfeld;

input year y1 y2 y3 x1 x2 x3;

label y1='Gross Investment GE'

y2='Capital Stock Lagged GE'

y3='Value of Outstanding Shares GE Lagged'

x1='Gross Investment W'

x2='Capital Stock Lagged W'

x3='Value of Outstanding Shares Lagged W';

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 varmax data=grunfeld ;

model y1 y2 = x1 / p=1 lagmax=3 print=(impulsx=(all) estimates);

run;

Contributor
Posts: 45

## Re: proc varmax

the implus option lets your see the effect of one variable on another , is there any way we can control the change ?

thanks again !

Solution
‎03-14-2013 03:56 PM
SAS Employee
Posts: 89

## Re: proc varmax

Hi clcl

Well, intially I thought "control the change" meant to "allow the size of the change in exogeneous x to be controlled by the user."  That can't be done as part of the estimation and would be post-processing in a datastep.

But then I got to chatting with the developer and he read your question differentlly.  He thought you might be asking about a RESTRICT statement. If that is the case, yes you can restrict the size of the effects of the variables with a restrict option.

For instance, in the example above, it you wanted to restrict the contemporaneous response of the exogenous regressor to be zero for each equation, you could use the following syntax,

ods graphics on;
proc varmax data=grunfeld plots=impulse;

model y1 y2 = x1 / p=1 lagmax=3 xlag=2 print=(impulsx=(all) estimates);
restrict XL(0,1,1)=0, XL(0,2,1)=0;

run;

good luck!

Contributor
Posts: 45

## Re: proc varmax

what you wrote at the begging is what we thought, there is no other way than doing it in a datastep.

thanks again for all your help !

CL

🔒 This topic is solved and locked.