BookmarkSubscribeRSS Feed
iuri_leite
Fluorite | Level 6

Dear All,

 

I estimated incidence according to demographic characteristics of a population. For some characteristics  we did not observe any case, then the incidence was zero. I used a Poisson Regression and in these cases SAS did not reported the confidence intervals. In fact, if I calculate it, the intervals varies from 0 (zero) to +infinity. 

Then, I would like to know how to report the incidence in those cases.

 

Thank you in advance.

Regards,

 

Iuri Leite

10 REPLIES 10
sbxkoenk
SAS Super FREQ

Hello,

 

Which SAS/STAT or SAS/ETS procedure have you run to fit the Poisson regression model? GENMOD, COUNTREG, ...

Can you show us the PROC-step?

 

Thanks,

Koen

iuri_leite
Fluorite | Level 6
Dear Koen,

I used Proc Genmod:


proc genmod;
model soroconversao = / dist=poisson offset=log_ano;
estimate "log(rate)" intercept 1;
run;

Soroconversao is a binary variable indicating that the person is a case or
not (1 or 0);
log_ano is the log of the person-years;

Thanks a lot.

Regards,

Iuri Leite
sbxkoenk
SAS Super FREQ

Hello,

 

I am sorry but that proc genmod of yours puzzles me.

 

You fit an intercept-only model (no predictors). And your target is binary (1|0).

With a binary target I would intuitively use a binomial distribution instead of Poisson, but maybe you want a log link function (instead of logit). Remark that you can change the default link function with the link= option.

 

Do you mean with "when the incidence is zero" that you do not have any cases (coded as 1) in the target?

 

Thanks for explaining a bit more.

Koen

Rick_SAS
SAS Super FREQ

I'm confused. Poisson regression is used when the response variable represents counts. You seem to have a binary response variable, which is usually analyzed by using logistic regression.

StatDave
SAS Super FREQ

This can be done with exact analysis, either in PROC FREQ or PROC GENMOD. For example, if zero events were observed in 100 person-years, either of the following provides a confidence interval:

data x; 
input count py; 
off=log(py); 
datalines;
0 100
;
proc genmod;
model count=/d=poisson offset=off;
exact intercept / estimate=both;
run;

data y; input y count;  cards;
1 0
0 100
;
proc freq data=y;
weight count/zeros;
table y/binomial(level='1');
run;
iuri_leite
Fluorite | Level 6

Dear Dave,

 

thanks for sending me the code.

 

I used it, but i am not sure about the result I obtained.

 

As I told you, I am analyzing the incidence of HIV among participants of cohort. So, I have a binary variable indicating the participant seroconverted  (1) or not (0). I have also the follow-up time of each participant in the cohort. Then I estimated the incidence for a set of characteristics. For some characteristics I did not observe any event;  the incidence is zero. I would like to obtain the confidence interval.

I used the syntax you send me:

 

proc genmod;
model soroconversao = / dist=poisson offset=log_ano;
exact intercept / estimate=both;
run;

 

The SAS output was:


 

 



 
The GENMOD Procedure
 
Exact Conditional Analysis
Exact Conditional TestsEffect Test Statistic p-ValueExact MidIntercept Score  Probability
122.0<.0001<.0001
2.35E-42<.0001<.0001

 

Exact Parameter EstimatesParameter Estimate   StandardError 95% Confidence Limits p-ValueIntercept
-0.3144*.-Infinity.<.0001

Note:* indicates a median unbiased estimate and a one-sided p-value.

 

 

Exponentiated Exact Parameter EstimatesParameter Estimate   95% Confidence Limits p-ValueIntercept
0.7302*0.<.0001

Note:* indicates a median unbiased estimate and a one-sided p-value.

 

I would like to know whether the value 0.7302 is the upper limit of the interval. It is not clear to me.

Thanks a lot.

regards,

Iuri

 

 

 

 

 

StatDave
SAS Super FREQ

You presumably have a single count of events (apparently equaling zero) and a total person-time - like in my example with a zero event count with total person-time of 100. What is your total person-time?

iuri_leite
Fluorite | Level 6

Dear Dave,

 

Yes. we did not observe any event and the total number of person-years was 116.42.

Then the incidence was 0/116.42=0.

 

My problem is to estimate the confidence interval.

 

Thanks again.

 

Regards,

 

Iuri

iuri_leite
Fluorite | Level 6
Dear Dave,
Yes. we did not observe any event and the total number of person-years was
116.42. Then the incidence was 0/116.42=0. My problem is to estimate the
confidence interval. Thanks again.
Regards, Iuri
StatDave
SAS Super FREQ

If you replace 100 with 116.42 in the code I provided earlier, then you will get the exact confidence interval from PROC GENMOD. You can also use the PROC FREQ code I provided since your response is binary, but PROC FREQ requires integer counts. If you use it with 116 and again with 117, you get very similar results and also quite similar to the interval from PROC GENMOD.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 10 replies
  • 2165 views
  • 2 likes
  • 4 in conversation