1 Introduction

This paper contains estimates for the effective reproduction number \(R_{t,m}\) over time \(t\) in various provinces \(m\) of South Africa. This is done using the methodology as described in [1]. These have been implemented in R using EpiEstim package [2] which is what is used here. The methodology and assumptions are described in more detail here.

This paper and it’s results should be updated roughly daily and is available online.

2 Updates

As this paper is updated over time this section will summarise significant changes. The code producing this paper is tracked using Git. The Git commit hash for this project at the time of generating this paper was 23afed4db62d9f1dec33612783ec9e10150e9e97.

The following major updates have been made:

  • A major update made on 29 March 2021 was to switch from data based on cases reported as captured in [3] to a data source that contains cases by date the specimen was received [4].
  • A further update on 17 April 2021 was to adjust cases for public holidays and on 18 April 2021 basic testing data was also added.
  • On 30 April 2021 analysis of district municipality data was added.
  • On 2 May 2021 and update was made to include allowance for late reported cases. Instead of only reporting based on cases more than 3 days ago the report was adjusted to use all cases reported to date but specific provisions for late reported cases was added to allow for the fact that cases by specimen received date not complete for the most recent days and are revised upwards over subsequent days.
  • On 15 May 2021 the test results were adjusted as the source indicated tests were by specimen received date. However upon review it became clear the source is supplying tests by reported date and the calculation was adjusted to follow this.
  • On 17 May 2021 a fixed was made for an off by one day error when joining case data to test data when calculating the percentage testing positive.
  • On 29 May 2021 plots related to vaccinations (per [3]) were added to this report.
  • A further update on 29 May 2021 was made. All plots and maps were updated to consistently not plot reproduction number estimates where the 95% confidence interval associated with that estimate is wider than 1.
  • On 1 June 2021 the late reported cases allowance was updated to allow for trends in cases and consequently a weekday adjustment factor was also included in the model.
  • On 13 September 2021 vaccination plots were removed from this report.
  • On 12 December 2021 this was adjusted to allow for longer potential delays in case reporting and various other minor adjustments.
  • On 17 December 2021 trend adjustment was removed from late reported cases as it was producing high case estimates.
  • On 21 December 2021 the following changes were made:
    • Incorporate hospital admissions and hospital deaths reporting.
    • Also estimate \(R_t\) based on hospital admissions and hospital deaths.
    • Add crude ratios based on above.
    • Remove animated map.
  • On 23 December 2021 Excess Deaths were added to this report.

3 Data

3.1 Data Source

3.1.1 Cases

Case data is extracted from the NICD National COVID-19 Daily Report [4]. This contains the daily cases reported by the NICD for South Africa by province. Data is shown by specimen reported date. Most recent data is excluded due to incomplete reporting of tests in last number of days.

Further data with regard to cases by report date are extracted from [3].

This report contains data as released at 2022-01-16 19:00:55 and contains cases up to specimen received date 2022-01-15.

3.1.2 Hospital Admissions and Hospital Deaths

Hospital admissions and death data is extracted from [3] which captures the NICD Daily Hospital Surveillance (DATCOV) [5]. These contains reported cumulative admissions and cumulative reported hospital deaths on each day. This report contains data as reported up to 2022-01-14.

3.1.3 Excess Deaths

Excess deaths are extracted from [6] and later reports. This report contains data up until the week ending 2022-01-08.

3.2 Data Fixes

3.2.1 Case Data

The following fixes are applied to case data:

  1. Calculate daily new cases from cumulative data captured.
  2. Add records (with 0 case count) in periods where no cases were recorded.
  3. Data reported each day is stored to enable allowance for late reported cases to be estimated.
  4. The sum of the districts do not add up to provinces as not all cases are allocated to a district. These additional cases are allocated in proportion to other cases during 7 days prior (both for historic data and the latest data set).

3.2.2 Hospital Admissions and Hospital Deaths

