The two examples here use data set fish.sas7bdat.
*zero inflated poisson, producing the same result as "zip count child camper persons, inflate(child)" in Stata; proc nlmixed data=fish; parameters b0=0 b1=0 b2=0 b3 = 0 a0=0 a1 = 0 ; /* linear predictor for the inflation probability */ linpinfl = a0 + a1*child; /* infprob = inflation probability for zeros */ /* = logistic transform of the linear predictor*/ infprob = 1/(1+exp(-linpinfl)); /* Poisson mean */ lambda = exp(b0 + b1*child + b2*camper + b3*persons ); /* Build the ZIP log likelihood */ if count=0 then ll = log(infprob + (1-infprob)*exp(-lambda)); else ll = log((1-infprob)) - lambda + count*log(lambda) - lgamma(count + 1); model count ~ general(ll); run;Fit Statistics-2 Log Likelihood 1532.1 AIC (smaller is better) 1544.1 AICC (smaller is better) 1544.4 BIC (smaller is better) 1565.2 Parameter Estimates Standard Parameter Estimate Error DF t Value Pr > |t| Alpha Lower Upper Gradient b0 -1.0572 0.1812 250 -5.83 <.0001 0.05 -1.4141 -0.7003 0.00011 b1 -1.1675 0.09471 250 -12.33 <.0001 0.05 -1.3541 -0.9810 -0.00016 b2 0.7709 0.09384 250 8.21 <.0001 0.05 0.5861 0.9557 0.00005 b3 0.8886 0.04663 250 19.06 <.0001 0.05 0.7967 0.9804 0.000476 a0 -0.9150 0.2503 250 -3.66 0.0003 0.05 -1.4080 -0.4220 0.000018 a1 1.1857 0.2654 250 4.47 <.0001 0.05 0.6631 1.7083 2.408E-6 *zero inflated negative binomial, producing the same result as "zinb count child camper persons, inflate(child)" in Stata;; proc nlmixed data=fish; parameters b0=0 b1=0 b2=0 b3 = 0 a0=0 a1 = 0 alpha = 1; /* linear predictor for the inflation probability */ linpinfl = a0 + a1*child; /* infprob = inflation probability for zeros */ /* = logistic transform of the linear predictor*/ infprob = 1/(1+exp(-linpinfl)); /* negative binomial with mean-dispersion */ lambda = exp(b0 + b1*child + b2*camper + b3*persons ); /* Build the ZIP log likelihood */ m = 1/alpha; p = 1/(1+alpha*lambda); if count=0 then ll = log(infprob + (1-infprob)*(p**m)); else ll = log(1-infprob) + log(gamma(m + count)) - log(gamma(count + 1)) - log(gamma(m)) + m*log(p) + count*log(1-p); model count ~ general(ll); run;Fit Statistics -2 Log Likelihood 799.8 AIC (smaller is better) 813.8 AICC (smaller is better) 814.3 BIC (smaller is better) 838.5 Parameter Estimates Standard Parameter Estimate Error DF t Value Pr > |t| Alpha Lower Upper Gradient b0 -1.6599 0.3197 250 -5.19 <.0001 0.05 -2.2896 -1.0303 0.000035 b1 -1.2056 0.2715 250 -4.44 <.0001 0.05 -1.7402 -0.6709 -0.00029 b2 0.5834 0.2379 250 2.45 0.0149 0.05 0.1149 1.0520 -0.00006 b3 1.0516 0.1110 250 9.48 <.0001 0.05 0.8331 1.2702 -0.0016 a0 -4.4306 1.5163 250 -2.92 0.0038 0.05 -7.4169 -1.4442 -0.00024 a1 2.9265 0.8479 250 3.45 0.0007 0.05 1.2564 4.5965 -0.00011 alpha 1.7903 0.3264 250 5.49 <.0001 0.05 1.1475 2.4331 -0.00016