[R] Confidence interval for relative risk

Michael Dewey info at aghmed.fsnet.co.uk
Sun Nov 12 13:18:00 CET 2006


At 15:54 10/11/2006, Viechtbauer Wolfgang (STAT) wrote:

Thanks for the suggestion Wolfgang, but whatever the original authors 
did that is not it.

>Hello,
>
>A common way to calculate the CI for a relative risk is the 
>following. Given a 2x2 table of the form:
>
>a b
>c d
>
>the log of the risk ratio is given by:
>
>lrr = log[ a/(a+b) / ( c/(c+d) ) ]
>
>which is asymptotically normal with variance:
>
>vlrr = 1/a - 1/(a+b) + 1/c - 1/(c+d).
>
>So an approximate 95% CI for the risk ratio is given by:
>
>exp[ lrr - 1.96*sqrt(vlrr) ], exp[ lrr + 1.96*sqrt(vlrr) ].
>
>A common convention is to add 1/2 to each cell when there are zeros.
>
>So, for the table:
>
>        Col 1 Col 2
>Row 1     8   500
>Row 2     0   500
>
>lrr = log[ 8.5/509 / ( 0.5/501 ) ] = 2.817
>vllr = 1/8.5 - 1/509 + 1/0.5 - 1/501 = 2.1137
>
>exp[ 2.817-1.96*sqrt(2.1137) ] = .97
>exp[ 2.817+1.96*sqrt(2.1137) ] = 289.04
>
>Maybe that is what the authors did.
>
>Best,
>
>--
>Wolfgang Viechtbauer
>  Department of Methodology and Statistics
>  University of Maastricht, The Netherlands
>  http://www.wvbauer.com/
>
>
> > -----Original Message-----
> > From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-
> > bounces at stat.math.ethz.ch] On Behalf Of Michael Dewey
> > Sent: Friday, November 10, 2006 15:43
> > To: r-help at stat.math.ethz.ch
> > Subject: [R] Confidence interval for relative risk
> >
> > The concrete problem is that I am refereeing
> > a paper where a confidence interval is
> > presented for the risk ratio and I do not find
> > it credible. I show below my attempts to
> > do this in R. The example is slightly changed
> > from the authors'.
> >
> > I can obtain a confidence interval for
> > the odds ratio from fisher.test of
> > course
> >
> > === fisher.test example ===
> >
> >  > outcome <- matrix(c(500, 0, 500, 8), ncol = 2, byrow = TRUE)
> >  > fisher.test(outcome)
> >
> >          Fisher's Exact Test for Count Data
> >
> > data:  outcome
> > p-value = 0.00761
> > alternative hypothesis: true odds ratio is not equal to 1
> > 95 percent confidence interval:
> >   1.694792      Inf
> > sample estimates:
> > odds ratio
> >         Inf
> >
> > === end example ===
> >
> > but in epidemiology authors often
> > prefer to present risk ratios.
> >
> > Using the facility on CRAN to search
> > the site I find packages epitools and Epi
> > which both offer confidence intervals
> > for the risk ratio
> >
> > === Epi example ===
> >
> >  > library(Epi)
> >  > twoby2(outcome[c(2,1),c(2,1)])
> > 2 by 2 table analysis:
> > ------------------------------------------------------
> > Outcome   : Col 1
> > Comparing : Row 1 vs. Row 2
> >
> >        Col 1 Col 2    P(Col 1) 95% conf. interval
> > Row 1     8   500      0.0157    0.0079   0.0312
> > Row 2     0   500      0.0000    0.0000      NaN
> >
> >                                     95% conf. interval
> >               Relative Risk:    Inf       NaN      Inf
> >           Sample Odds Ratio:    Inf       NaN      Inf
> > Conditional MLE Odds Ratio:    Inf    1.6948      Inf
> >      Probability difference: 0.0157    0.0027   0.0337
> >
> >               Exact P-value: 0.0076
> >          Asymptotic P-value: NaN
> > ------------------------------------------------------
> >
> > === end example ===
> >
> > So Epi gives me a lower limit of NaN but the same confidence
> > interval and p-value as fisher.test
> >
> > === epitools example ===
> >
> >  > library(epitools)
> >  > riskratio(outcome)
> > $data
> >            Outcome
> > Predictor  Disease1 Disease2 Total
> >    Exposed1      500        0   500
> >    Exposed2      500        8   508
> >    Total        1000        8  1008
> >
> > $measure
> >            risk ratio with 95% C.I.
> > Predictor  estimate lower upper
> >    Exposed1        1    NA    NA
> >    Exposed2      Inf   NaN   Inf
> >
> > $p.value
> >            two-sided
> > Predictor  midp.exact fisher.exact  chi.square
> >    Exposed1         NA           NA          NA
> >    Exposed2 0.00404821  0.007610478 0.004843385
> >
> > $correction
> > [1] FALSE
> >
> > attr(,"method")
> > [1] "Unconditional MLE & normal approximation (Wald) CI"
> > Warning message:
> > Chi-squared approximation may be incorrect in: chisq.test(xx, correct =
> > correction)
> >
> > === end example ===
> >
> > And epitools also gives a lower limit
> > of NaN.
> >
> > === end all examples ===
> >
> > I would prefer not to have to tell the authors of the
> > paper I am refereeing that
> > I think they are wrong unless I can help them with what they
> > should have done.
> >
> > Is there another package I should have tried?
> >
> > Is there some other way of doing this?
> >
> > Am I doing something fundamentally wrong-headed?
> >
> >
> >
> > Michael Dewey
> > http://www.aghmed.fsnet.co.uk

Michael Dewey
http://www.aghmed.fsnet.co.uk



More information about the R-help mailing list