*** construcciÃ³n del Ã­ndice de orÃ­genes sociales eder 2017


*** insumos: ISEI, aÃ±os de escolaridad, Ã­ndice de activos


** aÃ±os de escolaridad del principal sosten


* datos

	use "/Users/patricio/Dropbox/datos/eder2017/persona.dta", clear
	keep folioviv foliohog id_pobla edad sexo
	tempfile a
	sort folioviv foliohog id_pobla
	save `a', replace

	use "/Users/patricio/Dropbox/datos/eder2017/antecedentes.dta", clear
	sort folioviv foliohog id_pobla
	merge folioviv foliohog id_pobla using `a'
	keep if _merge==3
	drop _merge

	destring edad sexo sosten nivel_* grado_* television automovil estufa refrigera lavadora_v ///
			licuadora agua_entub tocadiscos telefono camara enciclope emple_dom techo_loza 	///
			banio_int calle_pav anim_trab ganado tractor sinco*, replace

* asisngamos nivel y grado cuando sosten es padre

	gen nivels=nivel_p if sosten==1
	gen grados=grado_p if sosten==1

* asignamos nivel y grado cuando sosten es madre
	replace nivels=nivel_m if sosten==2
	replace grados=grado_m if sosten==2

* asignamos la madre cuando sosten es otra persona
	replace nivels=nivel_m if sosten>2
	replace grados=grado_m if sosten>22

* hacemos recuperaciÃ³n cruzada para quienes no saben (madre x padre, padre x madre).

	replace nivels=nivel_m if nivels==99
	replace grados=grado_m if nivels==99

	replace nivels=nivel_p if nivels==99
	replace grados=grado_p if nivels==99


* para quienes tienen nivel pero no saben el grado, asignamos mediana en el grado

	table nivels if grados<99 [aw=factor], c(p50 grados)

replace grados=	3	if nivels==	1	 & (grados==99 | grados==.)
replace grados=	6	if nivels==	2	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	3	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	4	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	5	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	6	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	7	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	8	 & (grados==99 | grados==.)
replace grados=	4	if nivels==	9	 & (grados==99 | grados==.)
replace grados=	4	if nivels==	10	 & (grados==99 | grados==.)
replace grados=	2	if nivels==	11	 & (grados==99 | grados==.)
replace grados=	3	if nivels==	12	 & (grados==99 | grados==.)

* aÃ±os de escolaridad
* cualquier nivel de preescolar se considera = 1 aÃ±o de escolaridad


	gen anescs=-1
	replace anescs=0 if nivels==0
	replace anescs=1 if nivels==1
	replace anescs=grados if nivels==2
	replace anescs=grados+6 if nivels==3
	replace anescs=grados+9 if nivels==4
	replace anescs=grados+9 if nivels==5
	replace anescs=grados+6 if nivels==6
	replace anescs=grados+9 if nivels==7
	replace anescs=grados+12 if nivels==8
	replace anescs=grados+12 if nivels==9
	replace anescs=grados+12 if nivels==10
	replace anescs=grados+16 if nivels==11
	replace anescs=grados+18 if nivels==12
	replace anescs=. if anesc==-1

** ISEI PRINCIPAL SOSTEN

	gen sincos=-1
	replace sincos=sinco_p if (sosten==1 | sosten>2)
	replace sincos=sinco_m if sosten==2


	** Imputaciones cruzadas si estÃ¡n perdidos

	replace sincos=sinco_p if (sincos<1111 | sincos>9899) & (sinco_p<1111 | sinco_p>=9899)
	replace sincos=sinco_m if (sincos<1111 | sincos>9899) & (sinco_m<1111 | sinco_m>=9899)
	replace sincos=9999 if sincos<1111 | sincos>=9899

	** convertimos a isco88

	rename sincos sinco
	do "/Users/patricio/Dropbox/datos/sinco a isco88/codigo de paso sinco-isco88.do"
	replace isco88=9999 if isco88==-1

	** convetimos a isco88 a isei

	do "/Users/patricio/Dropbox/datos/isco88-isei/isco88-isei.do"
	replace isei=. if isei==-1
	rename isei iseis