The daily cumulative admissions and hospital deaths reported in the daily PDFs were captured. There are some inconsistencies in that data though. To correct for this the following adjustments were made:

  1. Public and private figures are aggregated by province and day.
  2. Figures reported on 23 Nov are removed from the analysis as they are much higher than the cumulative figures reported the next day.
  3. Anywhere a cumulative figures that are lower than the day before are removed.
  4. Data capturing issues and the removal of figures under the point in above results in gaps in the daily data. These are filled by linear interpolation of cumulative figures between the available dates.
  5. Incremental daily admissions and hospital deaths are then calculated from the resulting cumulative data.

3.2.3 Excess Deaths

Excess deaths is transformed as follows:

  1. Province and district names are mapped to consistent naming.
  2. Given that all other data is daily, weekly data is converted to daily be uniformly allocating weekly excess deaths to days in the week.

3.3 Allowance for Late Reported Cases

Late reported cases play a role as the data we are using are by specimen received date. Cases are being added to dates in the past as the data gets updated. By keeping data released on a daily basis comparisons can be made to analyse reporting delays. In most cases those are only a couple of days later, but in some cases these are further out.

Late reported claims are estimated using a model that models the reporting of claims as a function of:

  • Delay since specimen received date assuming no cases are reported after 14 days.
  • The delay pattern is assumed to be consistent within provinces but potentially varied by day of week.
  • Province and district
  • The specimen reported date.

Only data that were reported in last 21 days are used, to ensure data reflects recent reporting delay patterns.

No allowance for late reported hopsital admissions and deaths is possible as data is only available by date reported.

3.4 Adjustments for Public Holidays

Public holidays tend to have lower number of cases received and results in distortions of the estimation of the reproduction number over time. Below we attempt to adjust for these discrepancies.

Public holiday dates are obtained from [7]

For each province counts of cases is then modelled as a function of:

  • Week
  • Day of Week
  • Public Holiday

The impact of public holidays are then removed by observing the impact of public holidays in the model and reversing that out in the data. This has the effect of increasing the observed cases on public holidays and reducing them slightly on all other days. This effect is dependent on the province and day of the week.

No adjustments for pulbic holidays are made for admissions and deaths. Data is by date reported which makes this difficult.

4 Methodology

The methodology is described in detail here. Here we estimate the effective reproduction number on cases and admissions but not hospital deaths as the quality of reporting of hospital deaths is not of sufficient quality.

5 Results

5.1 National

5.1.1 Tests

Below raw numbers of test by date reported are plotted. Note this is not by specimen received date, so, for example, no adjustment is made for old cases/tests that were loaded on 23 November 2021. A 7-day moving average is also plotted. No adjustment is made for public holidays for this data.

Tests

Tests

Tests for Last 30 Days

Tests for Last 30 Days

5.1.2 Percentage testing positive

Below the percentage testing positive is plotted by reported date, so, for example, no adjustment is made for old cases/tests that were loaded on 23 November 2021. A 7-day sliding window percentage is also plotted. No adjustment is made for public holidays or delays for this data as the assumption is that the numerator and denominator should be similarly impacted (both are by date reported).

Percentage Testing Positive

Percentage Testing Positive

Percentage Testing Positive for Last 30-days

Percentage Testing Positive for Last 30-days

5.1.3 Allowance for Late Reported Cases

Below the estimations for daily cases are plotted against the cases reported to date for the last 14 days. More recent dates are not fully reported yet and are increased more to the estimated levels.

Reported and Estimated Daily Cases for South Africa

Reported and Estimated Daily Cases for South Africa

5.1.4 Adjustments for Public Holidays to Cases

Cases before and after adjustment for public holidays for South Africa are shown below for last 60 days. Cases are increased on days of public holidays and reduced on other days. Weekends are not impacted significantly.

Further in this report the adjusted cases are used.

Unadjusted and Adjusted Daily Cases for South Africa for last 60 days

Unadjusted and Adjusted Daily Cases for South Africa for last 60 days

5.1.5 Cases

