How distance beween doses of two dose vaccine affects contagion and deaths in Colombia.
We created a Mathematical model using ordinary diferential equations to explore the effect of extending the distance between shots (in two dose vaccine) in the 20 - 40 age group in Colombia. The model
Assumptions:
  1. 5 age groups. distributed as follows:
We will work with proportions, for every variable describing the distribution of people at the different stagies of disese contagion we have the percentage of people in that group. The bar plot shows the age distrubiton for our simulations
age_dist = [0.35; 0.3; 0.2; 0.1; 0.05];%0-20 20-40 40-60 60-70 70+
bar(age_dist)
title('Age groups')
xticklabels({'0-20','20-40','40-60','60-70','70+'})
2. 11 epidemiological compartments to account for un-vaccinated and vaccinated people in all age groups.
The diagram results in a system of 11 ordinary differential equations:
3. The distance between first and second shot has to be defined for every age group
The tradeoff between vaccination pace and the application of the second dose requieres the quantification of the decrease in efficacy as the distance betwenn the two shots are applied and the adavantage of applying the first shot to more people.
%define distance for each age group
dist(1) = 21;%gap between shots [days] for Age 0 - 20
dist(2) = 22;%gap between shots [days] for Age 20 - 40
dist(3) = 21;%gap between shots [days] for Age 40 - 60
dist(4) = 21;%gap between shots [days] for Age 60 - 70
dist(5) = 21;%gap between shots [days] for Age 70+
4. With the distance between shots we have to assume how distance impacts vaccine efficiency
The assumption here is that effiency peaks at day 21 (as shown by studies) and then it slowly decreases as time between shots increases.
%give known efficiency points
x = [0 18 21 24 27 30 33 36 39 50 81] ;%days
y = [1 0.98 0.95 0.90 0.88 0.85 0.80 0.75 0.70 0.60 0.20] ;%efficiency
eff = find_efficacy_function(x,y,dist,1);%get effiency for each age group
4. Define the relation between distance between shots and vaccination pace. For every day the gap is extended the vaccination pace is augmented proprotionally.
As time bewteen shots increases we can vaccinate at a faster rate (1st shot). here we assume that every day a second shot is delay afte day 21 all those doses are used for 1st shots. Here we assume enough supply for first shot rate.
%define baseline vaccination rates for each age group
%a vaccination rate of 100.000 people every day corresponds to 0.002
%(100.000/day/50.000.000)
vacc(1) = 0.007;%gap between shots [days] for Age 0 - 20
vacc(2) = 0.001;%gap between shots [days] for Age 20 - 40
vacc(3) = 0.001;%gap between shots [days] for Age 40 - 60
vacc(4) = 0.001;%gap between shots [days] for Age 60 - 70
vacc(5) = 0.001;%gap between shots [days] for Age 70+
%Based on the chosen distance between shots for each age group and their base line vaccination rate
% here we show the relation between these variabkes . (note that a shortage in distance between
% shots dimishes vaccines avalible for first shot as well)
%assume that V1f1 is the proportion of people in the 1st shot box that will
%get the 2nd shot, therefor the change in vaccination rate for every day
%that differs from the 21 expected is given by:
V1f1 = 0.01*0.5;%because V1 is a variable this rate changes continously in time.
vaccrates = vacc + (dist-21)*V1f1;
figure
d = 0:1:100;
plot(d,0.001 + (d-21)*V1f1)
title('Change in vaccination rate as the distance bewteen first and second shot changes')
xlabel('days')
ylabel('vaccination rate [%/day]')
5. The sytem parameters are as follows
The following table contais all parameters that descibe residence times, proprotions, infection rates, vaccination rates.
[P,IC,param_names,age_groups,variable_names] = parameters(dist,eff,vaccrates);
table(param_names,P(:,1),P(:,2),P(:,3),P(:,4),P(:,5),'VariableNames',age_groups)
ans = 20×6 table
 ParametersAge 0-20Age 20-40Age 40-60Age 60-70Age 70+
1'transmission rate Suceptible Infective [per/per*dia]'0.5000000000000000.3000000000000000.3000000000000000.2000000000000000.200000000000000
2'residence time in recovered class [days]'100100100100100
3'residence time in infected class [days]'678910
4'residence time in hospitalized class [days]'78101215
5'proportion of infected people that recover without hospitalization [fraction]'0.9900000000000000.9800000000000000.9700000000000000.9600000000000000.950000000000000
6'proportion of hospitalized people that dies [fraction]'0.1000000000000000.2500000000000000.5000000000000000.7500000000000000.900000000000000
7'vaccination rate 1/time'00.3010000000000001.000000000000000e-031.000000000000000e-031.000000000000000e-03
8'transmission rate Suceptible Infective [per/per*dia] for 1st shot individuals'0.6000000000000000.3000000000000000.2000000000000000.1500000000000000.100000000000000
9'transmission rate Suceptible Infective [per/per*dia] for 2nd shot individuals'0.1000000000000000.0800000000000000.0600000000000000.0400000000000000.030000000000000
10'residence time in recovered - vaccinated class [days]'360360360360360
11'residence time in infected - vaccinated class [days]'35678
12'residence time in hospitalized - vaccinated class [days]'510121418
13'proportion of infected people that recover without hospitalization - vaccinated [fraction]'0.9990000000000000.9900000000000000.9800000000000000.9700000000000000.960000000000000
14'proportion of hospitalized people that dies - vaccinated [fraction]'0.0500000000000000.1000000000000000.2000000000000000.4000000000000000.500000000000000
15'efficacy of vaccines after one shot (for one shot vaccines) [fraction]'0.6500000000000000.6500000000000000.6500000000000000.6500000000000000.650000000000000
16'efficacy of vaccines after second shot (for two shots vaccines) [fraction]'0.9109082120786730.1835424558538960.9109082120786730.9109082120786730.910908212078673
17'distance between first and second shot for two shots vaccines [days]'2181212121
18'proportion of people getting one dose vaccines [fraction]'0.5000000000000000.5000000000000000.5000000000000000.5000000000000000.200000000000000
19'residence time in first shot one dose - vaccinated class [days]'2121212121
20'residence time in second shot two dose - vaccinated class [days]'3030303030
6. The initial conditions for each variable are as follows:
Initial conditions for state variables are considered in the following table:
table(variable_names,IC(:,1),IC(:,2),IC(:,3),IC(:,4),IC(:,5),'VariableNames',age_groups)
ans = 11×6 table
 ParametersAge 0-20Age 20-40Age 40-60Age 60-70Age 70+
