[R] Confidence interval for relative risk

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sun Nov 12 13:35:57 CET 2006


Michael Dewey <info at aghmed.fsnet.co.uk> writes:

> 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.

Did you ever say what result they got?

        -p
 
> >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
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list