05-23-2017 11:07 AM - edited 05-24-2017 08:25 AM
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; rate_mod=exp(beta); run; proc genmod data=param; model beta = rawrate /noint; ods output parameterestimates=param_b; run; 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); run;