1'Suceptible'0.2700000000000000.2218900000000000.1304900000000000.0540900000000000.021850000000000
2'Infected'0.0100000000000000.0100000000000000.0150000000000000.0030000000000000.001000000000000
3'Hospitalized'00.0001000000000000.0005000000000000.0009000000000000.000100000000000
4'Recovered'0.0700000000000000.0500000000000000.0250000000000000.0150000000000000.000500000000000
5'Dead'00000
6'Vaccinated first shot'00.0100000000000000.0150000000000000.0150000000000000.004000000000000
7'Vaccinated second shot'00.0010000000000000.0070000000000000.0060000000000000.020000000000000
8'infected - vaccinated'00.0020000000000000.0020000000000000.0010000000000000.000500000000000
9'Hospitalized - vaccinated'00.0000100000000000.0000100000000000.0000100000000000.000050000000000
10'Recovered vaccinated'00.0050000000000000.0050000000000000.0050000000000000.002000000000000
11'Dead - Vaccinated'00000
Simulations
We define a "control" a simulation with "reference" parameters and use it to compare to all perturbations. The state variables chosen to compare results are: cumulative infections, cumulative deaths, hospital demand. The model produce the folowing values for a 90 day time span with the initial conditions and parameters defined above.
t_span = 90; %time span for simulation
[T,Y] = run_model(IC,P,t_span);
figure%people in Vaccin1 and 2 groups
pl1 = plot(T,Y(:,4),'b',T,Y(:,15),'g',T,Y(:,26),'m',T,Y(:,37),'k',T,Y(:,48),'r',...
T,Y(:,10),':b',T,Y(:,21),':g',T,Y(:,32),':m',T,Y(:,43),':k',T,Y(:,54),':r');
set(pl1,'LineWidth',4)
legend('0-20','20-40','40-60','60-70','70+','0-20-v','20-40-v','40-60-v','60-70-v','70+-v')
title('Proportion of inmmunized population')
xlabel('Time [days]')
ylabel('proportion')
figure%hospitals
pl2 = plot(T,Y(:,3),'b',T,Y(:,14),'g',T,Y(:,25),'m',T,Y(:,36),'k',T,Y(:,47),'r',...
T,Y(:,9),':b',T,Y(:,20),':g',T,Y(:,31),':m',T,Y(:,42),':k',T,Y(:,53),':r');
set(pl2,'LineWidth',4)
legend('0-20','20-40','40-60','60-70','70+','0-20-v','20-40-v','40-60-v','60-70-v','70+-v')
title('Hospitalizations')
xlabel('Time [days]')
ylabel('proportion')
figure%deaths
pl3 = plot(T,Y(:,5),'b',T,Y(:,16),'g',T,Y(:,27),'m',T,Y(:,38),'k',T,Y(:,49),'r',...
T,Y(:,11),':b',T,Y(:,22),':g',T,Y(:,33),':m',T,Y(:,44),':k',T,Y(:,55),':r');
set(pl3,'LineWidth',4)
title('Deaths')
xlabel('Time [days]')
ylabel('proportion')
legend('0-20','20-40','40-60','60-70','70+','0-20-v','20-40-v','40-60-v','60-70-v','70+-v')
Now we investigate the effect of changing distance between shots for the age group 20-40. By selecting a window of time to study the distance between the first and second shots. simulations are run for every day of the window and sumarized in the colormaps below.
day1 = 21;%begging of time window for analysis
dend = 21;%end of time window for analysis
ag = 2;%chose age group for extension of window
z = change_distance(day1,dend,vacc,x,y,t_span,dist,ag);
Conclusions
  1. If second doses are not used to suplement first doses rate of vaccination the net effect of delayig the second dose is detrimental. In other words, if shots are scarse and second doses are just used to support basal rate of vaccination (1st dose) the population as a whole will se more contagious as well as hospitalization and deaths.
  2. If second doses are use on top of basal rates we less deaths and less hospitalizations. However the amount of people that gets infected increases considerabily.
  3. The improvements in deaths and hospitalization are pretty robust. Even when considering low leves of effectiveness after 80 days of gap.
  4. The detrimental effect in contagious only starts being significant after 50 days.