Rick has addressed GENMOD's warning. I will comment on why PROC SEVERITY doesn't throw a similar warning. PROC SEVERITY supports multiple distributions including your own distributions, so it allows 0 values for the "loss" (response) variable. It takes care of the 0 values in the distribution definition functions. In particular, for the gamma distribution, it uses the following defintion of the PDF function (you can see other functions of PROC SEVERITY's predefined gamma distribution here and all model definitions here😞
function GAMMA_PDF(x, Theta, Alpha);
/* Theta : Scale */
/* Alpha : Shape */
minVal = 2.220446E-16; /* alternatives:
MACEPS = 2.220446E-16
sqrt(SMALL)= 0.1491668147e-153 */
if (x < minVal) then do;
x1 = minVal;
/* assume exp(-x1/Theta)~1, because x1/Theta is too small */
p = x1**(Alpha-1) / (gamma(Alpha) * (Theta**Alpha));
end;
else
p = pdf("GAMMA", x, Alpha, Theta);
return(p);
endsub;
If you do not want this definition, you can always define your own version of gamma distribution that returns missing PDF and CDF values for 0-valued losses and try fitting it. See PROC SEVERITY documentation to find out how to define and fit your own distributions.
Now, coming back to your question, with your data that contains 0-valued losses, you will probably get some estimates from PROC SEVERITY because its standard gamma definition treats 0 values as very small values (=constant('MACEPS')), but you will need to look at the parameter estimates, fit statistics, and plots to see if it is indeed a good fit. In general, if you have lot of 0-valued response values, you should use a different distribution. The zero-inflated models mentioned by Rick are one option, but I would also suggest looking at the Tweedie distribution.
Hope this helps,
Mahesh
... View more