Hi,
I'm analyzing interaction between a categorical variable (3 levels: inadequate/adequate(ref)/excessive) and a binary medical condition on a binary outcome using modified Poisson regression with GEE.
I recoded my exposures into a joint variable with a common reference category:
Joint Exposure Categories:
0: Adequate + No medical condition (reference)
1: Adequate + Medical condition
2: Inadequate + No medical condition
3: Inadequate + Medical condition
4: Excessive + No medical condition
5: Excessive + Medical condition
Current Model:
proc genmod data=mydata;
class joint (ref='0') id [other covariates];
model outcome = joint [covariates] / dist=poisson link=log;
repeated subject=id / type=exch corrw;
run;
I want to Calculate RERI with valid confidence intervals for both exposure levels:
RERI_inadequate = RR₃ - RR₂ - RR₁ + 1
RERI_excessive = RR₅ - RR₄ - RR₁ + 1
I can extract point estimates using:
estimate 'RR01' joint 1 0 0 0 0;
estimate 'RR10_Inad' joint 0 1 0 0 0;
estimate 'RR11_Inad' joint 0 0 1 0 0;
estimate 'RR10_Exc' joint 0 0 0 1 0;
estimate 'RR11_Exc' joint 0 0 0 0 1;
ods output Estimates=rr_out;
Then manually calculate RERI point estimates. However, this doesn't provide confidence intervals for RERI.
Questions:
Is my ESTIMATE statement approach correct for extracting the individual RRs?
What's the best method to get confidence intervals for RERI and how to code?
Since you say you have a binary response and are using a Poisson response distribution, I assume that what you mean by "RERI" is relative risk. If so, this approach seems more convoluted than necessary. While I don't see a clear statement in terms of your predictor levels as to what you want to estimate, it might be that you want to estimate the relative risks for the separate effects of your 3-level predictor and for your binary medical condition predictor. If that is correct, then simplify this by using your separate variables in the model and using SLICE statements to do the estimation.
For example, assuming your outcome response is coded 1,0 and that your adequate/inadequate/excessive predictor is called LEVEL with values 0=inadequate, 1=adequate, 2=excessive, and MEDCOND has values 'No' and 'Yes', the following gives you the relative risk for each level of each predictor at each level of the other predictor (allowing for the predictors to have significant interaction).
proc genmod data=mydata;
class level(ref='0') medcond(ref='No') id;
model outcome = level|modcond [covariates] / dist=poisson link=log;
repeated subject=id / type=exch;
slice level*medcond / sliceby=level means exp cl;
slice level*medcond / sliceby=medcond means exp cl;
run;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.