This report uses cases by specimen received date. Below the cases are tabulated by reporting date and how many days before the report date the specimens were received. The “-1” column is the number of cases reported on a particular date where specimens were received the day before the report date. “-2” is the previous day etc.

On some days the report is not run in which case the reported cases may not be stored and thus the calculation below would not be possible. Those dates will be missing from the table.

The data used in the report is mainly captured from [4] as it contains data by specimen received date. Totals from the Department of Health / NICD as captured in [3] are also shown. There are minor differences from time to time.

Tabulation of cases by reporting date and days since specimen received
Report Date -1 -2 -3 -4 -5 -6 -7 Older Total DoH
2021-12-27 2,634 943 172 35 0 0 3 4 3,791 3,778
2021-12-28 3,286 1,498 587 1,649 103 93 0 -8 7,208 7,216
2021-12-29 6,725 1,946 74 34 44 7 0 223 9,053 9,020
2021-12-30 6,376 6,245 97 12 7 5 4 219 12,965 12,978
2022-01-02 1,801 2,166 249 14 2 0 0 123 4,355 4,357
2022-01-06 4,651 4,818 280 2 8 4 6 111 9,880 9,858
2022-01-07 4,286 4,269 275 28 0 6 11 391 9,266 9,259
2022-01-08 3,609 3,810 248 30 61 1 0 -9 7,750 7,759
2022-01-09 1,963 2,409 109 1 0 -1 0 4 4,485 4,482
2022-01-10 1,279 923 126 16 20 20 24 -11 2,397 2,409
2022-01-11 3,834 762 329 711 5 4 7 17 5,669 5,668
2022-01-12 3,215 3,500 20 7 7 11 -2 75 6,833 6,760
2022-01-13 2,980 2,705 196 3 1 3 0 41 5,929 5,917
2022-01-14 2,648 2,360 127 47 0 2 17 26 5,227 5,235
2022-01-15 2,208 2,264 70 10 4 7 0 19 4,582 4,590
2022-01-16 1,176 1,331 76 9 0 0 0 0 2,592 2,597

Cases are tabulated by specimen received date below. Cases include estimates for late reporting in recent days as well as adjustments for any public holidays. A centred 7-day moving average is also shown. The peak daily cases in previous waves (as measured by the moving average) is also shown.

Tabulation of cases in South Africa by recent specimen received date (including peak cases in prior waves)
Specimen Received Date Cases 7-day Moving Average Comment
2020-07-11 7,829 11,492 Wave 1 Peak
2021-01-06 23,120 19,402 Wave 2 Peak
2021-07-03 12,478 19,561 Wave 3 Peak
2021-12-12 8,484 21,970 Wave 4 Peak (to date)
2022-01-08 3,168 6,027
2022-01-09 2,091 5,522
2022-01-10 7,346 5,091
2022-01-11 5,982 4,767
2022-01-12 5,387 4,613
2022-01-13 4,994 NA
2022-01-14 4,402 NA
2022-01-15 2,092 NA

The above are based on the following dates:

  • Wave 1 started on 2020-01-01.
  • Wave 2 started on 2020-10-01.
  • Wave 3 started on 2021-04-01.
  • Wave 4 started on 2021-11-01.

Below a 7-day moving average daily case is plotted by on a log scale since start of the epidemic. Cases are plotted by specimen received date.

South African Daily Cases (7-day moving average)

South African Daily Cases (7-day moving average)

Below the above chart is repeated for the last 30-days:

South African Daily Cases for Last 30-days (7-day moving average)

South African Daily Cases for Last 30-days (7-day moving average)

Below a 7-day moving average daily case count is plotted by province on a log scale since start of the epidemic:

Daily Cases by Province (7-day moving average)

Daily Cases by Province (7-day moving average)

Below the above chart is repeated for the last 30-days:

Daily Cases for Last 30-days by Province (7-day moving average)

Daily Cases for Last 30-days by Province (7-day moving average)

5.1.6 Hospital Admissions

Admissions are tabulated by report date below. A centred 7-day moving average is also shown. The peak daily admissions in previous waves (as measured by the moving average) is also shown.

