----------------------------------------------------------------------------------------------- name: log: U:\projects\misc\probit\probit.txt log type: text opened on: 30 Aug 2013, 09:54:18 . . // Simulate data . clear . set scheme s1mono . set seed 12345678 . set obs 5000 obs was 0, now 5000 . gen x1 = rchi2(1)+2 . . gen pr1 = exp(-1+0.1*x1) /(1+exp(-1+0.1*x1)) . gen y = rbinomial(1, pr1) . . . // Program likelihood evaluator . program probit_lf 1. version 12 2. args todo b lnf 3. tempvar xb lj 4. mleval `xb' = `b' 5. * latent variable assumed cumm standard normal . qui gen double `lj' = normal( `xb') /* > */ if $ML_y1 == 1 6. qui replace `lj' = normal(-`xb') /* > */ if $ML_y1 == 0 7. qui mlsum `lnf' = ln(`lj') 8. end . . ml model d0 probit_lf (y= x1) . ml search initial: log likelihood = -3465.7359 alternative: log likelihood = -3216.5732 rescale: log likelihood = -3216.5732 . *set trace on . ml maximize initial: log likelihood = -3216.5732 rescale: log likelihood = -3216.5732 Iteration 0: log likelihood = -3216.5732 Iteration 1: log likelihood = -3183.3714 Iteration 2: log likelihood = -3183.3701 Iteration 3: log likelihood = -3183.3701 Number of obs = 5000 Wald chi2(1) = 43.05 Log likelihood = -3183.3701 Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ y | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- x1 | .0826858 .0126015 6.56 0.000 .0579872 .1073843 _cons | -.6603764 .0420233 -15.71 0.000 -.7427405 -.5780123 ------------------------------------------------------------------------------ . * note parameters are for the cum standard normal but data simualated using . * logit model . est sto myprobit . . * check predictions . predict yhat . sum y yhat Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- y | 5000 .34 .4737561 0 1 yhat | 5000 -.4144288 .118727 -.4950049 .8208762 . . * Compare slopes . lowess y x1, scale(0.5) . line yhat x1, sort . . * compare to Stata's probit . probit y x1 Iteration 0: log likelihood = -3205.1774 Iteration 1: log likelihood = -3183.3725 Iteration 2: log likelihood = -3183.3701 Iteration 3: log likelihood = -3183.3701 Probit regression Number of obs = 5000 LR chi2(1) = 43.61 Prob > chi2 = 0.0000 Log likelihood = -3183.3701 Pseudo R2 = 0.0068 ------------------------------------------------------------------------------ y | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- x1 | .0826858 .0126015 6.56 0.000 .0579873 .1073843 _cons | -.6603765 .0420233 -15.71 0.000 -.7427405 -.5780124 ------------------------------------------------------------------------------ . est sto probit . . est table myprobit probit, stat(ll) ---------------------------------------- Variable | myprobit probit -------------+-------------------------- eq1 | x1 | .08268576 _cons | -.6603764 -------------+-------------------------- y | x1 | .08268578 _cons | -.66037649 -------------+-------------------------- Statistics | ll | -3183.3701 -3183.3701 ---------------------------------------- . . . log close name: log: U:\projects\misc\probit\probit.txt log type: text closed on: 30 Aug 2013, 09:54:25 -----------------------------------------------------------------------------------------------