Dear friends, I am trying on the stata command, igmobil with upward mobile index using a written program.The code is as below,
It is from the official help file. But it returns some error. I do not understand what the usage of the lines
Thank you so much!
Code:
clear
matrix C = (.25, .5*.25 \ .5*.25, .25)
set seed 12345
drawnorm u0 u1, n(2000) cov(C) /* normal r.v. */
generate son = exp(u1) /* lognormal r.v.*/
generate dad = exp(u0)
generate son_disc = irecode(u1, -1, -0.5, 0, 0.5, 1) /*discrete r.v.*/
generate dad_disc = irecode(u0, -1, -0.5, 0, 0.5, 1)
drop u*
capture program drop myindex
program myindex, rclass
syntax varlist(min=2 max=2 numeric) [if] [in] [, tau(real 0) s(real 0.25)]
marksample touse
tempvar y x ry rx diff
tempname num den
tokenize ‘varlist’
quietly {
generate ‘y’ = ‘1’ if ‘touse’
generate ‘x’ = ‘2’ if ‘touse’
cumul ‘y’, gen(‘ry’)
cumul ‘x’, gen(‘rx’)
count if (‘ry’-‘rx’) > ‘tau’ & ‘rx’ <= ‘s’ & ‘touse’
scalar ‘num’ = r(N)
count if ‘rx’ <= ‘s’ & ‘touse’
scalar ‘den’ = r(N)
return scalar UW = ‘num’/‘den’
}
end
igmobil son dad, nosingle noinequal userwritten(myindex son dad, tau(0.1) s(0.25)) classes(4)
Code:
marksample touse tempvar y x ry rx diff

Comment