May 28, 2020

Fitting a scalar ODE to the number of deaths per day due to COVID19

A S Vasudeva Murthy

Background and Motivation

The main question facing us today is when will this "Corona" curve flatten. By the curve we mean the graphs representing either the number of persons infected or deceased. In this we will restrict ourselves to the number of deaths per day as provided in the website with data in csv format provided at Figure below gives the plot from March 22 to May 28.


A natural technique is to perform a time series analysis. But since the data comes from an epidemic, it has been postulated that (cf[1] [2]) such data follows a power-law with an exponential cutoff

\[(1) \:\:\:\:\: y(t)=y_0 t^n e^{-(t-t_0)} \:. \]

It is well known that such solutions arise as solutions of linear ODE's

\(\frac {dy}{dt} = Ay\)

for a non-normal matrix \(A\). A simple example of such a matrix in the \(2 \times 2\) case would be $$A= \left[ \begin{matrix} -1 &\:\:\: 1 \\ \:\:\: 0 & -1\\ \end{matrix} \right ] $$ the solution of the first component would be like the one given above with $n=1.$ So we assume that the number of deaths at time \(t\) is \(y(t)\) that satisfies

\(\frac {dy}{dt} = a(t) y, \:\: for \:\: t > t_0 \:\: with \:\: y(t_0)=y_0\:.\)

However we do not know \(a(t)\), but \(y\) is known at discrete values. So our aim is to estimate \(a(t)\) from the observed data of \(y\) with the hope that we can speculate when the curve will flatten.

Now the solution is given by

\(y(t)= y_0 \; exp \left( \int_{t_0}^t a(s)ds \right) \:.\)

Setting \(y_j =y(t_j)\) with \(t_{j+1}=t_j +1; \: j \ge 0\) and assuming \(a(t)\) to be a constant \(a_{j+1}\) on each interval \([t_j, \: t_{j+1}]\) we obtain

\(a_{j+1} = log (y_{j+1}/y_j) \:\: for \:\: j \ge 0.\)


As indicated above we chose (from the website given above) \(t_0\) = 22 March 2020 with \(y_0\) = 7. A plot of \(a_j\) is given below.

Now one can use the obtained \(a_j\) to predict the number of deceased \(\hat y_j\) for the next day using

\(\hat y_{j+1} =y_j e^{a_j} \:\: for \:\: j \ge 0.\)

So for 13th May we have obtained \(a_{52}=0.051\) and with the death count $y_{52}=2413$ we obtain \(\hat y_{53} = 2539\) whereas the observed value is \y_{53}=2549\). A plot comparing this prediction and reported deaths till date is given below. For today (28th May 2020) we have \(a_{53}=0.0421\) and therefore the predicted value for 29th May 2020$ is \(\hat y_{68} = 4725\). This can be confirmed only at the stroke of midnight at the above mentioned website. Note that we take the integer parts of the computed \(y_j\) and \(\hat y_j\). So far the maximum error: \(\|y - \hat y \|_\infty\) has been 52.


The proposed technique seems to give a reasonable estimate for predicting the number of deceased one day ahead. However the main issue of predicting curve flattening (when the \(a_j\)'s will take near zero values) has not been resolved.


Thanks Anubrato for initiating and Venky for the support.


  • [1] Anna L. Ziff and Robert M. Ziff
    Fractal kinetics of COVID-19 pandemic.
    med\({\bf R}\chi\)iv. The Preprint Server for Health Sciences. \({\bf {BMJ}} \:\: {{Yale}.}\)
  • [2] Prateek Kumar Jha
    What does simple power law kinetics tell about our response to coronavirus pandemic?
    med\({\bf R}\chi\)iv. The Preprint Server for Health Sciences. \({\bf {BMJ}} \:\: { {Yale}.}\)


The information provided here is the result of an academic exercise. The projections are only indicative, and the contributors do not claim that their projections are accurate. The opinions and views expressed here are not endorsed in any shape or form by the organization in which the contributors work.