Tabulation of Hospital Admissions in South Africa by reported date (including peak admissions in prior waves)
Reported Date Hospital Admissions 7-day Moving Average Comment
2020-07-31 694 1,436 Wave 1 Peak
2021-01-24 885 3,677 Wave 2 Peak
2021-07-12 1,890 2,129 Wave 3 Peak
2021-12-21 2,524 1,413 Wave 4 Peak (to date)
2022-01-07 1,284 1,263
2022-01-08 692 1,166
2022-01-09 343 1,174
2022-01-10 1,325 1,028
2022-01-11 1,257 976
2022-01-12 1,336 NA
2022-01-13 961 NA
2022-01-14 919 NA

The above are based on the following dates:

  • Wave 1 started on 2020-01-01.
  • Wave 2 started on 2020-10-01.
  • Wave 3 started on 2021-04-01.
  • Wave 4 started on 2021-11-01.

Below a 7-day moving average of daily hospital admissions is plotted by on a log scale since start of the epidemic. Note admissions are plotted by reported date.

South African Daily Hospital Admissions (7-day moving average)

South African Daily Hospital Admissions (7-day moving average)

Below the above chart is repeated for the last 30-days:

South African Daily Hospital Admissions for Last 30-days (7-day moving average)

South African Daily Hospital Admissions for Last 30-days (7-day moving average)

Below a 7-day moving average daily admissions are plotted by province on a log scale since start of the epidemic:

Daily Hospital Admissions by Province (7-day moving average)

Daily Hospital Admissions by Province (7-day moving average)

Below the above chart is repeated for the last 30-days:

Daily Hospital Admissions for Last 30-days by Province (7-day moving average)

Daily Hospital Admissions for Last 30-days by Province (7-day moving average)

5.1.7 Hospital Deaths

Hospital deaths are tabulated by report date below. A centred 7-day moving average is also shown. The peak daily deaths in previous waves (as measured by the moving average) is also shown.

Note that hospital deaths underestimates total COVID-19 deaths in South Africa.

Tabulation of Hospital Deaths in South Africa by reported date (including peak deaths in prior waves)
Reported Date Hospital Deaths 7-day Moving Average Comment
2020-08-04 204 218 Wave 1 Peak
2021-01-14 672 637 Wave 2 Peak
2021-07-23 642 542 Wave 3 Peak
2022-01-07 143 198
2022-01-08 66 196
2022-01-09 46 200 Wave 4 Peak (to date)
2022-01-10 200 143
2022-01-11 237 143
2022-01-12 179 NA
2022-01-13 127 NA
2022-01-14 149 NA

The above are based on the following dates:

  • Wave 1 started on 2020-01-01.
  • Wave 2 started on 2020-10-01.
  • Wave 3 started on 2021-04-01.
  • Wave 4 started on 2021-11-01.

Below a 7-day moving average of daily hospital deaths is plotted by on a log scale since start of the epidemic. Note hospital deaths are plotted by reported date.

Daily Hospital Deaths (7-day moving average)

Daily Hospital Deaths (7-day moving average)

Below the above chart is repeated for the last 30-days:

South African Daily Hospital Deaths for Last 30-days (7-day moving average)

South African Daily Hospital Deaths for Last 30-days (7-day moving average)

Below a 7-day moving average daily hospital deaths are plotted by province on a log scale since start of the epidemic:

Daily Hospital Deaths by Province (7-day moving average)

Daily Hospital Deaths by Province (7-day moving average)

Below the above chart is repeated for the last 30-days:

Daily Hospital Deaths for Last 30-days by Province (7-day moving average)

Daily Hospital Deaths for Last 30-days by Province (7-day moving average)

5.1.8 Excess Deaths

Excess deaths are tabulated by report date below. A centred 7-day moving average is also shown. The peak daily deaths in previous waves (as measured by the moving average) is also shown.

