(First posted on March 29th)

## Are we doing better?

Average doubling period over time | Average daily percent change | Estimates of Rt for Indian states | India state-wise breakdown of weekly growth rate

**[Last data point: May 25th]** The figures are calculated from the JHU "confirmed cases" time series and for India from covid19india.org's data (see April 9th note below) using a 5-day sliding window geometric mean - i.e. a log-scale sliding window average. The "Weekly cases growth %" tooltip gives the cases-this-week / cases-last-week ratio as a % change.

**Graph explanation**: The "Rt" is the realtime effective reproduction number that's descriptive of the spread of the disease, where we're looking for the number to go below 1.0 to indicate a slowdown and eventual die out of the spread. (read more) . **Note:** The Rt estimates for recent dates will not be stable, but those for a week or earlier will be. An Rt of 2.0 implies about a 15% day-on-day growth in the daily new cases. This means the disease is spreading at that (not at all good) rate. An Rt of 1.0 means we'll see the same number of cases crop of daily .. which is quite manageable in most setups, except that it would be even better to have it drop to zero, which an Rt that's consistently below 1.0 will ensure.

**May 13th**: The stabilization continues .. to the point that on the whole for India it is pretty darn close 1.0 and seems like continuing to dip. Tamil Nadu spread rate is reducing and so are Maharashta and Gujarat's but Delhi and Rajasthan seem to be dealing with a new spread?

**May 9th**: Looks like the case growth is starting to stabilize again, based on the Rt estimates .. which though delayed by a few days are a bit more reliable from a trend prediction perspective than they were prior to the May 7th update. For some more info around the change to the daily cases filtering considerations, see this thread.

**May 7th**: We've made one correction to the Rt estimation procedure which we believe gives better estimates near the end and was earlier biasing estimates to be lower systematically. This is due to the gaussian filtering we applied on the daily cases, which would hold the daily case values beyond the ends as constant in order to apply the kernel. This doesn't fit our case since we don't expect the daily case rate to stay fixed and if it did, Rt would be drive towards 1 near the ends. The solution is to filter the daily log ratio instead, since that would hold the ratio to be constant .. which is better than holding the daily cases to be constant. The revised Rt values for Indian states therefore is higher than before we applied this correction. This correction also means that the dip in Rt we're seeing for India as a whole is no longer an artifact of the smoothing operation.

```
# The usual "gaussian" filter that repeatedly applies
# the [0.25,0.5,0.25] kernel.
filter(x) = [
[0.75*x[1] + 0.25*x[2]];
[0.25 * x[i-1] + 0.5*x[i] + 0.25*x[i+1] for i in 2:(length(x) - 1)];
[0.25*x[end-1] + 0.75*x[end]]
]
filter(x,n) = if n === 0 x else filter(filter(x),n-1) end
fir2filter(x,coeff) = vcat([x[1]],[x[i] * coeff + x[i-1] * (1.0-coeff) for i in 2:length(x)])
# The "true" filter for our case which operates on the log ratio.
truefilter(x,n) = begin
for i in 1:n
x = fir2filter(x, 0.75) # Reduce excessive influence of latest data point.
end
tf = filter([log(max(1,x[i])/max(1,x[i+1])) for i in 1:(length(x)-1)],n)
# Add back the ending value.
vcat([x[end]*exp(v) for v in reverse(cumsum(reverse(tf)))],[x[end]])
end
```

**May 6th**: The growth in cases in India and in particular states such as Maharashtra, Gujarat, Punjab and Tamil Nadu has been ... very noticeable to say the least. Today, TN tops the charts on the transmission rate. Chennai leads the pack within Tamil Nadu due to a recent cluster detected at the Koyambedu vegetable market .. which now stands closed and tough contact tracing activity is happening around the cluster. There are other congregation events that have also been ground zero for bursts in the spread. TN has ramped up testing during the recent week and we're likely to see a growth in cases partially attributable to the testing increase (see covid19india.org for testing data). Hope some of these bursts will settle down soon and people start cooperating more strictly. See estimates of effective transmission rate for Indian states below.

