Assessment of the health impacts of H1N1 vaccination: Difference between revisions
m (→R code: modifications to notes in code) |
m (→R code) |
||
Line 175: | Line 175: | ||
# Function for calculating swine flu cases | # Function for calculating swine flu cases | ||
# ilcf is the fraction of actual swine flu cases represented by the lab confirmed cases | # ilcf is the fraction of actual swine flu cases represented by the lab confirmed cases | ||
# (scrapped)assumed binomially distributed, if uncertainty of probability of getting swine flu is not | # (scrapped)assumed binomially distributed, if uncertainty of probability of getting swine flu is not | ||
# present, the point estimate will be used as such and n samples sampled from the same distribution; | # present, the point estimate will be used as such and n samples sampled from the same distribution; | ||
# however if the probability has an uncertainty, only 1 sample from each distribution is sampled where | # however if the probability has an uncertainty, only 1 sample from each distribution is sampled where | ||
# samples of the probability will be used as inputs; disabled sampling here since it would make different scenarios incomparable | # samples of the probability will be used as inputs;(/scrapped) disabled sampling here since it would make different scenarios incomparable | ||
sf <- function(isfp = sfp(), ipop = op_baseGetData("opasnet_base", "Op_en2949")[,-c(1,2)], iimm = imm(), n = 1000, | sf <- function(isfp = sfp(), ipop = op_baseGetData("opasnet_base", "Op_en2949")[,-c(1,2)], iimm = imm(), n = 1000, | ||
Line 206: | Line 206: | ||
# dsf, dpop and dimm are the actual data we have | # dsf, dpop and dimm are the actual data we have | ||
# uncertainty: number of cases is binomially distributed, number of trials (n) is the number of people who were not immune to swine-flu | # uncertainty: number of cases is binomially distributed, number of trials (n) is the number of people who were not immune to swine-flu | ||
# outcome | # outcome x is known, p is unknown. P can be easily calculated from x = p*n, when we assume that x is the expected value of the | ||
# distribution. But we're interested in the uncertainty of the estimate... When n is suitably large a poisson distribution becomes | # distribution. But we're interested in the uncertainty of the estimate... When n is suitably large a poisson distribution becomes | ||
# an excellent approximation of the binomial distribution. So we can fit the poisson distribution using an R function (I didn't find | # an excellent approximation of the binomial distribution. So we can fit the poisson distribution using an R function (I didn't find | ||
Line 212: | Line 212: | ||
# rubbish because we only have a single observation, sd of the mean estimate of the poisson distribution appears to be (n*p)^0.5, so the | # rubbish because we only have a single observation, sd of the mean estimate of the poisson distribution appears to be (n*p)^0.5, so the | ||
# variance of the parameter is n * p, which divided by n gives p ... so the expected value is p and the variance is p, which causes problems | # variance of the parameter is n * p, which divided by n gives p ... so the expected value is p and the variance is p, which causes problems | ||
# with the beta distribution (shape parameters become negative), | # with the beta distribution (shape parameters become negative), so I've used standard error^4 as the variance... | ||
# Somebody with real knowledge about these things should check this sometime, I'm just playing around with some numbers to get more | |||
# uncertainty in the model. | |||
sfp <- function(dsf = op_baseGetData("opasnet_base", "Op_en4933")[,-c(1,2)], dpop = op_baseGetData("opasnet_base", "Op_en2949", | sfp <- function(dsf = op_baseGetData("opasnet_base", "Op_en4933")[,-c(1,2)], dpop = op_baseGetData("opasnet_base", "Op_en2949", | ||
Line 237: | Line 239: | ||
} | } | ||
# Function for calculating probability of mortality after catching swine flu given that | # Function for calculating probability of mortality after catching swine flu given that the subject belongs to a risk group | ||
# children of age < 1 and adults of 60+ afflicted by heart conditions etc are considered to belong to a risk group | # children of age < 1 and adults of 60+ afflicted by heart conditions etc are considered to belong to a risk group | ||
# ifrg is the fraction belonging to the risk group in a given age group | # ifrg is the fraction belonging to the risk group in a given age group | ||
# p(death|sf&rg)) assumed constant in all age groups | # p(death|sf&rg)) assumed constant in all age groups | ||
# dsf is the data we have on the number of swine flu cases, dmsf is the data on mortality caused by swine flu, dfrg is the data on | |||
# the fraction of population belonging to risk groups (arbitrary default values included) | |||
sfpd <- function(dsf = op_baseGetData("opasnet_base", "Op_en4933")[,-c(1,2)], dmsf = data.frame(Result=44), | sfpd <- function(dsf = op_baseGetData("opasnet_base", "Op_en4933")[,-c(1,2)], dmsf = data.frame(Result=44), | ||
Line 262: | Line 266: | ||
# Function for calculating total immunity to swine flu in the whole population | # Function for calculating total immunity to swine flu in the whole population | ||
# P(imm) = P(vac or base_imm) | # P(imm) = P(vac or base_imm) | ||
# ibimm is the input background immunity | |||
# ivac_cov is the input vaccination coverage | |||
imm <- function(ibimm = op_baseGetData("opasnet_base", "Op_en4943", series_id = 994)[,-c(1,2)], | imm <- function(ibimm = op_baseGetData("opasnet_base", "Op_en4943", series_id = 994)[,-c(1,2)], | ||
Line 273: | Line 279: | ||
} | } | ||
# Calculating the outcome with different scenarios | ## Calculating the outcome with different scenarios | ||
paralpha <- function(imean, ivar) imean * (imean * (1 - imean) / ivar - 1) | # Libraries loaded and some basic functions defined | ||
paralpha <- function(imean, ivar) imean * (imean * (1 - imean) / ivar - 1) # beta distribution parameters | |||
parbeta <- function(imean, ivar) (1 - imean) * (imean * (1 - imean) / ivar - 1) | parbeta <- function(imean, ivar) (1 - imean) * (imean * (1 - imean) / ivar - 1) | ||
library(OpasnetBaseUtils) | library(OpasnetBaseUtils) | ||
Line 294: | Line 302: | ||
# Default, model based on current knowledge | # Default, model based on current knowledge | ||
test <- op_baseGetData("opasnet_base", "Op_en4926") | test <- op_baseGetData("opasnet_base", "Op_en4926") | ||
Line 389: | Line 384: | ||
#temp <- as.data.frame(as.table(tapply(fout$Result, fout[,c("obs","Scenario")], sum))) | #temp <- as.data.frame(as.table(tapply(fout$Result, fout[,c("obs","Scenario")], sum))) | ||
#ggplot(temp, aes(x = Freq, fill = Scenario)) + geom_density(alpha = 0.2) | #ggplot(temp, aes(x = Freq, fill = Scenario)) + geom_density(alpha = 0.2) | ||
</rcode> | </rcode> | ||
Revision as of 10:03, 27 May 2011
Moderator:Teemu R (see all) |
|
Upload data
|
Main message: |
---|
Question:
What was the overall health impact of the H1N1 (swine flu) vaccination in Finland in 2009-2010? Given current knowledge, which was the better decision between vaccinating as happened versus vaccinating no-one versus not vaccinating the population aged 5-19? Given current knowledge, the decision to vaccinate the whole population was the best decision even when narcolepsy is included in the assessment. Results of the Value of information analysis suggest that further knowledge about the uncertain variables considered very likely would not have changed the decision. |
This assessment calls for new participants to work on this important topic. |
---|
Opasnet is a web-workspace for improving decision-making by collecting and distributing important knowledge. It is based on the work by a large group of interested and active volunteers who want to make a difference.
If you are interested, please add your username under the Participants heading. Make also sure that My preferences of your account contain a valid email address for you, so that other Opasnet users can contact you (the email is not disclosed to other users). |
This assessment is about the total health effects the 2009 swine flu pandemic. It utilizes data from the Infectious disease registry (TTR) maintained by THL, the National narcolepsy task force report from 31.1.2011 and WHO. The current model is a simplification with no time dimension.
Scope
- What was the overall health impact of the H1N1 vaccination in Finland in 2009-2010?
- Given current knowledge, which was the better decision between vaccinating as happened versus vaccinating no-one versus not vaccinating the population aged 5-19?
- Monetary impact is not considered.
Participants
- THL: Virpi Kollanus, M.Sc., Marko Tainio, Ph.D., Mikko V. Pohjola, M.Tech.Sci., Jouni T. Tuomisto, M.D., Dr.Med.Sci., Teemu Rintala
- This is an open assessment. Anyone can participate.
Result
{{#opasnet_base_link:Op_en4926}}
Results


- From initial results it would appear like swine flu is more significant than narcolepsy in terms of DALYs.
- Vaccinating as planned would result in approximately 1850 DALYs due to swine flu and narcolepsy combined.
- Vaccinating no-one would result in approximately 4400 DALYs due to swine flu.
- Vaccinating everyone but people aged 5-19 would result in about a total of 2000 DALYs.
- Probability of swine flu variable is revealed by both the sensitivity- and Value of information-analyses to have the most impact on the outcome.
- The VOI analysis also reveals that further knowledge about the uncertain variables in the model is only worth up to ~80 DALYs, when considering the decision by age group, and less than 1 DALY when considering the decision as on/off as defined in the decision variable above. Which is only a small fraction of the total DALYs.
- Suggested statement: Pandemrix should not be used any more anywhere because its narcolepsy risk is too high.
- Resolution: Not accepted. Pandemrix is still an effective and safe vaccine. However, due to precautionary reasons, other alternatives should be used when available, because the occurrence of narcolepsy is not understood. R↻
Conclusions
Given current knowledge, the decision to vaccinate the whole population was the best decision. Results of the Value of information analysis suggest that further knowledge about the uncertain variables considered very likely would not have changed the decision. The total impact of the swine flu pandemic and related narcolepsy cases in Finland in terms of DALYs is slightly smaller than that of radon (~6700 DALYs yearly) and slightly larger than that of moisture damage (~650 DALYs yearly) for instance. It should be noted that only three variables had their uncertainty taken into account, although they should represent the major uncertainties present. Also, herd immunity is assumed not to affect the probability of a non immune subject to catch swine flu, this results in an underestimation of the number of swine flu cases in scenarios where the vaccination coverage is less than what was observed.
Rationale

- Decisions
- Vaccination decision
- Vaccinate everyone (observed vaccination coverage)
- Vaccinate no-one (0 vaccination coverage)
- Variables
- H1N1 vaccination coverage in Finland
- ERF of H1N1 vaccination on Narcolepsy
- Assumed lognormally distributed
- A(H1N1)v immunity in the Finnish population
- P(immune) = 1 - P(not vaccinated) * P(no base immunity)
- Population of Finland
- Disability weights
- DALY weight of narcolepsy equals roughly that of epilepsy (0.065)
- DALY weight of having swine flu assumed ~0.5
- Life expectancy by age groups in Finland[1]
- Probability of catching swine flu given subject is not immune
- Estimated from data available (population, total immunity, number of cases) by fitting the number of cases to a poisson distribution and calculating probability from the mean estimate by dividing by the non-immune population
- Fraction of all cases represented by lab confirmed cases (which we have data on)
- Estimated as beta-distributed with mean of 0.2 and some sd
- Probability of death due to swine flu given a subject has swine flu and belongs to a risk group
- Estimated from data available
- Assumed all deaths will be lab confirmed cases
- Assumed that all deaths belonged to a risk group (had some base condition)
- Fraction of population belonging to a risk group
- Arbitrary values; trying to account for kids of age <1 and old folks with heart conditions etc.
- Length of swine flu
- Assumed to be flat 5 days (mildly incapacitated for this duration)
- Narcolepsy in Finland
- AH1N1 cases in Finland
- Indicators
- DALYs from narcolepsy caused by vaccination
- DALYs from having swine flu
- DALYs from deaths caused by swine flu
R code
- Basic model
- Uncertainties of ERF of vaccine on narcolepsy, fraction of all cases represented by lab confirmed cases and probability of catching swine flu are implemented.