Yes, as I suspected, you are getting numerical overflows in EXP for several elements of the upper CL.
The CL for those indices are essentially (0, Infinity).
There are a few ways to handle this situation. One is to report the statistics on the log-scale and not back-transform the statistics and CLs.
Another is to trap the arguments that will result in domain errors and manually insert missing values for the upper CLs.
Hopefully, it is clear how to proceed. If not, study the following small example:
proc iml;
b_lr = {0.5, 1, 0, 0.2, 0.8};
SE_lr = {0.6, 80, 800, 2.1, 3};
lowerArg = b_lr - 1.96*SE_lr;
upperArg = b_lr + 1.96*SE_lr;
OR_lr95LCI = exp(lowerArg);
OR_lr95UCI = j(nrow(upperArg), 1, .); /* use missing value for infinity */
idx = loc(upperArg < constant('logbig'));
if ncol(idx)>0 then
OR_lr95UCI[idx,] = exp(upperArg[idx,]);
print lowerArg upperArg OR_lr95LCI OR_lr95UCI;
... View more