clear all use accident3 local depvar "accidents" local indepvars "cvalue ibn.kids traffic" _rmcoll `indepvars', expand local cnames "`r(varlist)' _cons" local p : word count `cnames' matrix bt = J(1, `p', 0) matrix colnames bt = `cnames' _ms_omit_info bt matrix bto = r(omit) mata: void plleval3(real scalar todo, real vector b, /// real vector y, real matrix X, /// val, grad, hess) { real vector xb xb = X*b' val = -exp(xb) + y:*xb - lnfactorial(y) } y = st_data(., "`depvar'") X = st_data(., "`indepvars'") X = X,J(rows(X), 1, 1) mo = st_matrix("bto") ko = sum(mo) p = cols(mo) if (ko>0) { Ct = J(0, p, .) for(j=1; j<=p; j++) { if (mo[j]==1) { Ct = Ct \ e(j, p) } } Ct = Ct, J(ko, 1, 0) } else { Ct = J(0,p+1,.) } S = optimize_init() optimize_init_argument(S, 1, y) optimize_init_argument(S, 2, X) optimize_init_evaluator(S, &plleval3()) optimize_init_evaluatortype(S, "gf0") optimize_init_params(S, J(1, 7, .01)) optimize_init_constraints(S, Ct) bh = optimize(S) optimize_result_params(S) end