can anypne please give me an example how to do a dynamic multiplaier in proc varmax ?
thanks
CL
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!
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;
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 !
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!
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
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!
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.