Tabulation of Excess Deaths in South Africa by Date of Death (including peak deaths in prior waves)
Date of Death Excess Deaths 7-day Moving Average Comment
2020-07-22 953 953 Wave 1 Peak
2021-01-13 2,303 2,303 Wave 2 Peak
2021-07-14 1,476 1,476 Wave 3 Peak
2021-12-22 490 490 Wave 4 Peak (to date)
2022-01-01 474 464
2022-01-02 451 461
2022-01-03 451 457
2022-01-04 451 454
2022-01-05 451 451
2022-01-06 451 NA
2022-01-07 451 NA
2022-01-08 451 NA

The above are based on the following dates:

  • Wave 1 started on 2020-01-01.
  • Wave 2 started on 2020-10-01.
  • Wave 3 started on 2021-04-01.
  • Wave 4 started on 2021-11-01.

Below a 7-day moving average of daily excess deaths is plotted by on a log scale since start of the epidemic. Note excess deaths are plotted by date of death.

South African Daily Excess Deaths (7-day moving average)

South African Daily Excess Deaths (7-day moving average)

Below the above chart is repeated for the last 30-days:

South African Daily Excess Deaths for Last 30-days (7-day moving average)

South African Daily Excess Deaths for Last 30-days (7-day moving average)

Below a 7-day moving average daily excess deaths are plotted by province on a log scale since start of the epidemic:

Daily Excess Deaths by Province (7-day moving average)

Daily Excess Deaths by Province (7-day moving average)

Below the above chart is repeated for the last 30-days:

Daily Excess Deaths for Last 30-days by Province (7-day moving average)

Daily Excess Deaths for Last 30-days by Province (7-day moving average)

5.1.9 Cases, Admissions and Deaths Combined

Below a 7-day moving average daily case, admission and excess death counts are plotted by province on a log scale since start of the epidemic. Note admissions and excess deaths are plotted by reported date, whereas cases are plotted by specimen received date.

South African Daily Cases, Admissions and Deaths (7-day moving average)

South African Daily Cases, Admissions and Deaths (7-day moving average)

Below the above chart is repeated for the last 30-days:

South African Daily Cases, Admissions and Deaths for Last 30-days (7-day moving average)

South African Daily Cases, Admissions and Deaths for Last 30-days (7-day moving average)

5.1.10 Crude Ratios per Wave

Below crude rations are calculated between the waves. It’s based on the following starting dates:

  • Wave 1 started on 2020-01-01.
  • Wave 2 started on 2020-10-01.
  • Wave 3 started on 2021-04-01.
  • Wave 4 started on 2021-11-01.

Below crude ratios are tabulated and plotted. These ratios are:

  • Case admissions ratio calculated as admissions divided by cases.
  • Case fatality ratio calculated as hospital deaths divided by cases (Note that COVID-19 deaths are under-reported by a significant factor in South Africa).
  • Case excess deaths ratio calculated as excess deaths divided by cases.
  • Hospital fatality ratio calculated as hospital deaths divided by admissions (Note that COVID-19 deaths are under-reported by a significant factor in South Africa).
  • Death reporting ratio calculated as hospital deaths divided by excess deaths.
Tabulation of Crude Ratios by Wave
Wave Case Admission Ratio Case Fatality Ratio Case Excess Deaths Ratio Hospital Fatality Ratio Death Reporting Ratio
South Africa Wave 1 10.2% 1.87% 7.00% 18.3% 26.7%
South Africa Wave 2 20.2% 4.39% 12.33% 21.7% 35.6%
South Africa Wave 3 13.4% 3.09% 8.33% 23.1% 37.1%
South Africa Wave 4 8.5% 0.76% 3.35% 9.0% 22.8%

Below the rations above are plotted graphically:

Crude Ratios by Wave

Crude Ratios by Wave

5.1.11 Reproduction Number

Below current (last weekly) effective reproduction number estimates are tabulated for South Africa and by province.

