Population Growth in Hyperbolic Space with Geometric Algebra
This article is a quick introduction to population growth models. But what a strange title. What does population growth have to do with hyperbolic space?
While looking for nails for my hammer (hyperbolic space with GA) I found population growth models and noticed they can be modeled exactly like Special Relativity.
Logistic Growth Model
Population growth is often modelled as logistic growth. The intuition is that a population denoted by
first grows exponentially over time. Eventually the population runs into constraints such as space or food, so it will approach some maximum population. The maximum population is called the carrying capacity and is denoted by . Furthermore the population's growth rate is denoted by . For an exponential function the growth rate would tell you over what timespan the population doubles. This is true here initially until the population runs into the constraints.
The usual formula for the population over time given the carrying capacity and growth rate is
Figure 1 - Population growth modelled with the logistic function for K=1000, P(0)=500, r=2.
Rewriting the population equation
If we now define the population at
to be half the maximum carrying capacity, meaning , equation simplifies to
Now the key part which is also the reason why I started looking at population growth in the first place: equation
contains the sigmoid function which is just an offset and rescaled version of the function. If you are into Machine-Learning you might already be familiar with this. The sigmoid function .
function is interesting because it pops up in Special Relativity and Hyperbolic Space. With this, equation can be rewritten to
Relation to Special Relativity and Hyperbolic Space
In the GA treatment of Special Relativity we convert relative spatial velocities
to hyperbolic angles using the equation
We can compare this to our population growth model. Let's solve equation
for the term.
We can now define
to get the analogue of equation for logistic population growth.
From here on, we can do everything exactly like we did in Special Relativity. Instead of the four basis vectors
we have two basis vectors . Instead of velocity vectors, we have population vectors.
In Special Relativity, the angle of the velocity vector was related to the spatial velocity. In Population Growth, the angle of the population vector is related to the population.
In Special Relativity, velocity vectors in the
direction correspond to velocities at rest. In Population Growth, vectors in the direction correspond to the population at which we defined to be earlier.
Population Growth Rotors
In Special Relativity we had rotors to change our velocity vectors (ie. accelerate / decelerate the spatial velocity). In Population Growth we have rotors that can change our population vectors (ie. increase / decrease the population). Concretely, the rotor is
and applying such a rotor to
In Special Relativity, the vector approaching a 45° angle means approaching the speed of light. Here, the vector approaching a 45° angle means approaching the carrying capacity (or zero in the negative direction).
We use the following constants:
- Carrying capacity
- Growth rate
Let's say we apply a rotor that takes us from our initial population of
to more, that is, we apply the rotor
The resulting vector
encodes the new second population of (from the point of view of the first population) which we could extract by solving for .
Population is relative?
In relativity, if the vector were a velocity vector, we could think of it as the rest vector of another observer. We can do the same here! If we choose
as the "rest vector" of another population, this other population would have their own initial population equal to again, because the carrying capacity is a constant just like the speed of light is. Now if this second population sees a population growth of , we apply the rotor to from the second population's view.
How does this "look like" (analogue to changing basis vectors / perspectives in Special Relativity) from the first population? We can't just add
on top of the second population as that would exceed the carrying capacity of of the first population. Instead, we compose the two rotors to get
Which will yield a vector closer to the first population's carrying capacity but still less than it. Instead of composing the rotors and dealing with the vectors we can also just deal with the angles of the rotors. The angles just add. So we get
and solving the angle for the population with equation
which, when added to our initial population of half the carrying capacity, results in
which is slightly less than the carrying capacity.
Population is not relative!
Of course instead of saying the carrying capacity is constant, we could have also viewed the carrying capacity as changing between points of view. Then we always keep around some absolute scale, but the math works out identically I believe. The rotors then provide a sort of mapping between different populations and population changes in them.
We saw how logistic population growth can be modelled almost identically to Special Relativity in Geometric Algebra. Carrying capacity is like the speed of light. A population always approaches the carrying capacity. We can shift our perspective to populations with a different carrying capacity just like we shift perspective in Special Relativity to observers with a different velocity relative to us. We can see how a population growth in a population with one carrying capacity transfers to another population with another carrying capacity using boost rotors.
Whether this is useful at all I have no idea. But the math works out the same as for Special Relativity.