A lot of channels have talked about the SIR model, including my own, but there is a very
different way to model coronavirus, which boils down to how diseases really spread from
person to person. This is generally known as branching process, because every individual
here branches out to some random number of other individuals. Because this branching
out is random, as it can have 2 branches, 3 branches, or even not branching out at all,
we say this is a kind of stochastic process. Stochastic being a fancier name for random.
This video will focus on the simplest type of branching process, known as Bienayme-Galton-Watson
process, BGW for short. So what does this BGW say about the spread of coronavirus?
Before we move on, we need to introduce a few terminologies. All people on the same
vertical line would be in the same generation. We call this orange column the first generation,
with the number of individuals denoted as X_1. Similarly, we denote X_2, X_3 and so
on. Next up, we say these two individuals from the same branch the offspring of the
individual in the previous generation that spreads the disease to them. The reason we
use these terms is that this process was originally studied in a different context related to
reproduction, but that’s a story for another time.
Let’s focus on the first branching here. We say that this is a random process, so actually,
it could stop branching right away, or branch to 1 individual, or 2, or 3 and so on. Because
the number of branches is just X_1, the number of offspring of this first patient, we say
that X_1 follows a distribution. The distribution can be more conveniently written as a table.
The left column represents all the possible values of X_1, and the right column represents
the corresponding probability. So the probability of X_1 being 0 is p_0 and so on. Because these
are the probabilities, they have to be nonnegative, and the sum of these probabilities would be
1.
The reason why this BGW process is the simplest branching process is that it assumes two things:
each branching that you see here are all the same, which means it all follows the same
distribution as the first branching. So they are said to have the same offspring distribution.
The second simplification is that it assumes each individual in the same generation spreads
the disease independently. Independence has a specific meaning in probability theory,
summarised in this formula. As a very quick detour, let’s see why we have this formula
for independence.
To see why this formula has anything to do with independence of two events, let’s consider
this rectangular box as the entire sample space. And the green and yellow ovals represent
the events A and B respectively. Then the overlapping region represents A and B happening
together. For the intuitive sense of independence, the probability of B should be the same regardless
of whether A happens. So if we just focus on the event A, the proportion of the overlapping
region should be the same as the proportion of the yellow bubble within the rectangular
box itself. This means the ratio of probabilities on the left side equals the probability of
B. Just by rearranging, we get this definition of independence. More generally, if we have
n independent events, we will have the probabilities of them happening together to be just the
product of the individual probabilities.
Going back to the BGW model, the two questions that we want to ask is what is the number
of individuals in the nth generation, but because this is a random process, it can be
0, 1 and so on. So actually what we are looking for should be the distribution of X_n, detailing
the probabilities of the different values of X_n. The second question is what’s called
the extinction probability. This is the probability that at some point, the entire generation
of patients just stop spreading coronavirus entirely. But how do we get started on these
two problems?
The main issue here is that there seems to be a lot of parameters in this offspring distribution
to characterise the entire process. These probabilities here can all change. So we want
to turn this table to just one single thing. We do this via something called a generating
function, which is a way to encode an infinite amount of data into just one thing. It does
the encoding like this: the final product will be a function of a variable, say z. This
will be a power series in z. The constant term would be p_0, the coefficient of the
z term would be p_1, and so on. As a very simple example to illustrate why this is useful,
suppose the probabilities are just negative powers of 2, then using the formula for geometric
series, we can obtain the generating function to be just a succinct formula.
This hopefully explains why generating functions are actually very useful. Basically, if you
have all these probabilities in the distribution, then you can encode it pretty easily to this
generating function. What’s not obvious is the decoding, but it can be done. If you
are a bit concerned about the rigour of all these, pause and read this.
Anyway, another useful way to see this generating function is that it is the weighted average
of z^X_1. This is because p_0 of the time, X_1 is 0, and so z^X_1 is just 1, and you
get the constant term, and p_1 of the time, X_1 is 1, and so z^X_1 is just z, and you
get the z term to have the weight p_1, and so on. This weighted average is usually called
the expected value, denoted as E of z^X_1. All these discussions would also be valid
for a general X_n, the number of individuals in the nth generation, just that the probabilities,
hence the generating function or the weighted average are all different, which are all exactly
what we are after. So basically, if we are given the offspring distribution, then we
can encode it in the generating function, which can be written in terms of weighted
averages, then we will find some way to find the generating function for X_n, which we
then decode to find the distribution of X_n, which is exactly what we want. This is a much
easier approach than just directly going from the offspring distribution.
In this BGW process, we have X_n to be the number of individuals in the nth generation.
Because the entire generation comes from the branchings of the previous generation, X_n
is the sum of the different copies of X_1, because each branching is just a copy of X_1.
The number of copies is X_(n-1), the number of people in the previous generation.
So the generating function for X_n, written in terms of the weighted average, can be written
in terms of this, by rewriting X_n as the sum of copies of X_1. This is pretty complicated
because X_{n-1} is not a fixed value, because it can vary. So let’s suppose X_{n-1} is
a fixed number m, and then we will see what we can do afterwards. Because we are calculating
weighted averages, we have to sum up terms of this form, with the weight being the probability
that the copies of X_1 being a specific value. Because we have assumed all the spreading
here is independent, we can apply this more general definition of independence. So we
can change this weight into a product of probabilities as shown here. Similarly, we can rewrite the
value here, into a product of these powers.
Rearranging, we get a product of terms of the form of weighted values. So if we first
sum up all the values of a_1, then only these two terms will be affected. Summing terms
of this form is precisely the weighted average of z^(X_1), which is the generating function
for X_1. Similarly, the same generating function appears for the other pairs. Since there are
m pairs, on the condition that X_(n-1) is really m, the weighted average would be G(z)
to the m. However, X_(n-1) is really a variable, this temporary result only happens sometimes.
More precisely, this G(z) to the m will happen with exactly this probability. This is again
in the form of weighted values. And so, this can be expressed as a weighted average of
these powers of G(z). This is just the generating function for X_(n-1), but applied to G(z)
as an argument. In other words, G_n(z) is G_(n-1) applied to G(z). This is true for
all n larger than 1, and so we can apply this identity again to get G_(n-2) of G of G of
z. Repeatedly applying this we get the generating function for X_n is just generating function
for X_1 iterated n times.
This means that we have finally cracked the first question, because given the offspring
distribution, we can theoretically work out the distribution of X_n by decoding that generating
function. As a sanity check that this is correct, let’s suppose there will always be 2 branches,
which means that the offspring distribution looks something like this, where the probability
that X_1 equals 2 is 1, and all other probabilities are 0. This means the generating function
is z^2. By iterating it n times, the generating function for the nth generation is z^(2^n),
meaning that the number of individuals in the nth generation is 2^n, which is what we
expected!
However, the second question will be discussed in another video, which will be released in
a few days. What about limitations? Or the original context that prompted the three mathematicians
to study this process? Don’t worry, I will cover all these in the future.
If you enjoyed this video, be sure to give it a like and subscribe to the channel with
notifications on! See you next time!