Programming the statistical procedures from SAS

Proc Genmod ZINB distribution, error in estimation routine

Frequent Learner
Posts: 1

Proc Genmod ZINB distribution, error in estimation routine

[ Edited ]

I'm looking to run a series of zero-inflated negative binomial models for the purpose of creating region-specific adjusted rates for hospital service in newborns. However I'm getting "model did not converge warnings" as well as "Error in estimation routine."  I'm using SAS 9.4.


proc genmod data = indata;
class servicearea;
model SCD = servicearea d_BW|d_BW|d_BW|d_BW d_GA0-d_GA11
d_mult_birth d_outborn d_fetal_distress
d_breech d_congenital d_cord_prolapse
d_hypertension d_oligohydramnios d_polyhydramnios
d_steroid d_maternal_link d_sex
/dist=zinb link=log noint; zeromodel d_BW|d_BW|d_BW; ods output parameterestimates=param; run;

Where the dataset "indata" has 1,133,429 observations with no missing values and SCD is a count of the number of special care days (SCDs) that each newborn has during their birth hospitalization, with 89% having zero days.  Each of the "d_:" terms is a predictor of infant mortality and is coded as the difference from the mean value of that parameter.  The 4th order d_BW is birth weight, d_GA0-11 are 12 different gestational age categories, all others are presence/absense of various comorbidities.


The goal is to be able to exponentiate the estimates on the servicearea parameters then feed them as the dependent variable into a linear model to produce the final adjustment.


data param;
merge param (in=A rename=(estimate=beta))
      raw_rates (in=B keep = servicearea rawrate);
by servicearea;
if A and B and index(parameter,'servicearea') ge 1;

proc genmod data=param;
model beta = rawrate /noint;
ods output parameterestimates=param_b;

data param;
merge param (in=A)
      param_b (in=B rename=(estimate=beta_b));
by servicearea;
if A and B;
adjusted_rate = rate_mod * (1/beta_b);
Ask a Question
Discussion stats
  • 0 replies
  • 1 in conversation