A post by Jim Frost came out yesterday on minitab’s blog about the effectiveness of flu vaccines. Like the author of that post,

I get a flu shot every year even though I know they’re not perfect. I figure they’re a relatively easy and inexpensive way to reduce the chance of having a miserable week.

In contrast to that author, I had never thought about what 60% effectiveness means for a flu vaccine. The author collected data from two randomized controlled trials (RCT) and then explained how to analyze the data in minitab. I thought I would do the same here, but in R.

Beran Trial

beran = data.frame(treatment = c("shot", "placebo"), flu.count = c(49, 74), 
    group.size = c(5103, 2549))
beran
##   treatment flu.count group.size
## 1      shot        49       5103
## 2   placebo        74       2549

We can compare the proportions in the two groups via

prop.test(beran$flu.count, beran$group.size)
## 
## 	2-sample test for equality of proportions with continuity
## 	correction
## 
## data:  beran$flu.count out of beran$group.size 
## X-squared = 39.35, df = 1, p-value = 3.538e-10
## alternative hypothesis: two.sided 
## 95 percent confidence interval:
##  -0.02677 -0.01209 
## sample estimates:
##   prop 1   prop 2 
## 0.009602 0.029031

Alternatively we could have analyzed this from a Bayesian perspective, e.g. using a uniform prior distribution for the flu probabilities in both groups

n.reps = 10000
a = b = 1  # prior hyperparameters
p.shot = rbeta(n.reps, a + beran$flu.count[1], b + beran$group.size[1] - beran$flu.count[1])
p.plac = rbeta(n.reps, a + beran$flu.count[2], b + beran$group.size[2] - beran$flu.count[2])

quantile(p.shot - p.plac, c(0.025, 0.5, 0.975))
##     2.5%      50%    97.5% 
## -0.02694 -0.01955 -0.01268

where p.shot and p.placebo are samples of the probability from the posterior distribution. The quantiles are the 2.5%, 50%, and 97.5% quantiles for the difference in the flu probabilities for the two groups, negative indicating the shot group had a lower probability of getting the flu.

Now we can calculate the vaccine effectiveness and its uncertainty

quantile(1 - p.shot/p.plac, c(0.025, 0.5, 0.975))
##   2.5%    50%  97.5% 
## 0.5282 0.6679 0.7683

So we have an estimate of 67% and a 95% credible interval of (0.53, 0.77).

Monto Study

monto = data.frame(treatment = c("shot", "placebo"), flu.count = c(28, 35), 
    group.size = c(813, 325))
monto
##   treatment flu.count group.size
## 1      shot        28        813
## 2   placebo        35        325

We can compare the proportions in the two groups via

prop.test(monto$flu.count, monto$group.size)
## 
## 	2-sample test for equality of proportions with continuity
## 	correction
## 
## data:  monto$flu.count out of monto$group.size 
## X-squared = 22.44, df = 1, p-value = 2.164e-06
## alternative hypothesis: two.sided 
## 95 percent confidence interval:
##  -0.11136 -0.03514 
## sample estimates:
##  prop 1  prop 2 
## 0.03444 0.10769

Alternatively we could have analyzed this from a Bayesian perspective, e.g. using a uniform prior distribution for the flu probabilities in both groups

n.reps = 10000
a = b = 1  # prior hyperparameters
p.shot = rbeta(n.reps, a + monto$flu.count[1], b + monto$group.size[1] - monto$flu.count[1])
p.plac = rbeta(n.reps, a + monto$flu.count[2], b + monto$group.size[2] - monto$flu.count[2])

quantile(p.shot - p.plac, c(0.025, 0.5, 0.975))
##    2.5%     50%   97.5% 
## -0.1115 -0.0741 -0.0401

where p.shot and p.placebo are samples of the probability from the posterior distribution. The quantiles are the 2.5%, 50%, and 97.5% quantiles for the difference in the flu probabilities for the two groups, negative indicating the shot group had a lower probability of getting the flu.

Now we can calculate the vaccine effectiveness and its uncertainty

quantile(1 - p.shot/p.plac, c(0.025, 0.5, 0.975))
##   2.5%    50%  97.5% 
## 0.4866 0.6774 0.7986

So we have an estimate of 68% and a 95% credible interval of (0.49, 0.80).

Absolute effectiveness

I appreciate that Jim Frost went further and was interested in how to interpret this effectiveness number. As he points out, the number is the vaccine effectiveness which is the inverse of the relative risk. Thus if you get the flu shot you are 1/3 as likely to get the flu as a nonvaccinated individual.

It is certainly much more meaningful to understand your probability of catching the flu if you are vaccinated versus if you are not. Jim provides these data and they are repeated here

prob = data.frame(season = c("1997/98", "1998/99", "2006/07", "2007/08"), placebo = c(4.4, 
    10, 2.9, 10.8), flu.shot = c(2.2, 1, 1, 3.4))
prob
##    season placebo flu.shot
## 1 1997/98     4.4      2.2
## 2 1998/99    10.0      1.0
## 3 2006/07     2.9      1.0
## 4 2007/08    10.8      3.4
mean(prob$placebo)
## [1] 7.025
mean(prob$flu.shot)
## [1] 1.9
prob$placebo - prob$flu.shot
## [1] 2.2 9.0 1.9 7.4
mean(prob$placebo - prob$flu.shot)
## [1] 5.125

So, if you get the flu shot your average probability of getting the flu is around 1.9% and if you do not it is around 7%, but these are extremely variable from year to year. The other aspect to consider is the public health benefit from getting the flu shot and therefore not getting and spreading the flu.



blog comments powered by Disqus

Published

25 January 2013

Tags