use mroz; read all into y var{lwage}; read all into x var{one educ exper exper2}; read all into x1 var{educ}; /* instrument matrix includes all external and internal exogenous variables */ read all into z var {one exper exper2 mothereduc fathereduc}; * iv; read all into z1 var {mothereduc fathereduc}; * external iv; read all into z2 var {one exper exper2}; * included iv; rname = {one educ exper exper2}; /* Testing Overidentifying Restrictions Module */ *===============================================; start overid; num_overid = l-k; * number of surplus IV; sargan = n*(ehat`*z*inv(z`*z)*z`*ehat)/(ehat`*ehat); chi2_crit = cinv(.95,(l-k)); sargan_p = 1-probchi(sargan,(l-k)); print / 'Sargan chi-square test of surplus instrument validity' ,,sargan num_overid chi2_crit sargan_p; den_df = n-l; * N - total number of IV; /* Basmann test statistic eq */ basmann = ((n-l)/(l-k))*(ehat`*z*inv(z`*z)*z`*ehat)/ (ehat`*ehat - ehat`*z*inv(z`*z)*z`*ehat); f_crit = finv(.95,l-k,n-l); basmann_p = 1-probf(basmann,(l-k),(n-l)); print ,, 'Basmann F-test of surplus instrument validity' , basmann num_overid den_df f_crit basmann_p; finish; run overid;