cap log c clear #delimit set more 1; cd\dnb; log using schooling.log,replace t; /* schooling.log */ use schooling; gen age2=age76^2; /* OLS (inconsistent) */ reg lwage76 ed76 age76 age2 black smsa76 south76; outreg2 using schooling, replace ctitle("ols"); /* IV with 1 instrument */ /* First stage regression */ reg ed76 nearc4 age76 age2 black smsa76 south76; /* instrument relevance test */ testparm nearc4; scalar frelev=r(F); /* exogeneity test */ predict resed76,res; reg lwage76 ed76 age76 age2 black smsa76 south76 resed76; testparm resed76; scalar rexog=r(p); drop resed76; /* tsls */ ivreg lwage76 (ed76=nearc4) age76 age2 black smsa76 south76; outreg2 using schooling, append ctitle("iv1") addstat("F-value test intrument relevance",frelev, "p-value Hausman-Wu test exogeneity",rexog); /* IV with more than 1 instrument */ /* First stage regression */ reg ed76 nearc4 daded momed age76 age2 black smsa76 south76; /* instrument relevance test */ testparm nearc4 daded momed; scalar frelev=r(F); /* exogeneity test */ predict resed76,res; reg lwage76 ed76 age76 age2 black smsa76 south76 resed76; testparm resed76; scalar rexog=r(p); drop resed76; /* tsls */ ivreg lwage76 (ed76=nearc4 daded momed) age76 age2 black smsa76 south76; predict uu,res; reg uu nearc4 daded momed age76 age2 black smsa76 south76; drop uu; outreg2 using schooling, append ctitle("aux. reg. sargan") bdec(4); scalar sargan=e(N)*e(r2); scalar rr=e(df_m)+1; ivreg lwage76 (ed76=nearc4 daded momed) age76 age2 black smsa76 south76; scalar kk=e(df_m)+1; scalar df_sargan=rr-kk; scalar pvalue_sargan=chi2tail(df_sargan,sargan); outreg2 using schooling, append ctitle("iv2") addstat("F-value test intrument relevance",frelev,"p-value Hausman-Wu test exogeneity",rexog, "Sargan statistic",sargan,"Degrees freedom Sargan statistic",df_sargan, "P value Sargan statistic",pvalue_sargan); /* gmm */ ivreg2 lwage76 (ed76=nearc4 daded momed) age76 age2 black smsa76 south76,gmm; scalar pvalue_sargan=e(jp); outreg2 using schooling, append ctitle("GMM") addstat("F-value test intrument relevance",e(idstat), "Sargan statistic",e(j),"Degrees freedom Sargan statistic",e(jdf), "P value Sargan statistic",pvalue_sargan); stop; log c; clear;