Estimated Effective Reproduction Number for South Africa
Type Count (Per Day) Week Ending Reproduction Number [95% Confidence Interval]
South Africa cases 4,613 2022-01-15 0.71 [0.67 - 0.75]
South Africa hospital_admissions 976 2022-01-14 0.81 [0.79 - 0.83]
Estimated Effective Reproduction Number by Province
Province Type Count (Per Day) Week Ending Reproduction Number [95% Confidence Interval]
Eastern Cape cases 449 2022-01-15 0.67 [0.62 - 0.74]
Eastern Cape hospital_admissions 99 2022-01-14 0.78 [0.72 - 0.84]
Free State cases 199 2022-01-15 0.64 [0.59 - 0.69]
Free State hospital_admissions 69 2022-01-14 0.86 [0.78 - 0.94]
Gauteng cases 1,022 2022-01-15 0.73 [0.69 - 0.77]
Gauteng hospital_admissions 191 2022-01-14 0.79 [0.75 - 0.83]
KwaZulu-Natal cases 948 2022-01-15 0.63 [0.58 - 0.69]
KwaZulu-Natal hospital_admissions 216 2022-01-14 0.83 [0.79 - 0.87]
Limpopo cases 277 2022-01-15 1.13 [1.06 - 1.19]
Limpopo hospital_admissions 49 2022-01-14 0.94 [0.84 - 1.05]
Mpumalanga cases 192 2022-01-15 0.76 [0.71 - 0.82]
Mpumalanga hospital_admissions 40 2022-01-14 0.97 [0.86 - 1.08]
North West cases 186 2022-01-15 0.73 [0.67 - 0.78]
North West hospital_admissions 46 2022-01-14 0.92 [0.82 - 1.03]
Northern Cape cases 173 2022-01-15 0.71 [0.66 - 0.77]
Northern Cape hospital_admissions 25 2022-01-14 0.72 [0.61 - 0.84]
Western Cape cases 1,168 2022-01-15 0.70 [0.66 - 0.75]
Western Cape hospital_admissions 243 2022-01-14 0.76 [0.71 - 0.81]
Estimated Effective Reproduction Number based on Cases by Province

Estimated Effective Reproduction Number based on Cases by Province

Estimated Effective Reproduction Number based on Hospital Admissions by Province

Estimated Effective Reproduction Number based on Hospital Admissions by Province

Estimated Effective Reproduction Number by Province

Estimated Effective Reproduction Number by Province

Below the effective reproduction number for South Africa over the last 90 days are plotted together with a plot since start of the pandemic.

Estimated Effective Reproduction Number Based on Cases for South Africa over last 90 days

Estimated Effective Reproduction Number Based on Cases for South Africa over last 90 days

Estimated Effective Reproduction Number Based on Cases for South Africa since 1 April 2020

Estimated Effective Reproduction Number Based on Cases for South Africa since 1 April 2020

Estimated Effective Reproduction Number Based on Hospital Admissions for South Africa over last 90 days

Estimated Effective Reproduction Number Based on Hospital Admissions for South Africa over last 90 days

Estimated Effective Reproduction Number Based on Hospital Admissions for South Africa since 1 April 2020

Estimated Effective Reproduction Number Based on Hospital Admissions for South Africa since 1 April 2020

Estimated Effective Reproduction Number for South Africa over last 90 days

Estimated Effective Reproduction Number for South Africa over last 90 days

Estimated Effective Reproduction Number for South Africa since 1 April 2020

Estimated Effective Reproduction Number for South Africa since 1 April 2020

5.1.12 Risk Quadrants

The plots below show average daily cases over the last 7-days on the X-axis and the reproduction number on the Y-axis for each district municipality. By dividing this into 4 quadrants we can identify district municipalities with high numbers of cases and high reproduction numbers, or high cases and low reproduction numbers etc.

Values where the reproduction number exceeds 3 are plotted at 3.

Where there are very few cases (on the left of this chart), estimates for the reproduction number are more uncertain and volatile.

Risk Quadrants

5.1.13 Maps

5.1.13.1 Provinces

Below estimates of the reproductive number are plotted on a map of South Africa [8].