clear capture log close set more off global data "..." global output "..." use "${data}/Online_banking_wave1.dta" drop if q15==. & q16==. gen problems_w1=(q7>1 & q7<6) keep id problems_w1 sort id save "${data}/w1.dta", replace clear use "${data}/Online_banking_wave2.dta" sort id merge id using "${data}/w1.dta" tab _merge gen w2=_merge!=2 gen longitud=_merge==3 gen female_w2=gender==2 gen age_over49=age>=50 gen single_w2=hh_size==1 gen high_educ_w2=education<4 gen job_dep_w2=(occupation==3|occupation==4|occupation==5|occupation==6|occupation==7) gen job_indep_w2=(occupation==1|occupation==2|occupation==8) gen north_w2=(area<3) gen centre_w2=(area==3) gen problems_w2=(q7>1 & q7<6) replace problems_w2=problems_w1 if (problems_w1==1 & problems_w2==0) gen self_w2=1 if (q13==1|q13bis==1) replace self_w2=2 if (q13==2|q13bis==2) replace self_w2=3 if (q13==3|q13bis==3) replace self_w2=4 if (q13==4|q13bis==4) replace self_w2=5 if (q13==5|q13bis==5) ren q15 v_Carl_w2 ren q16 v_Marine_w2 keep id w2 longitud group1 female* age* single* high_educ* job_dep* job_indep* north* centre* problems* self* v_Carl* v_Marine* order id female* age* high_educ* single* job_dep* job_indep* north* centre* problems* self* v_Carl* v_Marine* sort id save "${data}/online_banking_data.dta", replace keep if w2==1 sort id gen id2=_n ren self_w2 y_sodd3 ren v_Carl_w2 y_sodd1 ren v_Marine_w2 y_sodd2 sum tab group1, gen(group_) gen l_g1=longitud*group_1 gen l_g2=longitud*group_2 gen l_g3=longitud*group_3 gen l_g4=longitud*group_4 gen groups_8=1 replace groups_8=2 if (group_2==1 & l_g2==0) replace groups_8=3 if (group_3==1 & l_g3==0) replace groups_8=4 if (group_4==1 & l_g4==0) replace groups_8=5 if (group_1==1 & l_g1==1) replace groups_8=6 if (group_2==1 & l_g2==1) replace groups_8=7 if (group_3==1 & l_g3==1) replace groups_8=8 if (group_4==1 & l_g4==1) gen g_1=(groups_8==1|groups_8==2) gen g_2=(groups_8==3|groups_8==4) gen g_3=(groups_8==5|groups_8==6) gen g_4=(groups_8==7|groups_8==8) ren g_2 self_AFTER_Ref ren g_3 self_BEFORE_Lon ren g_4 self_AFTER_Lon reshape long y_sodd, i(id2) j(item) drop if y_sodd==0 tab item, gen(i) sort id item rename i3 self for var female_w2 age_over49 high_educ_w2 single_w2 north_w2 centre_w2 job_dep_w2 job_indep_w2 problems_w2 self_AFTER_Ref self_BEFORE_Lon self_AFTER_Lon: gen s_X=self*X gen vign = 1-self gen random=1 eq het: vign self eq fac1: random constraint def 1 [lns1]self=0 eq thresh: female_w2 age_over49 high_educ_w2 single_w2 north_w2 centre_w2 job_dep_w2 job_indep_w2 problems_w2 self_AFTER_Ref self_BEFORE_Lon self_AFTER_Lon *** KAPTEYN ET AL. VERSION OF THE MODEL #delimit; gllamm y_sodd s_female_w2 s_age_over49 s_high_educ_w2 s_single_w2 s_north_w2 s_centre_w2 s_job_dep_w2 s_job_indep_w2 s_problems_w2 s_self_AFTER_Ref s_self_BEFORE_Lon s_self_AFTER_Lon i1 i2, i(id2) link(soprobit) s(het) constr(1) eq(fac1) ethresh(thresh) copy trace; #delimit cr test [_cut11] test [_cut12] test [_cut13] test [_cut14] test ([_cut11]) ([_cut12]) ([_cut13]) ([_cut14]) test [y_sodd]s_self_AFTER_Ref test [y_sodd]s_self_BEFORE_Lon=[y_sodd]s_self_AFTER_Lon test [y_sodd]s_self_BEFORE_Lon test [y_sodd]s_self_AFTER_Ref=[y_sodd]s_self_AFTER_Lon test [_cut11]self_AFTER_Ref test [_cut11]self_BEFORE_Lon=[_cut11]self_AFTER_Lon test [_cut11]self_BEFORE_Lon test [_cut11]self_AFTER_Ref=[_cut11]self_AFTER_Lon test [_cut12]self_AFTER_Ref test [_cut12]self_BEFORE_Lon=[_cut12]self_AFTER_Lon test [_cut12]self_BEFORE_Lon test [_cut12]self_AFTER_Ref=[_cut12]self_AFTER_Lon test [_cut13]self_AFTER_Ref test [_cut13]self_BEFORE_Lon=[_cut13]self_AFTER_Lon test [_cut13]self_BEFORE_Lon test [_cut13]self_AFTER_Ref=[_cut13]self_AFTER_Lon test [_cut14]self_AFTER_Ref test [_cut14]self_BEFORE_Lon=[_cut14]self_AFTER_Lon test [_cut14]self_BEFORE_Lon test [_cut14]self_AFTER_Ref=[_cut14]self_AFTER_Lon *** KING ET AL. VERSION OF THE MODEL #delimit; gllamm y_sodd s_female_w2 s_age_over49 s_high_educ_w2 s_single_w2 s_north_w2 s_centre_w2 s_job_dep_w2 s_job_indep_w2 s_problems_w2 s_self_AFTER_Ref s_self_BEFORE_Lon s_self_AFTER_Lon i1 i2, i(id2) link(soprobit) s(het) constr(1) eq(fac1) ethresh(thresh) copy trace init; #delimit cr test [_cut11] test [_cut12] test [_cut13] test [_cut14] test ([_cut11]) ([_cut12]) ([_cut13]) ([_cut14]) test [y_sodd]s_self_AFTER_Ref test [y_sodd]s_self_BEFORE_Lon=[y_sodd]s_self_AFTER_Lon test [y_sodd]s_self_BEFORE_Lon test [y_sodd]s_self_AFTER_Ref=[y_sodd]s_self_AFTER_Lon test [_cut11]self_AFTER_Ref test [_cut11]self_BEFORE_Lon=[_cut11]self_AFTER_Lon test [_cut11]self_BEFORE_Lon test [_cut11]self_AFTER_Ref=[_cut11]self_AFTER_Lon test [_cut12]self_AFTER_Ref test [_cut12]self_BEFORE_Lon=[_cut12]self_AFTER_Lon test [_cut12]self_BEFORE_Lon test [_cut12]self_AFTER_Ref=[_cut12]self_AFTER_Lon test [_cut13]self_AFTER_Ref test [_cut13]self_BEFORE_Lon=[_cut13]self_AFTER_Lon test [_cut13]self_BEFORE_Lon test [_cut13]self_AFTER_Ref=[_cut13]self_AFTER_Lon test [_cut14]self_AFTER_Ref test [_cut14]self_BEFORE_Lon=[_cut14]self_AFTER_Lon test [_cut14]self_BEFORE_Lon test [_cut14]self_AFTER_Ref=[_cut14]self_AFTER_Lon clear use "${data}/online_banking_data.dta" keep if w2==1 & longitud==0 sort id gen id2=_n ren self_w2 y_sodd3 ren v_Carl_w2 y_sodd1 ren v_Marine_w2 y_sodd2 sum gen self_AFTER_Ref=(group1==3|group1==4) reshape long y_sodd, i(id2) j(item) drop if y_sodd==0 tab item, gen(i) sort id item rename i3 self for var female_w2 age_over49 high_educ_w2 single_w2 north_w2 centre_w2 job_dep_w2 job_indep_w2 problems_w2 self_AFTER_Ref: gen s_X=self*X gen vign = 1-self gen random=1 eq het: vign self eq fac1: random constraint def 1 [lns1]self=0 eq thresh: female_w2 age_over49 high_educ_w2 single_w2 north_w2 centre_w2 job_dep_w2 job_indep_w2 problems_w2 self_AFTER_Ref *** KAPTEYN ET AL. VERSION OF THE MODEL ON THE REFRESHER SAMPLE OF WAVE2 ONLY #delimit; gllamm y_sodd s_female_w2 s_age_over49 s_high_educ_w2 s_single_w2 s_north_w2 s_centre_w2 s_job_dep_w2 s_job_indep_w2 s_problems_w2 s_self_AFTER_Ref i1 i2, i(id2) link(soprobit) s(het) constr(1) eq(fac1) ethresh(thresh) copy trace; #delimit cr