[R] Confidence interval for relative risk
Viechtbauer Wolfgang (STAT)
Wolfgang.Viechtbauer at STAT.unimaas.nl
Fri Nov 10 16:54:14 CET 2006
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
More information about the R-help
mailing list