%let n=10000;
data t1;
do i=1 to &n;
x=rannor(123);
y=1+1*x+rannor(123);
x0=1;
output;
end;
keep y x x0;
run;
proc nlmixed data=t1;
parms b0 b1=0 s=2;
e=y-(b0 + b1*x);
*loglik=log(pdf('normal',e,0,s));
loglik=log( ( 1/(s*sqrt(2*constant('pi')))) * exp( -(y - (b0 + b1*x))**2/(2*s**2)) );
model y ~ general (loglik);
run;
proc optmodel;
set I = 1 .. &n;
number y{I};
number x{I};
read data t1 into [_n_] y x ;
var b0 init 0, b1 init 0, s init 2;
impvar loglik=sum{k in I}
-2*log( ( 1/(s*sqrt(2*constant('pi')))) * exp( -(y[k]- (b0 + b1*x[k]))**2/(2*s**2)) );
/* -2*log(pdf('normal', y[k] - (b0 + b1*x[k]))); */
min f = loglik;
reset printlevel=2;
solve with nlp / hesstype=full;
print b0 b1 s;
quit;