** Ãndice de riqueza

	recode television automovil estufa refrigera lavadora_v ///
			licuadora agua_entub tocadiscos telefono camara enciclope emple_dom techo_loza 	///
			banio_int calle_pav anim_trab ganado tractor (1=1)(2=0)

	* ocupaciones agrÃ­colas
	gen agricola=0
	replace agricola=1 if isco88==1221
	replace agricola=1 if isco88>=6000 & isco88<=6999
	replace agricola=1 if isco88>=9200 & isco88<=9299
	replace anim_trab=1 if agricola==0
	replace ganado=1 if agricola==0
	replace tractor=1 if agricola==0


	* factorial

	polychoricpca television automovil estufa refrigera lavadora_v ///
			licuadora agua_entub tocadiscos telefono camara enciclope emple_dom techo_loza 	///
			banio_int calle_pav anim_trab ganado tractor [fw=fac], score(riqueza) nscore(2)

	corr television automovil estufa refrigera lavadora_v ///
			licuadora agua_entub tocadiscos telefono camara enciclope emple_dom techo_loza 	///
			banio_int calle_pav anim_trab ganado tractor riqueza1

	* factor riqueza1 absorbe 69% de varianza comÃºn, lo convertimos en indice de riqueza

	rename riqueza1 riquezas



*** establecemos imputaciones para escolaridad basadas en combinaciÃ³n de
*** isei, riqueza, edad y sexo (sÃ³lo se imputa cuando estas cuatro variables tienen valores vÃ¡lidos

	qreg anescs iseis riquezas edad i.sexo [pw=fac]
	predict anescsi
	replace anescsi=round(anescsi)
	recode anescsi min/0=0

* ahora imputamos isei en funcion a partir de escolaridad, riqueza, edad y sexo (sÃ³lo se imputa cuando
* estas cuatro variables tienen valores validos y no imputados)

	qreg iseis anescs riquezas edad i.sexo [pw=fac]
	predict iseisi
	replace iseisi=round(iseisi)


** asignamos valores imputados

	replace anescs=anescsi if anescs==.
	replace iseis=iseisi if iseis==.

** estandarizamos cada uno de los tres componentes por grupos quinquenales de edad

	gen grupos=int(edad/5)-3
	gen anescs_std=.
	gen iseis_std=.
	gen riquezas_std=.


	local i=1
		while `i'<=7 {
			summ anescs if grupo==`i' [aw=fac]
			gen mean=r(mean)
			gen sd=r(sd)
			replace anescs_std=(anescs-mean)/sd if grupo==`i'
			drop mean sd
			summ iseis if grupo==`i' [aw=fac]
			gen mean=r(mean)
			gen sd=r(sd)
			replace iseis_std=(iseis-mean)/sd if grupo==`i'
			drop mean sd
			summ riquezas if grupo==`i' [aw=fac]
			gen mean=r(mean)
			gen sd=r(sd)
			replace riquezas_std=(riquezas-mean)/sd if grupo==`i'
			drop mean sd
			local i=`i'+1
			}


* construimos Ã­ndice de orÃ­genes sociales

	factor anescs_std iseis_std riquezas_std [fw=fac], pcf
	predict ios


* quintiles

	gen iosquintiles=.

	local i=1
		while `i'<=7 {
			xtile x=ios if grupo==`i' [fw=fac], nq(5)
			replace iosquintiles=x if grupo==`i'
			drop x
			local i=`i'+1
			}


* cuartiles


	gen ioscuartiles=.

	local i=1
		while `i'<=7 {
			xtile x=ios if grupo==`i' [fw=fac], nq(4)
			replace ioscuartiles=x if grupo==`i'
			drop x
			local i=`i'+1
			}

* terciles

	gen iosterciles=.

	local i=1
		while `i'<=7 {
			xtile x=ios if grupo==`i' [fw=fac], nq(3)
			replace iosterciles=x if grupo==`i'
			drop x
			local i=`i'+1
			}

* etiquetamos
	label var ios "Ãndice de OrÃ­genes Sociales (IOS)"
	label var iosquintiles "Quintiles IOS"
	label var ioscuartiles "Cuatiles IOS"
	label var iosterciles "Terciles IOS"

* guardamos
	keep folioviv foliohog id_pobla ios*
	sort folioviv foliohog id_pobla
	save "/Users/patricio/Dropbox/datos/eder2017/ios.dta"