5
$\begingroup$

All software programs I have tried report only odds ratios (ORs) for binary logistic regression predictors (as exponential of the betas).

I am interested to know how can I compute the relative risk (RR) from a binary logistic regression model?

My reason is that RRs (besides ORs) would make my variables more understandable. Also I see many journals (even many of the top ones) confuse these two, and I want to hopefully have a good report with scientific merit, and not repeating previous mistakes.

I found some methods over the net (which I have not tried yet). Here and Here for example.

However in a forum, I saw some experts had opposed reporting RRs for logistic regressions. For example:

"It is incorrect to use the relative risk as a measure of association in a logistic regression. The measure of association in a logistic regression is the odds ratio. The odds ratio is an approximation of the relative risk. The approximation becomes progressively better as the disease becomes progressively rarer. Regardless of whether the disease is rare or not, inferences drawn from a logistic regression are valid. Please do not report a logistic regression using relative risk. It is not correct to do so." --John Sorkin

Or

"I am curious why one would want risk ratios. Unlike odds ratios, they are not interpretable without reference to the base risk. For example a risk ratio of 2 cannot possibly apply to anyone with a starting risk exceeding 1/2." --Frank Harrell

So my questions are:

  1. Is it a good way to estimate RR for binary logistic regression? Or do you agree with the above quotes, disagreeing with RR for logistic regressions?
  2. Could you please let me know why, if you agree or disagree?
  3. Do you know of any implemented algorithms (e.g., a macro or an R function) which can do it without needing to manually computing it?
$\endgroup$
  • 1
    $\begingroup$ Here's a link that describes how it's done in SAS: ats.ucla.edu/stat/sas/faq/relative_risk.htm $\endgroup$ – Jeremy Miles Jul 23 '13 at 22:23
  • 2
    $\begingroup$ Since I wrote one on of the quotes I agree with it :-) . I can't see why you would want a measure that is a function of all the other variables and must be shown as a graph instead of a number. $\endgroup$ – Frank Harrell Jul 23 '13 at 23:00
  • $\begingroup$ Frank, the reason I am tempted to use RR is that it is more conservative than OR, and also it is the true effect size of risk and likelihood, AFAIK. Besides, I am totally fine with graphing RRs (I graph my ORs as well), so that is good again for me. :) $\endgroup$ – Vic Jul 23 '13 at 23:30
  • 4
    $\begingroup$ RRs are not the "true effect size of risk" and are incapable of being constant. It is not more conservative, it just estimates a different quantity. RRs are at odds with the logistic model (pun intended). $\endgroup$ – Frank Harrell Jul 24 '13 at 0:33
  • $\begingroup$ Many thanks dear frank. I am confused as my information is now contradicting... However, I think I would go with OR. But if you are still curious for a reason to compute RR as well, it can be that CONSORT requires both OR and RR. :) $\endgroup$ – Vic Jul 24 '13 at 15:40
2
$\begingroup$

Here is more or less the replication of the SAS example mentioned in the comments to the question.

library("sas7bdat")
eyestudy =read.sas7bdat("eyestudy.sas7bdat")
sapply(1:ncol(eyestudy),function(z)summary(eyestudy[,z]))
for(i in c(2:3))eyestudy[,i]<-as.factor(eyestudy[,i])

tabfq=with(eyestudy, table(carrot, lenses))
(tabfqm=addmargins(tabfq))
prop.table(tabfq, 1)
#OR =  (32/17)/(21/30)  = 2.69
#RR =   (32/49)/(21/51)  = 1.59
(OR=tabfqm[1,2]/tabfqm[1,1]/(tabfqm[2,2]/tabfqm[2,1]))
(RR=tabfqm[1,2]/tabfqm[1,3]/(tabfqm[2,2]/tabfqm[2,3]))

#logit
(ml1<-glm(lenses~carrot, data=eyestudy,family =binomial(link = "logit")))
summary(ml1)
exp(-coefficients(ml1)) #OR
exp(-cbind(coef(ml1), confint(ml1)))  
(ml10 <- glm(lenses~1, data=eyestudy,family =binomial(link = "logit")))
anova(ml10, ml1, test="Chisq")

#log
(ml2<-glm(lenses~carrot, data=eyestudy,family =binomial(link = "log")))
summary(ml2)
exp(-coefficients(ml2)) #RR
exp(-cbind(coef(ml2), confint(ml2)))  

#poisson
(ml3<-glm(lenses~carrot, data=eyestudy,family =poisson(link = "log")))
summary(ml3)
exp(-coefficients(ml3)) #RR
exp(-cbind(coef(ml3), confint(ml3)))  

#poisson 2
(ml4<-glm(lenses~carrot+gender+latitude, data=eyestudy,family =poisson(link = "log")))
summary(ml4)
exp(-coefficients(ml4)) #RR
exp(-cbind(coef(ml4), confint(ml4))) 
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.