**Older Graph explanation**: The common trend graphs show the cumulative cases or the day-on-day change in absolute numbers. These are informative. However, if we wish to understand how our interventions are doing, especially to get an idea of when it makes sense to come out of lockdown period, it is useful to see a a graph that shows whether we're improving. Till April 8th, we used day-on-day % change (averaged over a 5-day period) as an indicator. Now that the curves are starting to move towards lower day-to-day %age, the phase during which the countries "reach towards 0" can get stretched out. The difference between a 5% growth rate (14-day doubling period) and a 2.5% growth rate (28 day doubling period) can mean the difference between "we have to hold on" and "we may be ready to leave lockdown", but this difference isn't going to be very visible in the percentage graph. To make that clearer, the y-axis is now switched to indicate the mean doubling period instead. Now, **the higher** we go along that scale, **the better** we're doing.

The previous day-on-day % increase is retained in the graph below.

**April 25th**: The US and UK in the graph now have a two week doubling period, whereas India has inched forward to 9 day doubling period from an 8 day doubling period, over the past week. Not entirely clear the stringent lockdown is actually helping ... unless it will be far worse without lockdown. Some speculation - given that Singapore now has over 10k confirmed cases and Singapore is similar (and well connected) to Chennai, the number for India may climb to > 500k.

**April 19th - May 6th**: *Rt* values for Indian states (the "effective reproduction number") calculated according to the model described by Kevin Systrom (his jupyter notebook). We're looking for ** Rt below 1.0** to indicate a slowdown. However, we also have to pay attention to the uncertainty in the

*Rt*estimates

*.*The absolute value of daily cases matters. So it is also included in the tooltip shown when you mouse over each point. The graph now also includes the IQR - 25%tile to 75%tile range.

**PS**: The calculations below were done using Turing.jl. The (entire!) Julia probabilistic model code is given below the table for your reference.

**For May 25th**. Only includes states with > 20 cases. Daily cases are smoothed 5 times using a [0.25,0.5,0.25] filter.

**A REQUEST**: Please add a comment if you can/cannot validate these calculations.

```
# Turing.jl model code for calculating $R_t$. You feed the daily
# counts as an array to the model and run the sampler to get the
# distributions of Rt in the "rt[n]" parameters of the chain.
using Turing, StatsPlots, Random, Distributions
covid_gamma = 1.0/7.0
# Calculate Poisson rate from the value of Rt and the known k.
# Reference: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0002185
case_arrival_rate(k, rt) = max(1,k) * exp(covid_gamma * (rt - 1))
@model rtmodel(k, ::Type{T} = Vector{Float64}) where {T} = begin
# Create result vector we want to estimate
rt = T(undef, length(k))
# Priors
rt[1] ~ Gamma(1.5)
k[1] ~ Poisson(4.0)
# The chain
for t in 2:length(k)
# Assume Rt can vary from day to day with a std deviation of 0.15
rt[t] ~ Normal(rt[t-1], 0.15)
# Fit the observed cases to the Poisson.
k[t] ~ Poisson(case_arrival_rate(k[t-1], rt[t]))
end
end
# Use latest 21 days data. Data for Kerala given as an example.
kerala_data = [5,1,8,0,2,3,0,2,3,0,0,1,12,12,15,28,14,9,19,39,6,20,32,7,24,21,9,11,8,13,8,9,12,7,10,2,3,8,1,7,1]
chain = sample(rtmodel(kerala_data[end-20:end]), NUTS(), 3000)
```

**April 17th**: It looks like the cases in the US and UK have begun to turn, with the US showing 0.91 week-on-week factor and the UK showing 0.98. India's cases are still growing week-on-week with a factor of 1.5.

**April 14th**: A possible good marker for the US this Tamil new year - it added (pretty much) the same number of cases in the last week than in the week before. A constant rate of case generation is perhaps easier to plan with .. and the case generation rate may go down from here too. Meanwhile, India still shows a week on week growth factor of 1.65.

**April 13th**: India cases count is still doubling every week.

**April 11th**: How are we doing week-on-week? .. meaning what's the ratio of number of cases we added this week to the number of cases we added in the week before? This ratio can give a perspective that's independent of the total number of cases and focus our attention on the case build up. For the three countries we're tracking, the ratios are - India(1.79), UK(1.49), US(1.16). At the very least, these ratios **must go below 1** to indicate we're improving. If a country was in a lock down period last week, then as long as the ratio is > 1, it is probably better to continue the lock down period.

Below are these ratios for the various states in India. (Includes only states with more than 10 cases in the past two weeks.)

