An Illustration of Quadratic Growth
[This is part of my series on Thomas Malthus’ “Essay on the Principle of Population,” first published in 1798. You can find an overview of all my posts here that I will keep updated: “Synopsis: What’s Wrong with the Malthusian Argument?”]
My explanation of quadratic growth was perhaps a little abstract.That’s why I would like to illustrate it with a simulation that makes it easier to understand. (For more context, check my previous posts out: here, here, here, here, and here.)
This is also a first step towards a critique of the “deep history” genre. Basically, “deep history” is the claim that very long run developments over the millennia determine things that come much later on. However, as far as I can see it at the moment what these authors actually find is that something has developed via geographical expansion.
Of course, that will lead to different outcomes after millennia, but it does not show that the rest of all this history plays a role in it. And you are also prone to find spurious correlations between different such expansions that happen in parallel. I think it is possible that “deep history” is just an artifact of the analysis. More to come in further posts.
— — —
As a short recap of the argument for quadratic growth, suppose you have a process that has three features:
(1) At one location, some quantity goes from a lower to a higher level. This could be population density, but also many other things.
(2) The area where this happens expands with a constant speed essentially on a two-dimensional plane.
(3) You have one or more seeds for the process where it starts.
Then you should expect the quantity to grow almost quadratically in the aggregate— and not exponentially! — if the speed of expansion is relatively slow compared to the transition at each location. With geometry, ie. on a sphere, not an infinite plane, and also with geography, ie. constraints, varying speeds of expansion, etc., (almost) quadratic growth is only the case during the growth phase. Later growth should slow down and then run out.
— — —
It may seem as if the conditions where you find quadratic growth are very restrictive, basically that something has to expand from a center in a regular fashion. That’s how I argued for the claim, but the result is far more general. To show this, I have run a few very simple simulations in Scilab.
What I have is a grid with 101 times 101 cells (I initially wanted to start at the center and that’s why I took an odd number, but that has no meaning). Each cell can have a value of 0 or 1, and all are initially at 0. The move from the lower to the higher level is as fast as it can be: There is just an immediate jump from 0 to 1.
Here is the rule for one step: I randomly select a cell. Then I see whether it is at 0 or 1.
- If it is at 0, I flip it to 1 with a low probability. Those are the seeds where geographical expansion can start. I present two scenarios below: with a probability of 1 in 100 (“fast seeding”) and of 1 in 1000 (“slow seeding”).
- If the cell is at 1, I randomly select another cell around it, ie. one of the nine cells with an index from -1 to 1 in one and -1 to 1 in the other dimension where the indices are relative to the cell.
- I do nothing if the selected cell is outside the grid (index too large or too small). Otherwise I then set the cell to 1. It might have been already at 1 (eg. it could have been the cell itself), but it might also flip from 0. So one of the adjacent cells (including those only connected at a corner) could go through the transition.
- I repeat this 200,000 times, and calculate the total number of cells after the transition, ie. at a value of 1, over the grid (just the sum). I write every 100th value into a time series.
- In addition, I also save the the values for the grid at step 100,000.
— — —
What should we expect here?
Seeding is proportional to the area still at zero. Initially, the probability for another seed is approximately a constant. Later, when more of the area is at 1, it should go down to zero. With a constant increase, this will lead to linear growth at the start in the aggregate that later levels off.
As for flipping cells, the behavior on the microscopic scale is a bit complicated. I admit I have not thought all cases through because this is a toy model anyway to demonstrate a general result. However, you can get a grip on what is going on with a rough approximation that then turns out to be not all that rough:
If I randomly select a cell at the interior for the expansion, ie. surrounded on all sides by 1's, nothing happens, a change of 0 in the aggregate. However, if I select a cell at the frontier with adjacent cells that are still at 0, there is a chance to flip them. On a continuous plane, the frontier would have an area of 0. Yet, here on the grid, it has a thickness of 1 because it is not a line, but the whole cells.
The probability to select a cell at the frontier is proportional to the area of the frontier on the grid, or about its length if you think of it as a curve. It depends on what the situation looks like at a cell. With a seed (just one cell), the probability is eight in nine that I flip another cell (the exception is the cell itself). That probability can go down to one in nine if you have a cell at 0 surrounded by cells already at 1. My hunch is that the average situation leads to a probability of about four in nine (seeding makes this perhaps not exactly symmetrical). That would mean you have as many cells at 0 as at 1 around a selected cell. Initially, you have a higher probability (viz. seeds), and later it should go down to one in nine as the grid goes all 1's.
As an approximation I would hence guess that the probability to flip a cell is proportional to the area of the frontier (as a proxy for its length). My intuition here is that the area of the frontier increases with each flip. Initially, it would increase more (think of a seed and the first adjacent cell), later it might even shrink as holes with 0’s are filled out. But as a rough approximation in the middle of the process, I would think of this as a constant increase for the length of the frontier with each flip. Now, if you add a constant times something that grows with a constant at a step, then you have that twice, and so growth should be roughly quadratic.
That would not be so initially when seeding still plays a role, which adds some linear growth, and it should not be so when almost all cells are already at 1. But in between, I would expect quadratic growth. My simulation is not exactly how I think about quadratic growth, eg. for population density, but I consider it as a reasonable approximation to see how it works out. This is only meant as a toy model, so do not put a lot of effort into interpreting the mechanism. The main point is only that the area with 1’s grows at the frontier.
— — —
Here are now the results. The first graph is for how the aggregate develops over time (scale is 1 for 100 steps in the background):
The upper line is with fast seeding, the lower line with slow seeding. There are some slight wiggles from the randomness. However, they are hardly visible. All in all, this looks like logistic growth. But it isn’t!
Logistic growth would be almost exponential in the middle. But here it is almost quadratic. To demonstrate this, I next plot the square root of the curves, which should turn quadratic into linear growth that is easier to spot visually:
Note that initially seeding plays a role, so the result should not be exact. You can also spot the effect of the randomness. But from some point on, the graph is almost a linear function. That is especially apparent with fast seeding. But you can see it also with slow seeding from perhaps 800 to 1400.
If you are still unsure whether there might not be exponential growth here in the middle, I transform the data also with the logarithm. That should turn an exponential function into a linear one (as for logistic growth, the growth rate changes, so you would not get an exact line). Here is the result:
Both curves bulge too much to come close to a linear function even locally. The growth rates are the slopes of the transformed functions. They are very high intially, the curves fall into 0. That should be so. The growth rate for a linear or quadratic function is infinite at 0 because the transforms are ln(t) and ln(t²)=2*ln(t), which go to minus infinity as you approach zero, and that means the derivative goes to infinity (it is just 1/t). For logistic growth you should start with a finite growth rate instead, and also with a positive value. So what you see here is certainly not logistic growth although a casual inspection might lead you to the conclusion.
— — —
How does this look in a cross section. I take one for the 100,000th step, ie. in the graphs at 1000, somewhat before most of the grid is at 1 and too clogged to see much, but also beyond the seeding stage.
Here is the graph for slow seeding:
I use a Scilab graphics function that takes the values on larger squares and then assigns colors depending on the average value. Yellow means the average is close to 1, black that it is close to 0. As you can see, there were a few dozen seeds here. Some of them apparently came earlier and have now grown into larger areas or maybe those have also grown together. Other seeds are more recent and have only small patches around them.
And here is the cross section also for the 100,000th step, but with fast seeding:
As you would expect also from the curves where the aggregate is already at a higher level, much more of the grid is already at 1. The different patches have grown together. By now, the areas at 0 are the areas that get eaten up by the expanding area of 1’s. You can also see that the boundary of the grid constrains the expansion whereas in the previous example it played less of a role with a lot of room still left.
— — —
My point here was to demonstrate that quadratic growth does not depend much on the assumptions about the micro-level. It does not only arise when you are close to an ideal situation with balls on an infinite plane whose radius grows at a fixed speed. Even with a lot of perturbation, you will find the result in the aggregate. Of course, constraints like a finite area limit growth, also the dynamics might change a little, eg. I have anisotropy here (expansion works differently for different directions), there is randomness, you have many seeds, and new ones crop up over time.
However, the quadratic dynamics in the growth phase are pretty robust, you get almost smooth functions here, and in the growth phase you can see the quadratic growth as a line after a transform with the square root. As I have explained in a previous post, quadratic growth can look deceptively like exponential growth, and here growth looks deceptively like logistic growth. But those are different things. The underlying reason for quadratic growth is an expansion in two dimensions.
As I have announced at the start, this has implications for “deep history.” What authors of this genre perhaps do is inadvertently pick up the result from geographical expansions and misread it as some deep connection with the very distant past. My current conclusion is that this is just an artifact of the “deep history” analysis. I will develop this in further posts, so stay tuned …
— — —
Addendum
Fixed a few typos as well as awkward wordings, and supplied links to the previous posts because the context was perhaps not clear. I think I took the cross section at step 100,000, not 60,000 as I first wrote, have correct that. But it does not matter because this is only meant for illustration.