- Inference
- Epidemiological model
- Data
- Parameter inference
- Vaccination scenarios
- Cost effectiveness (under construction)
23 January 2016
library(fluEvidenceSynthesis)
Data is stratified by age groups. Vaccination data is subdivided into 7 age groups, while monitoring data is subdivided into 5 age groups.
Further subdivided into 3 risk groups
inference( age_sizes=age_sizes$V1, vaccine_calendar=vaccine_calendar, polymod_data=as.matrix(polymod_uk), ili=ili$ili, mon_pop=ili$total.monitored, n_pos=confirmed.samples$positive, n_samples=confirmed.samples$total.samples, initial = initial.parameters, nbatch=1000, nburn=1000, blen=10 )
By week and age group
Vector with population sizes. First value is every <1, 2nd everyone 1 year old, etc. Final value includes everyone older than that age (i.e. 85+)
age_sizes$V1
## [1] 625100 632100 648500 639800 645800 663500 668700 690300 700100 688200 ## [11] 681700 689100 671500 661100 665000 638000 633700 635500 637500 636400 ## [21] 623200 587000 586300 613300 636900 664500 711100 755000 780700 775700 ## [31] 800400 808500 829700 834400 840200 833400 818800 797500 779200 749000 ## [41] 733400 723100 700500 677700 661600 667500 661400 654100 660200 680200 ## [51] 702500 755300 802200 647200 635300 624000 596200 539000 504600 526300 ## [61] 528600 523600 510700 496500 482400 463900 460700 463000 464400 453500 ## [71] 437100 421000 416400 408100 393000 380300 368700 369200 369000 352500 ## [81] 240500 202100 208400 203400 197000 990400
Matrix holding results for each subject and their contact pattern.
pander(head(polymod_uk,n=4))
ID | Wknd | AG1 | AG2 | AG3 | AG4 | AG5 | AG6 | AG7 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 2 | 0 | 3 | 2 | 0 |
0 | 1 | 0 | 2 | 1 | 2 | 3 | 2 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 6 | 2 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 2 | 2 | 0 |
We model 5 age groups and assume that the lower two (<5 and <15) and medium two (<25 and <65) have the same parameter values. Finally the elderly have different parameter values. This is to reduce the complexity.
initial.parameters <- c(0.01188150, 0.01831852, 0.05434378, 1.049317e-05, 0.1657944, 0.3855279, 0.9269811, 0.5710709, -0.1543508 )
Counts by week and age group
pander(head(ili$ili,n=2),emphasize.rownames=F)
V1 | V2 | V3 | V4 | V5 |
---|---|---|---|---|
1 | 1 | 24 | 11 | 3 |
5 | 3 | 33 | 14 | 4 |
pander(head(ili$total.monitored,n=2),emphasize.rownames=F)
V1 | V2 | V3 | V4 | V5 |
---|---|---|---|---|
32723 | 73891 | 234246 | 139598 | 86733 |
33210 | 74865 | 236759 | 139329 | 86764 |
Counts by week and age group for this strain
pander(confirmed.samples$positive[13:14,],emphasize.rownames=F)
V1 | V2 | V3 | V4 | V5 |
---|---|---|---|---|
2 | 1 | 9 | 3 | 1 |
3 | 2 | 13 | 10 | 1 |
pander(confirmed.samples$total.samples[13:14,],emphasize.rownames=F)
V1 | V2 | V3 | V4 | V5 |
---|---|---|---|---|
10 | 3 | 16 | 4 | 3 |
5 | 4 | 22 | 12 | 2 |
vaccine_calendar <- list( "efficacy" = c(0.7,0.7,0.7,0.7,0.7,0.7,0.3), "calendar" = matrix(c( 0,0,0,0,0,0, 0.02,0,0,0,0,0, 0.02, 0.02,0,0,0,0,0,0, 0.02, 0,0,0,0,0,0,0.005,0,0,0,0,0,0.005,0.005,0,0,0,0,0,0,0.005, 0,0,0,0,0,0,0.005,0,0,0,0,0,0.005,0.005,0,0,0,0,0,0,0.005 ),ncol=21), "dates" = c(as.Date("2010-10-01"), as.Date("2010-11-01"), as.Date("2010-12-01"), as.Date("2011-01-01")) )
Calendar holds vaccination rates per day for:
pander(names(inference.results))
batch, llikelihoods and contact.ids
pander(head(inference.results$batch,n=3),emphasize.rownames=F)
eps1 | eps2 | eps3 | psi | q | susc1 | susc2 | susc3 | I0 |
---|---|---|---|---|---|---|---|---|
0.009664 | 0.01574 | 0.05236 | 0.000165 | 0.1654 | 0.3851 | 0.9281 | 0.5735 | -0.1549 |
0.009222 | 0.01578 | 0.05191 | 0.0001281 | 0.1657 | 0.3854 | 0.9284 | 0.5741 | -0.1551 |
0.009602 | 0.01574 | 0.05255 | 8.838e-05 | 0.1656 | 0.3854 | 0.9284 | 0.574 | -0.1546 |
We have about 900 data points from the POLYMOD study on UK contact patterns. We could take these as given and derive the contact matrix. Instead we resample them at each mcmc step:
Recalculate contact matrix with the resampled data set
"Posterior" for contact data
Random draws from the posterior density function of the parameters (given the data).
Random draws from the posterior density function of the parameters (given the data).
For each draw calculate outcome (i.e. number of cases)
The inference method returns these posterior samples of all model parameters (transmission rate, susceptibility of the population etc.)
vaccinationScenario( age_sizes=age_sizes[,1], vaccine_calendar=vaccine_calendar, polymod_data=as.matrix(polymod_uk), contact_ids=inference.results$contact.ids[1000,], parameters=inference.results$batch[1000,] )
The disease burden for certain strategy given fitted model parameters, i.e: 101547, 632398, 1606080, 2923985, 4976025, 2751776, 569981, 2178, 36806, 174496, 278627, 504179, 616371, 466348, 0, 0, 0, 0, 0, 0 and 0
Use all posterior parameters to get complete posterior distribution of disease burden.
See Marc and Dominic