Updated April 27thState | Prev week | This week | Change % |
---|---|---|---|

bihar | 47 | 164 | +249% |

andaman and nicobar islands | 5 | 17 | +240% |

kerala | 29 | 61 | +110% |

chandigarh | 5 | 10 | +100% |

jharkhand | 22 | 36 | +64% |

jammu and kashmir | 98 | 155 | +58% |

odisha | 19 | 29 | +53% |

delhi | 571 | 837 | +47% |

maharashtra | 2332 | 3402 | +46% |

west bengal | 187 | 272 | +45% |

andhra pradesh | 283 | 375 | +33% |

punjab | 69 | 77 | +12% |

uttar pradesh | 626 | 689 | +10% |

tamil nadu | 347 | 365 | +5% |

gujarat | 1367 | 1362 | 0% |

rajasthan | 679 | 609 | -10% |

haryana | 55 | 45 | -18% |

madhya pradesh | 871 | 605 | -31% |

karnataka | 161 | 95 | -41% |

telangana | 280 | 129 | -54% |

uttarakhand | 11 | 5 | -55% |

meghalaya | 10 | 1 | -90% |

**April 9th**: The JHU "confirmed cases" time series for India continues to have anomalies (indicated in the April 6th note) that disrupt our understanding of the trend. So starting from 9th, the data for India is patched over from the excellent covid19india.org site.

**April 8th**: Added a "Doubled in: # days" tooltip when you mouse over a data point. This should give a feel for how the percentages translate to actual numbers. The doubling calculation is not based on the mean rate though. The mean rate will lag behind the actual numbers by a few days.

**April 6th**: There appears to be a discrepancy between the data presented by JHU and what's shown on covid19india.org for the 6th. JHU shows a spike of 1200 cases whereas covid19india.org shows 488. The daily changes for 3 days (4th, 5th and 6th) on JHU are 515, 506 and 1200 whereas on covid19india.org they are 579, 606 and 488.

**April 5th**: Temporarily switched to a 3-day window to view the impact of the Delhi cluster event on the India stats more readily.

**April 4th**: Made the graph dynamically pull data from the JHU github repo so it stays updated. The decline rate (1% every 2 days) for the three countries, as of today, doesn't seem very encouraging .. dragging the situation into a month or beyond.

**April 2nd:** Added the curves for US and UK, where we (Pramati) have offices. The uptick for India has worsened whereas the US seems to be in a clear downward trend, with the UK going down as well. Given the steady trend for the US from the 23rd, they may see no new cases after another 10 days or so .. given everyone keeps doing whatever it is that they're doing.

**Edit**: An earlier version of the graph had gotten the UK numbers wrong.

**April 1st:** The curve is showing an uptick in the rate which is cause for concern. However this is perhaps triggered by the recent surges due to a cluster event in Delhi that spread to states. 50 of 57 new cases in TN are linked to the Delhi cluster event. We need to show extra diligence and bring the curve all the way down. (.. and no we aren't joking about any of this .. ever.)

**March 30th:** The downward trend line for **India** from the lockdown period (around 23rd March) seems fairly consistent.

The trend looks like the lockdown period is helping. A reduction of the growth rate from 20% down to 15% means the cases will double (roughly) every 5 days now with a 15% rate instead of (roughly) every 4 days. In 15 days, the drop from 20% to 15% will mean a 50% reduction in projected number of cases. Given that 27 deaths have been reported on March 29th and the mortality curve roughly follows the confirmed cases curve, a 20% growth rate over the next 15 days will put estimated deaths at 415, but with a 15% growth rate that is brought down to about 220.

Everyone who stayed at home diligently has contributed to saving those unknown 195 lives and helping the medical establishment by stretching out the epidemic by 20%.

## March 15th to March 28th

The case numbers were picked from the JHU COVID resource centre's collected data. The decrease in (geometric) mean growth rate is observed across pretty much all these countries between the two periods of March 15th-21st and 21st-28th. Though the reasons haven't been teased apart yet - i.e. whether it is due to weather shift or the lockdown initiatives, with the latter being more likely - the trend gives hope while the rate numbers show that we still have way to go.

For India, the lockdown period mostly begin around March 23nd for states and March 25th country-wide, so the small decline we're seeing likely includes a hangover from the days before the lockdown and we'll know in the coming days (today being March 28th) what impact the lockdown has.