BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
clcl
Calcite | Level 5

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

thanks

CL

1 ACCEPTED SOLUTION

Accepted Solutions
ets_kps
SAS Employee

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!

View solution in original post

4 REPLIES 4
ets_kps
SAS Employee

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;

clcl
Calcite | Level 5

thanks for your reply !

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

thanks again !

ets_kps
SAS Employee

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!

clcl
Calcite | Level 5

Thanks for you reply,

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

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 4 replies
  • 2169 views
  • 6 likes
  • 2 in conversation