/* ************************************************************************ */ /* CHAPITRE 13 - ANALYSE DU MARCHE DU TRAVAIL NON QUALIFIE EN FRANCE */ /* ************************************************************************ */ libname exo 'Z:\Econometrie appliquee\donnees'; ods pdf file="Z:\Econometrie appliquee\Resultats\chapitre13.pdf"; title; * -------------------------------------------------------------------------- ; * wouv : salaire annuel net moyen des ouvriers exprimé en Francs courants ; * wempl : salaire annuel net moyen des employés exprimé en Francs courants ; * louv : nombre d"ouvriers exprimé en années travail ; * lempl : nombre d"employés exprimé en années travail ; * l : effectifs salariés non qualifiés ; * w : salaire annuel net moyen des salariés non qualifiés ; * uouv : taux de chômage des ouvriers ; * uempl : taux de chômage des employés ; * u : moyenne du taux de chômage des ouvriers et des employés ; * P : le prix implicite à la production ; * pns : le pouvoir de négociation du syndicat évalué avec un modèle Probit ; * m : le nombre d"insider ; * we : le salaire alternatif que les salariés non qualifiés ; * -------------------------------------------------------------------------- ; * ----------------------------------------------------- ; * Problème n°13.1 : estimation de l'équation de salaire ; * ----------------------------------------------------- ; * Point 1 : Estimation avec la méthode des MCO et sauvegarde des résidus ; * ---------------------------------------------------------------------- ; data chapit13; set exo.chapit13; * Transformation des données en log; logwe = log(we); logp = log(p); logm = log(m); logw = log(w); run; proc reg data=chapit13 outest=coeff covout; model logw = logwe logp logm u pns / dw; output out=res r=res_est; run; quit; * Point 3 : estimation avec la methode des variables instrumentales ; * ----------------------------------------------------------------- ; data chapit13; set chapit13; logwe1 = lag1(logwe); u1 = lag1(u); if date=88 then do; logwe1=.; u1 =.; end; run; proc syslin data=chapit13 2sls; instruments logwe1 logp u1 pns logm; model logw = logwe logp u pns logm; run; * ---------------------------------------------------------------------------------- ; * Problème n°13.2 : Evaluation de l'équation de salaire avec les effets individuels ; * ---------------------------------------------------------------------------------- ; * Point 1 : Modèle à effets aléatoires individuels (MCQG); * ------------------------------------------------------ ; proc sort data=chapit13; by ident date; run; proc tscsreg data=chapit13 outest=effet_alea covout; model logw = logwe logp u pns logm / ranone ; id ident date; run; * Points 2 à 4 : Modèle à effets fixes individuels (MCO) ; * ------------------------------------------------------ ; proc tscsreg data=chapit13 outest=effet_fixe ; model logw = logwe logp u pns logm / fixone ; id ident date; run; * Point 5 : Estimation avec la méthode des var. instrumentales ; * ------------------------------------------------------------ ; data chapit13; set chapit13; logwe2 = lag2(logwe); u2 = lag2(u); logp2 = lag2(logp); logm2 = lag2(logm); pns2 = lag2(pns); dlogw = logw - lag(logw); dlogwe = logwe - lag(logwe); dlogp = logp - lag(logp); dlogm = logm - lag(logm); du = u - lag(u); dpns = pns - lag(pns); if date=88 then do; dlogw = .; dlogwe = .; dlogp = .; dlogm = .; du = .; dpns = .; end; if date in(88,89) then do; logwe2 = .; u2 = .; logp2 = .; logm2 = .; pns2 = .; end; run; proc syslin data=chapit13 2sls; instruments logwe2 logp2 u2 pns2 logm2; model dlogw = dlogwe dlogp du dpns dlogm; restrict intercept=0; run; * ************************************************************************* ; * Problème n°13.3 : Comparaison des estimateurs MCO, MCG, Within et Between ; * ************************************************************************* ; proc means data=chapit13 mean noprint; var logw logm logp logwe; output out=A mean=logwmeana logmmeana logpmeana logwemeana; run; data A (drop=_type_ _freq_); set A; run; data chapit13A; if _N_ = 1 then set A; set chapit13; run; data chapit13A; set chapit13A; logwea = logwe-logwemeana; logwa = logw-logwmeana; logma = logm-logmmeana; logpa = logp-logpmeana; run; * MCO ; * --- ; proc reg data=chapit13A outsscp=XXMCO; model logwa = logwea logma logpa; run; quit; * MCQG ; * ---- ; proc tscsreg data=chapit13A; id ident date; model logwa = logwea logma logpa / ranone; run; quit; * WITHIN ; * ------ ; proc means data=chapit13 noprint; var logw logm logp logwe; class ident; output out=B mean=logwmeanb logmmeanb logpmeanb logwemeanb; run; data B (drop=_type_ _freq_); set B; if ident=. then delete; run; proc sort data=chapit13; by ident; run; proc sort data=B; by ident; run; data chapit13B; merge chapit13 B; by ident; run; data chapit13B; set chapit13B; logweb = logwe-logwemeanb; logwb = logw-logwmeanb; logmb = logm-logmmeanb; logpb = logp-logpmeanb; run; * Within ; * ------ ; proc reg data=chapit13B outsscp=XXWITHIN outest=estWithin; model logwb = logweb logmb logpb; run; quit; * BETWEEN ; * ------ ; proc sort data=chapit13A; by ident; run; proc sort data=chapit13B; by ident; run; data chapit13C; merge chapit13A chapit13B; by ident; logwec = logwemeanb-logwemeana; logwc = logwmeanb-logwmeana; logmc = logmmeanb-logmmeana; logpc = logpmeanb-logpmeana; run; proc reg data=chapit13C outsscp=XXBETWEEN outest=estBetween; model logwc = logwec logmc logpc; run; quit; * Comparaison des estimateurs MCO, Within et Between ; * -------------------------------------------------- ; data xxmco (drop=_TYPE_ _NAME_ Intercept logwa); set xxmco; if _name_ not in("logwea","logma","logpa") then delete; run; data xxWithin (drop=_TYPE_ _NAME_ Intercept logwb); set xxWithin; if _name_ not in("logweb","logmb","logpb") then delete; run; data estcithin (keep=logweb logpb logmb); set estwithin; run; data xxBetween (drop=_TYPE_ _NAME_ Intercept logwc); set xxBetween; if _name_ not in("logwec","logmc","logpc") then delete; run; data estbetween (keep=logwec logpc logmc); set estbetween; run; proc iml; use xxmco; read all var{logwea,logpa,logma} into XX; use XXWITHIN; read all var{logweb,logpb,logmb} into XXW; XX1=INV(XX) * XXW; create matrice_pond from XX1; append from XX1; close matrice_pond; quit; proc print data=matrice_pond; run; proc iml; use estWithin; read all var{logweb,logpb,logmb} into ESTW; use estBetween; read all var{logwec,logpc,logmc} into ESTB; use matrice_pond; read all var{col1,col2,col3} into POND; VAL = POND * T(ESTW) + (I(3)-POND) * T(ESTB); create valcal from val; append from val; close valcal; quit; proc print data=valcal; run; ods pdf close;