dear Shareen,
I've written this do-file for the estimation of a
censored ordered probit. Many thanks to William Gould
for his help. The file estimates school attainment as
in your case. The likelihood function is a modified
ordered probit function (as in Maddala pag 48) and is
the sum of the LF for the censored and the uncensored
observations. I limited the number of outcomes to 7
because I found some problems in the estimation:
- you might get negative cut-off points, I think these
should be constrained to be larger than zero, though
I've seen published papers with negative cutoffs. But
I dont know how to do this.
- I guess it would work better using initial values
estimated on an ordinary ord probit or on the first
equation of the model. But again I have to find out
how to do this.
hope this can help
Edoardo
***CENSORED ORDERED PROBIT MODEL*****
/*'att', children attending school are censored
ovbservations.
The program maxcens maximises a likelihood function
which is the sum of the LF of uncensored and
uncensored observations.
NOTE: convergence is achieved with difficulty
cut-off values are out of sensible range*/
/*define school attainment dependent variable*/
gen school1 =school==0
/*never been to school*/
gen school2 =school>0 & school<4
/*first half primary*/
gen school3 =school>3 & school<7
/*second half primary*/
gen school4 =school==7
/*jss1*/
gen school5 =school==8
/*JSS2*/
gen school6 =school==9
/*JSS3*/
gen school7 =school>9
/*all beyond*/
gen unc=att==0 /*define
uncensored observation: children not attending
school*/
cap program drop maxcens
program define maxcens
args lnf1 theta1 cut1 cut2 cut3 cut4 cut5 cut6
qui replace `lnf1' =
unc*(ln(($ML_y1*normprob(`cut1'-`theta1'))+/*
*/
($ML_y2*(normprob(`cut2'-`theta1')-normprob(`cut1'
-`theta1')))+ /*
*/
($ML_y3*(normprob(`cut3'-`theta1')-normprob(`cut2'
-`theta1')))+ /*
*/
($ML_y4*(normprob(`cut4'-`theta1')-normprob(`cut3'
-`theta1')))+ /*
*/
($ML_y5*(normprob(`cut5'-`theta1')-normprob(`cut4'
-`theta1')))+ /*
*/
($ML_y6*(normprob(`cut6'-`theta1')-normprob(`cut5'
-`theta1')))+ /*
*/
($ML_y7*(1-normprob(`cut6' -`theta1')))))+ /*
*/ att*(ln(($ML_y1)+/*
*/
($ML_y2*(1-normprob(`cut1'-`theta1')))+ /*
*/
($ML_y3*(1-normprob(`cut2'-`theta1')))+ /*
*/
($ML_y4*(1-normprob(`cut3'-`theta1')))+ /*
*/
($ML_y5*(1-normprob(`cut4'-`theta1')))+ /*
*/
($ML_y6*(1-normprob(`cut5'-`theta1')))+ /*
*/
($ML_y7*(1-normprob(`cut6' -`theta1')))))
end
ml model lf maxcens (school1 school2 school3 school4
school5 school6 school7= rural sex age ,nocons) /cut1
/cut2 /cut3 /cut4 /cut5 /cut6
ml search, repeat(100)
ml maximize, difficult
log close
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/