set.seed(42) # to make it reproducible
= 1000
N = 0.8 # vaccine efficacy under two dose regimen
VE = 0.6 # vaccine coverage
vacc_cov = 0.4 # efficacy of the first dose
ve1
= VE*vacc_cov*N
vacc_protected_VE = ve1*vacc_cov*N
vacc_protected_ve1 = vacc_protected_ve1 + (VE-ve1)*vacc_cov*N vacc_protected_ve_ve2
Template
Oral cholera vaccine
Assumption - Vaccination is implemented in a all-or-nothing fashion - Two-dose efficacy is \(VE\) - The first-dose efficacy is \(ve_1\)
What the efficacy of the second vaccine dose, \(ve_2\), has to be if the want the same number of people is averted,
Implementing the first and the seocond dose separately
Suppose that a population size is \(N\) and the vaccine coverage, \(0<=v<=1\). We introduce a parameter, \(\pi\), to represent the proportion of the first-dose recipients who receive the second dose. If \(\pi=1\), the number of vaccine recipients is \(Nv\) and the number of two-dose recipients is also \(Nv\) and the number of vaccinees who only received a single dose is zero. More generally, however, if \(\pi < 1\), the number of complete two-dose recipients is \(Nv\pi\) and those who have only received one dose is \(2Nv(1-\pi)\).
set.seed(42) # to make it reproducible
= 1000
N = 0.8 # vaccine efficacy under two dose regimen
ve2 = 0.4 # efficacy of the first dose
ve1 = 0.6 # vaccine coverage
vacc_cov = 0.95 # proportion of the first-dose recipients who again received the second dose
pi = ve2*vacc_cov*N
vacc_protected_ve2 = ve1*vacc_cov*N
vacc_protected_ve1 =
vacc_protected_ve1_ve2 *(vacc_protected_ve1 + (ve2-ve1)*vacc_cov*N) + 2*(1-pi)*ve1*vacc_cov*N
pi
vacc_protected_ve1
[1] 240
vacc_protected_ve1_ve2
[1] 480
These are estimates and algebraic relationship wouldn’t hold. $$ \[\begin{align} c_2 &= v_1 \pi \\ c_{1+} &= v_1 \pi + v_1(1-\pi) + v_2(1-\pi v_1/v_2) \end{align}\] $$ \(c_2\) and \(c_{1+}\) represent coverage for complete two-dose regiment and at least one dose, respectively. \(\pi\) represents the proportion of the vaccinees who received the first dose and went on to receive the second dose.
Estimates from Pezzolli et al. (2020)
= 90.3 # v_1
cov_first = 88.2# v_2
cov_second <- 69.9 #c_2
cov_two <- 84.6 #c_1+ cov_one_plus
Boundary conditions for the pi for the vr1plus must not be bigger than 1
# create a function that calculates
= function(vc1=0.95, vc2=0.95, vr1plus=NULL, vr2=NULL, pi=0.7){
ocv_round_cov_calc
if (pi < (vc1+vc2-1)/vc1) {
stop(paste0("pi must be larger than (vc1+vc2-1)/vc1, ", (vc1+vc2-1)/vc1))
else if (pi > (vc2/vc1)) {
} stop(paste0("pi must be smaller than vc2/vc1, ", vc2/vc1))
}= vc1*pi
vr2 # vr1plus = vc1*pi + vc1*(1-pi) + vc2*(1-pi*vc1/vc2)
= vr2 + vc1*(1-pi) + vc2*(1-pi*vc1/vc2)
vr1plus = vr1plus - vr2
vr1 # TODO there are several limiting conditions
# vaccine coverage is
return (list(vr1plus=vr1plus, vr2=vr2, vr1=vr1))
}ocv_round_cov_calc(vc1=0.56, vc2=0.46, vr1plus=NULL, vr2=NULL, pi=0.80)
$vr1plus
[1] 0.572
$vr2
[1] 0.448
$vr1
[1] 0.124
When the first dose is distributed, apply the When the second dose is distributed, identify the number of two-dose and one-dose recipients and compare that number with the previous round