I have to perform a 2 SLS regression with multiple endogenous variable.
1st endogenous variable: a
Instrument variable for 1st endogenous variable: b c d
2nd endogenous variable: p
Instrument variable for 2nd endogenous variable: q r s
My final model: y = a p b c d q r s.
is there any simple way to do it?
for example using proc syslin or something like that ?
Typically, when there is only one dependent variable in your model you use all the instrumental variables to instrument both endogenous variables; however, if you want to limit which instrumental variables are used to correct for the endogeneity of each endogenous explanatory variable you could use the following:
proc tmodel data=yourdata;
eq.a = y - ka*a;
eq.p = y - kp*p;
fit a p / ols 2sls;
instruments (a, b c d) (p, q r s);
quit;
In both PROC MODEL and its multithreaded replacement, PROC TMODEL, you can estimate your model using two stage least squares with the following statements:
proc tmodel data=yourdata;
y = ka*a + kp*p;
fit y / 2sls;
instruments b c d q r s;
quit;
Let me know if you need any further clarifications on how to use PROC (T)MODEL for your problem.
but how do i assign different instrumental variables to different endogenous variables? like how to separate them to their respective endogenous variable ?
Typically, when there is only one dependent variable in your model you use all the instrumental variables to instrument both endogenous variables; however, if you want to limit which instrumental variables are used to correct for the endogeneity of each endogenous explanatory variable you could use the following:
proc tmodel data=yourdata;
eq.a = y - ka*a;
eq.p = y - kp*p;
fit a p / ols 2sls;
instruments (a, b c d) (p, q r s);
quit;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.