Dear Robert, I see, and thanks.
-
Login or Register
- Log in with
save d1, replace
cap program drop _all
scalar drop _all
macro drop _all
/* Convert CODE to PROGRAM */
program define twostep, rclass
tempfile mlogit
// first stage
statsby _b, saving(`mlogit', replace): mlogit choice_mnl edad1 edad2 d_mujer d_educacion_compacta2 ///
d_educacion_compacta3 d_castellano d_departamentos41 d_departamentos42 d_departamentos43 d_ingNoLaboral d_vivpropia d_ayudaFliarGob ///
d_TrabajoInformal d_contratoIndefinido d_hogarPobre, baseoutcome(3)
merge m:1 using `mlogit'
sort id
gen del1 = _eq1_b_edad1*edad1 + _eq1_b_edad2*edad2 + _eq1_b_d_mujer*d_mujer + _eq1_b_d_educacion_compacta2*d_educacion_compacta2 + ///
_eq1_b_d_educacion_compacta3*d_educacion_compacta3 + _eq1_b_d_castellano*d_castellano + _eq1_b_d_departamentos41*d_departamentos41 + ///
_eq1_b_d_departamentos42*d_departamentos42 + _eq1_b_d_departamentos43*d_departamentos43 + _eq1_b_d_ingNoLaboral*d_ingNoLaboral + ///
_eq1_b_d_vivpropia*d_vivpropia + _eq1_b_d_ayudaFliarGob*d_ayudaFliarGob + _eq1_b_d_TrabajoInformal*d_TrabajoInformal + ///
_eq1_b_d_contratoIndefinido*d_contratoIndefinido + _eq1_b_d_hogarPobre*d_hogarPobre + _eq1_b_cons
gen del2 = _eq2_b_edad1*edad1 + _eq2_b_edad2*edad2 + _eq2_b_d_mujer*d_mujer + _eq2_b_d_educacion_compacta2*d_educacion_compacta2 + ///
_eq2_b_d_educacion_compacta3*d_educacion_compacta3 + _eq2_b_d_castellano*d_castellano + _eq2_b_d_departamentos41*d_departamentos41 + ///
_eq2_b_d_departamentos42*d_departamentos42 + _eq2_b_d_departamentos43*d_departamentos43 + _eq2_b_d_ingNoLaboral*d_ingNoLaboral + ///
_eq2_b_d_vivpropia*d_vivpropia + _eq2_b_d_ayudaFliarGob*d_ayudaFliarGob + _eq2_b_d_TrabajoInformal*d_TrabajoInformal + ///
_eq2_b_d_contratoIndefinido*d_contratoIndefinido + _eq2_b_d_hogarPobre*d_hogarPobre + _eq2_b_cons
gen F1 = exp(del1)/(1+exp(del2)+exp(del1))
gen F2 = exp(del2)/(1+exp(del2)+exp(del1))
gen F3 = 1/(1+exp(del1)+exp(del2))
gen J1 = -invnormal(F1)
gen J2 = -invnormal(F2)
gen J3 = -invnormal(F3)
gen imr1 = -normalden(J1)/F1
gen imr2 = -normalden(J2)/F2
gen imr3 = -normalden(J3)/F3
// second stage
tempfile t1
save `t1'
forvalues i = 1/3 {
use `t1', clear
regress ln_w edad1 imr`i' if choice_mnl==`i'
local xedad1 = _b[edad1]
return scalar edad1_`i' = `xedad1'
local ximr = _b[imr`i']
return scalar imr_`i' = `ximr'
local xcons = _b[_cons]
return scalar cons_`i' = `xcons'
/* Now must drop variables created in the program
or generate will fail silently in replicates
because variables already exist */
}
drop _merge del2 del3 F1 F2 F3 J1 J2 J3 imr1 imr2 imr3
end
use d1, clear
/* Check Program twostep */
twostep
return list
/* Bootstrap program twostep */
bootstrap edad1_1 = r(edad1_1) imr1_1 = r(imr1_1) ///
edad1_2 = r(edad1_2) imr1_2 = r(imr1_2) ///
edad1_3 = r(edad1_3) imr1_3 = r(imr1_3), ///
nodrop reps(10): twostep
estat bootstrap, all
log close"
Comment