**AUTEUR : Isabelle CADORET-DAVID** ALLOCATE 0 753 OPEN DATA essai.wks DATA(FORMAT=wks,ORG=obs) / PRINT / COMPUTE nobs = 753 SET nlfp = 1 - lfp PRINT / lfp nlfp DISP '*********************************' DISP '***Statistiques descriptives***' DISP '*********************************' TABLE TABLE(SMPL=lfp) TABLE(SMPL=nlfp) DISP '************************************************' DISP '***Donnees complémentaires : revenu, salaires***' DISP '************************************************' SET prin = faminc - (whrs*ww) TABLE 1 753 prin SET ax2 = ax**2 SET wa2 = wa**2 SET lww = log(ww) LINREG(SMPL=lfp) lww # CONSTANT wa we cit ax ax2 SET lwwc 429 753 = %beta(1)+%beta(2)*wa+%beta(3)*we+%beta(4)*cit+%beta(5)*ax+%beta(6)*ax2 SET lww1 = %IF(ww>0, lww, lwwc) PRINT / lww lwwc lww1 TABLE 1 753 lww1 TABLE 1 428 lww1 TABLE 429 753 lww1 SMPL SMPL DISP '******************************************************' DISP '***Procédure d"estimation en deux étapes d"Heckman***' DISP '******************************************************' PRB lfp # constant lww1 kl6 k618 wa we un cit prin PRJ(MILLS=corr) do iter=1,20 LINREG(SMPL=lfp) whrs / resids # CONSTANT kl6 k618 wa we prin lww corr COMPUTE sigma = sqrt(%seesq) end do iter PRJ(SCALE=sigma,DMILLS=dm) SET dm = dm + 1.0 MCOV(MATRIX=a,LASTREG,NOSQUARE) / dm MCOV(MATRIX=bb,LASTREG) / resids COMPUTE %XX = %mqform(bb,inv(a)) LINREG(CREATE,LASTREG,NOSCALE) whrs SMPL DISP '******************************************************' DISP '***Procédure d"estimation d"Heckman moindres carrés itératifs***' DISP '******************************************************' SMPL(SERIES=lfp) LINREG whrs # constant lww1 kl6 k618 wa we un cit prin COMPUTE sigma = sqrt(%seesq) DO iter=1,20 PRJ(SCALE=sigma,MILLS=mills) zseries SET ycorr = whrs - sigma*mills LINREG(NOPRINT) ycorr / resids # constant lww1 kl6 k618 wa we un cit prin set prod 1 428 = zseries*mills stat(noprint) prod compute nobscorr = %mean*428 SET resids = resids + (whrs - ycorr) set prodr 1 428 = resids*resids stat(noprint) prodr compute sumsq = %mean*428 COMPUTE sigma = sqrt(sumsq/%nobs-nobscorr) END DO iter PRJ(SCALE=sigma,DMILLS=dm1) SET dm1 = dm1 + 1.0 MCOV(MATRIX=aa,LASTREG,NOSQUARE) / dm MCOV(MATRIX=ab,LASTREG) / resids COMPUTE %XX = %mqform(ab,inv(aa)) LINREG(CREATE,LASTREG,NOSCALE) whrs