*********** simulation des transferts: prestations familiales, minimas sociaux, allocations logement *********** choix de l'année de simulation dans do_appel_parametres *********** Choix du répertoire racine dans do_appel_parametres (à exécuter en premier) clear set mem 500m set more off /******** appel des paramètres*/ do Programmes/do_appel_parametres /******** appel des variables*/ use Fichiers/indiv_demo_$annee, clear merge id_indiv using Fichiers/indiv_conj_$annee keep id_indiv pondv sexe couple marie concu pac men foy nenf* npers* y* rfr* age age_conj sort id_indiv merge id_indiv using Fichiers/indiv_logt_$annee keep id_indiv pondv sexe couple marie concu pac men foy nenf* npers* y* rfr* age age_conj locat loyer_verse zone sort id_indiv merge id_indiv using Fichiers/indiv_ded_$annee keep id_indiv pondv sexe couple marie concu pac men foy nenf* npers* y* rfr* age age_conj locat loyer_verse zone pens_alim_rec* sort id_indiv merge id_indiv using Fichiers/indiv_irpp_$annee keep id_indiv pondv sexe couple marie concu pac men foy nenf* npers* y* rfr* age age_conj locat loyer_verse zone pens_alim_rec* rfr* ppe_brut irpp qf gen calage=0 /***************************phase 1: simulation des prestations familiales*/ /*******************phase 1-1: simulation des allocations familiales*/ gen af_base=12*$bmaf*($af_enf1*cond(nenf+nenfmaj1819>=1,1,0)+$af_enf2*cond(nenf+nenfmaj1819>=2,1,0)+$af_enf3*cond(nenf+nenfmaj1819>=3,nenf+nenfmaj1819-2,0)) gen af_maj=12*$bmaf*($maj_enf1113*nenf1113+$maj_enf1415*nenf1415+$maj_enf1619*(nenf1617+nenfmaj1819))*cond(nenf+nenfmaj1819>=3,1,0) replace af_maj=af_maj+12*$bmaf*($maj_enf1113*cond(nenf1113+nenf1415+nenf1617+nenfmaj1819==2,cond(nenf1415+nenf1617+nenfmaj1819<2,1,0),0)+$maj_enf1415*cond(nenf1415+nenf1617+nenfmaj1819==2,cond(nenf1617+nenfmaj1819<2,1,0),0)+$maj_enf1619*cond(nenf1617+nenfmaj1819==2,1,0)) if nenf+nenfmaj1819==2 replace af_maj=af_maj+12*$bmaf*$for_enf20*nenfmaj20 if nenf+nenfmaj1819+nenfmaj20>=3 replace af_maj=af_maj/2 if marie==1 replace af_maj=0 if pac==1 replace af_base=af_base/2 if marie==1 replace af_base=0 if pac==1 gen af=af_base+af_maj /*******************phase 1-2: simulation du complément familial*/ gen couple_biact=0 if couple==1 replace couple_biact=1 if couple==1 & ya_irpp>$seuil_ya_cf & ya_irpp_conj+ya_irpp_concu>$seuil_ya_cf gen cf=0 replace cf=12*$bmaf*$cf if nenf-nenf02+nenfmaj1819>=3 & rfr_irpp+rfr_irpp_concu<$seuil_rfr_cf_mono*cond(couple_biact==0,1,0)+$seuil_rfr_cf_bi*cond(couple_biact==1,1,cond(couple==0,1,0))+$seuil_rfr_cf_enf*(nenf+nenfmaj1819-3) replace cf=cf/2 if marie==1 replace cf=0 if pac==1 /*******************phase 1-3: simulation de l'allocation de rentrée scolaire*/ gen ars=0 replace ars=$bmaf*($ars610*nenf610+$ars1114*nenf1113+$ars1517*(nenf1415+nenf1617)) if rfr_irpp+rfr_irpp_concu<$seuil_rfr_ars+$seuil_rfr_ars_enf*(nenf+nenfmaj1819-1) replace ars=ars/2 if marie==1 replace ars=0 if pac==1 /*******************phase 1-4: simulation de l'allocation de soutien familial*/ gen asf=0 replace asf=12*$bmaf*$asf*(nenf+nenfmaj1819) if couple==0 & pens_alim_rec==0 replace asf=0 if pac==1 /********************phase 1-5: simulation de la prestation d'accueil du jeune enfant*/ /*****prestations simulées: paje_naiss, paje_base et paje_clca (= ex-ape)*/ /*****prestations non simulées: paje_clcmg (= ex-aged) (=prestation en nature)*/ gen paje_naiss=0 replace paje_naiss=$bmaf*$paje_naiss*nenfnaiss if rfr_irpp+rfr_irpp_concu<$seuil_rfr_paje_mono*cond(couple_biact==0,1,0)+$seuil_rfr_paje_bi*cond(couple_biact==1,1,cond(couple==0,1,0))+$seuil_rfr_paje_enf*(nenf+nenfmaj1819-1) replace paje_naiss=paje_naiss/2 if marie==1 replace paje_naiss=0 if pac==1 gen paje_base=0 replace paje_base=12*$bmaf*$paje_base*nenf02 if rfr_irpp+rfr_irpp_concu<$seuil_rfr_paje_mono*cond(couple_biact==0,1,0)+$seuil_rfr_paje_bi*cond(couple_biact==1,1,cond(couple==0,1,0))+$seuil_rfr_paje_enf*(nenf+nenfmaj1819-1) replace paje_base=paje_base/2 if marie==1 replace paje_base=0 if pac==1 gen paje_clca=0 replace paje_clca=12*$bmaf*$paje_clca if nenf02>0 & ya_irpp==0 replace paje_clca=paje_clca/2 if marie==1 & ya_irpp_conj==0 replace paje_clca=0 if pac==1 gen paje=paje_naiss+paje_base+paje_clca /********************phase 1-6: total des prestations familiales*/ gen pf=af+cf+ars+asf+paje gen pf_foy=pf*(1+marie) /************************************phase 2: simulation des minimas sociaux*/ /*********************phase 2-1: calcul de revenu de référence pris en compte pour les minimas sociaux*/ gen y_foy=y_irpp_foy+y_irpp_concu+pens_alim_rec_foy+(af_base+cf+paje_base)*(1+marie) gen ya_foy=ya_irpp_foy+ya_irpp_concu gen yna_foy=y_foy-ya_foy /*********************phase 2-2: simulation du minimum vieillesse*/ gen mv_foy=0 replace mv_foy=max(12*$mv_seul-y_foy,0) if couple==0 & age>=$age_mv replace mv_foy=max(12*$mv_coup-y_foy,0) if couple==1 & (age>=$age_mv | age_conj>$age_mv) gen mv=mv_foy/(1+couple) replace yna_foy=yna_foy+mv_foy replace y_foy=ya_foy+yna_foy /*********************phase 2-3: simulation du revenu de solidarité active*/ /*********calcul du nombre de personnes à charges prises en compte pour le RSA*/ /***nombres de personnes à charge du foyer fiscal, du foyer social et du ménage*/ gen npac0=nenf+nenfmaj gen npac1=nenf+nenfmaj+nenf_concu gen npac2=max(npers_men-1-couple,0) /***npac prises en compte pour le RSA: npac du foyer social*/ gen npac=npac1 /*********calcul de l'allocation maximale*/ gen rsa_max=12*$brsa*(1+couple*$rsa_coup) replace rsa_max=rsa_max+12*$brsa*(cond(npac>=1,1,0)*$rsa_enf1+cond(npac>=2,1,0)*$rsa_enf2+max(npac-2,0)*$rsa_enf3) if couple==0 & nenf02==0 replace rsa_max=rsa_max+12*$brsa*(min(npac,2)*$rsa_enf2+max(npac-2,0)*$rsa_enf3) if couple==1 replace rsa_max=12*$brsa*($api+npac*$api_enf) if couple==0 & nenf02>0 gen rsa_logt=12*$brsa*(cond(1+couple+npac==1,1,0)*$rsa_logt1+cond(1+couple+npac==2,1,0)*$rsa_logt2+cond(1+couple+npac>=3,1,0)*$rsa_logt3) replace rsa_max=rsa_max-rsa_logt /**********calcul de l'allocation individuelle*/ gen rsa_foy=max(rsa_max-$tx_rsa*ya_foy-yna_foy,0) replace rsa_foy=0 if age<$age_rsa & age_conj<$age_rsa gen rsa_soc_foy=rsa_foy*cond(y_foy<=rsa_max,1,0) gen rsa_act_foy=rsa_foy*cond(y_foy>rsa_max,1,0) gen rsa=rsa_foy/(1+couple) gen rsa_soc=rsa_soc_foy/(1+couple) gen rsa_act=rsa_act_foy/(1+couple) replace rsa=0 if pac==1 replace rsa_soc=0 if pac==1 replace rsa_act=0 if pac==1 /**********réduction de ppe entrainée par le rsa*/ gen ppe=max(ppe_brut-rsa,0) gen ppe_rest=max(ppe-max(irpp,0),0) /**************************************phase 3: simulation de l'allocation logement*/ /********************phase 3-1: calcul du plafond de loyer par zone et de l'allocation maximale*/ /***npac pris en compte pour l'AL: npac du ménage*/ replace npac=npac2 /***zone 1*/ gen plaf_loyer=12*$plaf_loy_seul_z1 if couple==0 & npac==0 & zone==1 replace plaf_loyer=12*$plaf_loy_coup_z1 if couple==1 & npac==0 & zone==1 replace plaf_loyer=12*$plaf_loy_enf1_z1 if npac==1 & zone==1 replace plaf_loyer=12*$plaf_loy_enf1_z1+12*$plaf_loy_enf2_z1*(npac-1) if npac>1 & zone==1 /***zone 2*/ replace plaf_loyer=12*$plaf_loy_seul_z2 if couple==0 & npac==0 & zone==2 replace plaf_loyer=12*$plaf_loy_coup_z2 if couple==1 & npac==0 & zone==2 replace plaf_loyer=12*$plaf_loy_enf1_z2 if npac==1 & zone==2 replace plaf_loyer=12*$plaf_loy_enf1_z2+12*$plaf_loy_enf2_z2*(npac-1) if npac>1 & zone==2 /***zone 3*/ replace plaf_loyer=12*$plaf_loy_seul_z3 if couple==0 & npac==0 & zone==3 replace plaf_loyer=12*$plaf_loy_coup_z3 if couple==1 & npac==0 & zone==3 replace plaf_loyer=12*$plaf_loy_enf1_z3 if npac==1 & zone==3 replace plaf_loyer=12*$plaf_loy_enf1_z3+12*$plaf_loy_enf2_z3*(npac-1) if npac>1 & zone==3 /***charges*/ gen plaf_char=12*($plaf_char+$plaf_char_enf*npac) /***allocation individuelle maximale*/ gen al_max=0 replace al_max=min(plaf_loyer/(1+couple),loyer_verse)+plaf_char/(1+couple) if locat==1 /***indicatrice de plafonnement*/ gen plafz=0 replace plafz=1 if locat==1 & loyer_verse>=plaf_loyer/(1+couple) /*****************phase 3-2: calcul de la participation au loyer et de l'allocation versée*/ /******calcul du coefficient ctf*/ gen ctf=$tf_seul if couple==0 & npac==0 replace ctf=$tf_coup if couple==1 & npac==0 replace ctf=$tf_enf1 if npac==1 replace ctf=$tf_enf2 if npac==2 replace ctf=$tf_enf3 if npac==3 replace ctf=$tf_enf4 if npac==4 replace ctf=max($tf_enf4-(npac-4)*$tf_enf5,0) if npac>4 /******calcul du coefficient ctl*/ /***loyer de référence = plafond de loyer zone 2*/ gen loyer_ref=12*$plaf_loy_seul_z2 if couple==0 & npac==0 replace loyer_ref=12*$plaf_loy_coup_z2 if couple==1 & npac==0 replace loyer_ref=12*$plaf_loy_enf1_z2 if npac==1 replace loyer_ref=12*$plaf_loy_enf1_z2+12*$plaf_loy_enf2_z2*(npac-1) if npac>1 /***ratio loyer plafonné / loyer de référence*/ gen ratio_loyer_ref=min(plaf_loyer,loyer_verse*(1+couple))/loyer_ref if locat==1 /***calcul de ctl*/ gen ctl=$tl_0*ratio_loyer_ref if ratio_loyer_ref<=$tl_tr1 replace ctl=$tl_0*$tl_tr1+$tl_1*(ratio_loyer_ref-$tl_tr1) if ratio_loyer_ref>$tl_tr1 & ratio_loyer_ref<=$tl_tr2 replace ctl=$tl_0*$tl_tr1+$tl_1*($tl_tr2-$tl_tr1)+$tl_2*(ratio_loyer_ref-$tl_tr2) if ratio_loyer_ref>$tl_tr2 /***calcul de la participation*/ gen pp=12*$p0_al/(1+couple)+$p0_al_tx*al_max+(ctf+ctl)*max(rfr_irpp+rfr_irpp_concu-(1-$tx_abt_sal)*(rsa_max-af_base),0)/(1+couple) /***calcul de l'allocation individuelle versée*/ gen al=0 replace al=max(al_max-pp,0) if locat==1 gen al_foy=al*(1+couple) /*******************phase 3-3: calcul d'une allocation logement = allocation de zone*/ /***nouvelle allocation individuelle maximale*/ gen al_maxz=0 replace al_maxz=plaf_loyer/(1+couple)+plaf_char/(1+couple) if locat==1 /***nouveau calcul du coefficient ctl*/ gen ratio_loyer_refz=plaf_loyer/loyer_ref if locat==1 gen ctlz=$tl_0*ratio_loyer_refz if ratio_loyer_refz<=$tl_tr1 replace ctlz=$tl_0*$tl_tr1+$tl_1*(ratio_loyer_refz-$tl_tr1) if ratio_loyer_refz>$tl_tr1 & ratio_loyer_refz<=$tl_tr2 replace ctlz=$tl_0*$tl_tr1+$tl_1*($tl_tr2-$tl_tr1)+$tl_2*(ratio_loyer_refz-$tl_tr2) if ratio_loyer_refz>$tl_tr2 /***nouveau calcul de la participation et de l'allocation*/ gen ppz=12*$p0_al/(1+couple)+$p0_al_tx*al_maxz+(ctf+ctlz)*max(rfr_irpp+rfr_irpp_concu-(1-$tx_abt_sal)*(rsa_max-af_base),0)/(1+couple) gen alz=0 replace alz=max(al_maxz-ppz,0) if locat==1 gen alz_foy=alz*(1+couple) /****************************************phase 4: calcul du revenu total de transfert yt*/ gen yt=pf+mv+rsa+al+qf /****************************************phase 5: sauvegarde d'un fichier simulé indiv_transferts_$annee*/ keep id_indiv pondv age sexe men foy yt pf af af_base af_maj cf ars asf paje paje_naiss paje_base paje_clca mv mv_foy rsa rsa_* ppe ppe_rest al* plafz y_foy ya_foy yna_foy pf_foy order id_indiv pondv age sexe men foy yt pf af af_base af_maj cf ars asf paje paje_naiss paje_base paje_clca mv mv_foy rsa rsa_* ppe ppe_rest al* plafz y_foy ya_foy yna_foy pf_foy compress sort id_indiv save Fichiers/indiv_transferts_$annee, replace