********************************************************************;
data probit;
do i = 1 to 50;
x=rannor(123);
y=1+1*x> rannor(123);
output;
end;
run;
proc logistic data=probit;
model y(event='1')=x/link=probit;
run;
proc iml;
use probit;
read all var{y x};
nobs= nrow(y);
yint=j(nobs,1) -y;
*define a likelihood fun;
start loglik(pr) global(y, yint, x, nobs);
c1 = pr[1]; c2 = pr[2];
xbeta=c1+c2#x;
p=probnorm(xbeta);
pint= j(nobs,1) - p;
logp=log(p#y + pint#yint);
ll=-2*logp[+];
return (ll);
finish loglik;
pr = j(1,2,1e-5 );
optn = {0 2 };
call nlpdd(rc, xr,"loglik", pr, optn);
print "Start" pr, "RC=" rc, "Opt Par" xr;
quit;
![](https://bbs-cdn.datacourse.cn/static/2017/f68.png)