COVID death 1200% higher in countries not using Ivermectin
Yes, there are confounding variables. Can we explain the difference?
If some science is done in a forest, and there’s not an international PR team there to syndicate it to the newspapers, did the science really happen at all?
There are great studies out there, gathering dust, without a journalist anywhere in sight. What kind of insights could we gather if independent journalists and writers drop their snazzy press releases and instead try to cast light onto the data of independent researchers? Let me detail just one discovery I made.
I was looking for Ivermectin studies that appeared right around the moment the World Health Organisation recommended against its use in COVID patients. Check out Part 1 in my series on the matter. Or this summary.
I found a pre-print by Sayaka Tanioka & Kimitaka Kaga and its premise was really fascinating. Across sub-Saharan Africa, there are 31 countries running a ‘community-directed treatment with Ivermectin’ program as part of a WHO-led campaign to eradicate River Blindness by 2025. Essentially, Ivermectin is given out to people as a preventative for River Blindness, and the program has been very successful.
All mention of the program has been removed from the original link. When you access the page via archive.org, there’s a redirect script to move you on, but I managed to grab a screenshot before the redirect. There’s also a handy video you can watch which details how the program works.
With 99% of the cases of River Blindness happening across 31 countries in sub-Saharan Africa, the researchers argued this creates a natural experiment. We can compare two groups of African countries for COVID outcomes. In one group would be the 31 countries taking Ivermectin as part of the River Blindness campaign, the other group we can call the ‘non-Ivermectin’ group. The hypothesis is that if Ivermectin works, the Ivermectin group should see better COVID outcomes.
But what about the scale of Ivermectin use in those countries? Would we even notice it? Using Sierra Leone as an example: across a population of 7.9 million, six million are at risk of River Blindness. That’s 75% of the country targeted by an Ivermectin campaign aiming to totally erradicate that particular condition within 3 years. If Ivermectin is being used at this kind of scale, and it’s also effective against COVID, we should be able to see it in the data.
Given the original study took place in March 2021, I wanted to see the data available up until 2022. I got the data from the COVID-19 Data Explorer, first the Ivermectin Group then the Non-Ivermectin group. From just these two data points we can get an estimate of the difference in the outcome, it looks something like a 10x difference. Which is interesting.
I ran the numbers through a python script which averaged out the deaths-per-million and plotted them out. The graph is below, it shows 12x fewer deaths in the Ivermectin group.
When you find a gap like this, and the hypothesis fits, you need to check for confounding variables. What else might explain such a large difference in outcome across the two groups? The mean age of the Ivermectin group is younger at 18, vs 24 in the non-Ivermectin group. What’s important is the percentage of people over 65 in each group, because these are the people most vulnerable to COVID. For the Ivermectin group that averages at 2.96% of the population over 65, and for the non-Ivermectin group, it’s 4.61%. You could double the deaths per million figure in the Ivermectin group to account for this, and still be left with a ~600% difference.
What about testing? The Ivermectin group has a mean income of $2858, whilst the non-Ivermectin group is 300% higher at $8769. That means testing per thousand people has been around 2x higher in the non-Ivermectin group. Are the richer countries counting COVID cases and deaths better? Could it account for the 600% gap?
There is one interesting additional data point that might help us here. We have data on test positivity. It somewhat corrects for the error of ‘more tests creates more cases’. Instead, it helps us see and compare patterns in case numbers: if cases are going up, we see a higher test positivity, regardless of how many tests were given.
Below are the two groups compared on that metric, and again, there’s a trend showing lower test positivity amongst the Ivermectin group all the way through the pandemic up until Omicron hits in Jan 2022. Lower test positivity and significantly lower mortality.
This is in line with the finding of the research paper, “Morbidity and mortality were statistically significantly less in the ivermectin group.”
Have a look at the original study - the two authors deserve credit on this one. With great data resources, these sorts of ‘natural experiments’ are both interesting and possible. Can the insight be improved? If you liked this post, consider becoming a paid subscriber so I can continue this work as an independent.
The ‘Ivermectin group’: Angola, Benin, Burkina Faso, Burundi, Cameroon, Central Africa, Chad, Republic of Congo, Cote d'Ivoire, Democratic Republic of Congo, Equatorial Guinea, Ethiopia, Gabon, Ghana, Guinea, Guinea-Bissau, Kenya, Liberia, Malawi, Mali, Mozambique, Niger, Nigeria, Rwanda, Senegal, Sierra Leone, South Sudan, Sudan, Togo, Uganda, Tanzania
The ‘Non-Ivermectin group’: Algeria, Botswana, Cabo Verde, Comoros, Eritrea, Eswatini, Egypt, Gambia, Lesotho, Libya, Madagascar, Mauritania, Mauritius, Morocco, Namibia, Sao Tome and Principe, South Africa, Somalia, Seychelles, Tunisia, Zambia, Zimbabwe
Code:
# %%
# CSV DATA DOWNLOADED FROM
# https://ourworldindata.org/explorers/coronavirus-data-explorer?yScale=log&zoomToSelection=true&time=2020-03-01..latest&facet=none&pickerSort=asc&pickerMetric=location&Metric=Confirmed+deaths&Interval=Cumulative&Relative+to+Population=true&Color+by+test+positivity=false&country=BEN~BFA~BDI~CMR~CAF~TCD~COD~COG~CIV~ETH~GAB~GHA~GIN~GNB~KEN~LBR~MWI~MLI~MOZ~AGO~NER~NGA~RWA~SEN~SLE~SSD~SDN~TGO~UGA~TZA
file = 'owid-covid-data.csv'df = pd.read_csv(file)
# WHAT DATA IS AVAILABLE?print(df.columns)
# CREATE ARRAYS OF LOCATIONS USING IVERMECTIN AND THOSE THAT ARE NOTiver_countries = ["Angola", "Benin", "Burkina Faso", "Burundi", "Cameroon", "Central Africa", "Chad", "Republic of Congo", "Cote d'Ivoire", "Democratic Republic of Congo", "Equatorial Guinea", "Ethiopia", "Gabon", "Ghana", "Guinea", "Guinea-Bissau", "Kenya", "Liberia", "Malawi", "Mali", "Mozambique", "Niger", "Nigeria", "Rwanda", "Senegal", "Sierra Leone", "South Sudan", "Sudan", "Togo", "Uganda", "Tanzania"]non_iver_countries = ["Algeria", "Botswana", "Cabo Verde", "Comoros", "Eritrea", "Eswatini", "Egypt", "Gambia", "Lesotho", "Libya", "Madagascar", "Mauritania", "Mauritius", "Morocco", "Namibia", "Sao Tome and Principe", "South Africa", "Somalia", "Seychelles", "Tunisia", "Zambia", "Zimbabwe"]
# SELECT THE DATA WE WANT TO SEEcolumn_select = ['location','new_deaths_per_million','date','gdp_per_capita', 'new_tests_per_thousand', 'excess_mortality', 'median_age', 'positive_rate', 'aged_65_older']
# CREATE A DATA FRAME OF THOSE EXACT SELECTIONSiver_select = df[df.location.isin(iver_countries)][column_select]non_iver_select = df[df.location.isin(non_iver_countries)][column_select]
# IF YOU WANT TO CALCULATE MEAN, USE SOMETHING LIKE THIS?print(f"Ivermectin GDP: {iver_select.gdp_per_capita.mean()} None Ivermectin GDP: {non_iver_select.gdp_per_capita.mean()}")print(f"Ivermectin age: {iver_select.median_age.mean()} None Ivermectin age: {non_iver_select.median_age.mean()}")print(f"Ivermectin over_65: {iver_select.aged_65_older.mean()} None Ivermectin over_65: {non_iver_select.aged_65_older.mean()}")
# %%# GROUP THE DATA BY DATE, AND CUMULATE WHAT WE SELECTEDiver_group = iver_select.groupby('date').mean().cumsum(axis=0)non_iver_group = non_iver_select.groupby('date').mean().cumsum(axis=0)
# %%# CUMULATIVE DEATHS PER MILLION GRAPH
fig = go.Figure()
fig.add_trace(go.Scatter( x=iver_group.index, y=iver_group.new_deaths_per_million, name='Ivermectin Countries',))
fig.add_trace(go.Scatter( x=non_iver_group.index, y=non_iver_group.new_deaths_per_million, name='Non Ivermectin Countries'))
fig.update_layout(legend_title_text = "Legend",title='Cumlative COVID Deaths per Million', width=600)fig.show()
# %%# TESTS PER THOUSAND PEOPLE GRAPHfig = go.Figure()
fig.add_trace(go.Scatter( x=iver_group.index, y=iver_group.new_tests_per_thousand, name='Ivermectin Countries',))
fig.add_trace(go.Scatter( x=non_iver_group.index, y=non_iver_group.new_tests_per_thousand, name='Non Ivermectin Countries'))
fig.update_layout(legend_title_text = "Legend",title='Tests per Thousand people', width=600)fig.show()
# %%# TEST POSITIVTY GRAPH
fig = go.Figure()
# WE ACTUALLY DO NOT WANT TO CUMULATE HERE, WE ARE LOOKING FOR RISE AND FALL OF TEST POSITIVTY SO WE REMOVE CUMSUM()iver_group = iver_select.groupby('date').mean()non_iver_group = non_iver_select.groupby('date').mean()
fig.add_trace(go.Scatter( x=iver_group.index, y=iver_group.positive_rate, name='Ivermectin Countries',))
fig.add_trace(go.Scatter( x=non_iver_group.index, y=non_iver_group.positive_rate, name='Non Ivermectin Countries'))
fig.update_layout(legend_title_text = "Legend",title='Test Positivity Rate', width=600)fig.show()
Thanks for the analisys, the WHO removing the use of ivermectine in africa is unbelivable.
and the python code!
Just has to add
import pandas as pd
import plotly.graph_objects as go
Great data!