Kirsch posted his initial arguments here: https://kirschsubstack.com/p/did-the-covid-vaccine-save-more-people.
Kirsch wrote: "And then there is miscategorization bias. Engler (2024) points out that every single study with the words (covid, vaccine, efficacy, safety) that Neil and Fenton (2024) could locate had one or more types of miscategorization errors."
I wrote about Neil and Fenton's paper here: uk.html#Martin_Neil_and_Norman_Fenton_March_2024_preprint_about_the_cheap_trick.
Neil and Fenton's cheap trick paper was recently demolished by Peter Hegarty, who is a professor of mathematics at the University of Gothenburg. [https://x.com/PeterHegarty17/status/1869784526395978142] He found that only about a quarter of the 39 papers listed by Neil and Fenton actually employed the classification delay which Neil and Fenton have dubbed the cheap trick, and none of the papers applied the form of the cheap trick postulated by Neil and Fenton where the classification delay was only applied to the numerator but not to the denominator. Hegarty wrote: "Moreover, their text and simulations suggest they were concerned with an even much more egregious form of the bias, whereby only Covid cases amongst the partially vaccinated contributed to the infection rate for the unvaccinated. In other words, partially vaccinated cases were counted in the numerator of the infection rate for the unvaccinated, but partially vaccinated individuals were counted in the denominator for the fully vaccinated. We can state categorically that we found no evidence in any of the 39 studies of this 'trick' being employed."
The abstract of Neil and Fenton's paper said: "Simulation demonstrates that this miscategorisation bias artificially boosts vaccine efficacy and infection rates even when a vaccine has zero or negative efficacy." But in their simulation the 1-to-3-week classification delay was only applied to the numerator for cases but not to the denominator for the population size:
When I modified their simulation so that I also applied the classification delay to the numerator, unvaccinated and vaccinated people got an identical infection rate:
Earlier when Fenton and Neil posted a similar simulation on Substack, even people in their Substack comments were saying that their simulation was wrong:
I have asked Neil and Fenton to cite a single study where the classification delay was only applied to the numerator but not to the denominator, and I have also asked it from Mathew Crawford and James Lyons-Weiler who have supported Neil and Fenton's approach of applying the delay only to the numerator, but none of them has been able to cite a single study.
Neil and Fenton's paper was highly misleading because they conflated their simulation where the classification delay was only applied to the numerator with real studies where the delay was also applied to the denominator, but they didn't even make it clear in their paper that they only applied the delay to the numerator in their simulation. I had to read their old Substack post to understand how their simulation worked because it was not described properly in their paper.
Kirsch also wrote: "Fenton, Neil, McLachlan and Craig also managed to successfully demonstrate to the UK Office of the Statistics Regulator that these miscategorisation processes meant official statistics in the UK could not be relied upon when used to support arguments of Covid-19 vaccine effectiveness (link)".
He linked to a response by the UK Office for Statistics Regulation which said: "In your paper you also state that the number of deaths reported within the first 21 days of receiving the first dose of the Covid-19 vaccination is below that which could be expected in the general population, and that this difference is evidence of systematic undercounting of deaths by ONS. Our view of this question starts with the consideration that the population included is not representative of the general population, and it is therefore likely that any pattern you observe is attributable to the 'healthy vaccinee' effect. This happens when people who are ill (either due to COVID-19 or another relevant illness) are likely to delay vaccination. The result of this effect is a lower-than-average mortality rate within the first 21 days of receiving a vaccination. This effect is described by ONS in their Deaths by Vaccination Status publication."
So basically the response said that the misclassification hypothesis by Fenton et al. was likely wrong, because the low number of deaths in the first few weeks after vaccination can be explained by the HVE instead. Other countries also have a very low number of deaths in the first few weeks after vaccination if you trust the record-level datasets from New Zealand, the United States, and the Czech Republic. It's why I have been saying that the record-level datasets are the Achilles' heel of the Cheap Tricksters called Fenton and Neil.
The letter by Craig, Neil, Fenton, and McLachlan related to a hypothesis presented in their preprint from March 2022 titled "Official mortality data for England reveal systematic undercounting of deaths occurring within first two weeks of Covid-19 vaccination". [https://www.researchgate.net/publication/358979921] In the preprint the authors speculated that because the ONS dataset for deaths by vaccination status had a low number of non-COVID deaths in the first two weeks after vaccination, deaths that occurred soon after vaccination were somehow systematically omitted or misclassified, but the authors discounted the HVE as an explanation for the low number of deaths. They wrote: "The healthy vaccinee hypothesis, that those close to death will postpone or decline vaccination might hypothetically account for a lower rate of death in the first two weeks. But as an explanation it is only plausible if every possible death that might occur in the first two weeks, after the offer of vaccination, was foreknown whilst those deaths in the third week were not, and hence those dying in the third week did not postpone or decline vaccination."
However Craig et al. didn't take into account that the temporal healthy vaccinee effect actually lasts longer than 2 weeks, but if you plot deaths by weeks since the first dose in England, the increasing trend in mortality caused by the waning out of the temporal HVE is counteracted by the decreasing trend in the background mortality rate, because many first doses in England were given during the first three months of 2021 when the mortality rate was falling rapidly because the COVID wave in the winter of 2020-2021 was passing by.
A similar effect can also be seen in the next plot of the Czech record-level data, where the light gray line has a sharp drop during the first weeks after vaccination, because the light gray line is adjusted for the background mortality rate among the entire Czech population during the ongoing month: [connecticut.html#Deaths_by_weeks_since_vaccination]
And in the next plot if you look at the dark gray line which is not adjusted for the monthly background mortality rate, the temporal HVE only seems to last about 3 weeks because there is a dent in deaths around the 4th week, even though it's because the rising trend in deaths due to waning out of the HVE is counteracted by the falling trend in background mortality rate. But in the light gray line which is adjusted for background mortality rate, the temporal HVE seems to last around 20 weeks instead:
I believe a similar effect explains why the temporal HVE for first doses only appears to last about 3 weeks in Kirsch's Medicare data even though it lasts longer in Barry Young's New Zealand data, because in the US a lot of people got the first dose during the tail end of a COVID wave in early 2021, but New Zealand was free of COVID in 2021 when most people got the first dose: [connecticut.html#Comparison_of_deaths_by_weeks_since_vaccination_to_other_datasets]
Clare Craig might have later come to the conclusion that the low number of deaths during the first two weeks after vaccination might be explained by the HVE, because in 2024 when someone asked her what she meant by the healthy vaccinee effect, she answered that "Studies show that the first few weeks after vaccination are outliers because people who are feeling ill postpone." [https://x.com/ClareCraigPath/status/1844085783365550508]
In 2022 Martin Neil tweeted: "The ONS's December report claims anomalies we identified are caused by healthy vaccinee effect. We examined the new ONS data and found NO evidence to support this claim". [https://x.com/MartinNeil9/status/1481561698792267779] And in March 2024 Neil tweeted: "There is no evidence of a healthy vaccinee effect. You are signing up to an assumption usually exploited to pretend vaccines are effective. We demonstrated this using the ONS's own data." [https://x.com/MartinNeil9/status/1767991047940907318] However by April 2024 he seems to have come to the conclusion that the HVE might be real after all based on a Czech study which said that the HVE explained why unvaccinated people had higher mortality than vaccinated people. [https://x.com/MartinNeil9/status/1780163490247791002]
So the old letter by Craig and Neil et al. might no longer represent their current views regarding the HVE. The letter also conflicts with the view of Kirsch, who has said that that the HVE explains why his record-level datasets have a low number of deaths in the first few weeks after vaccination, but he has not claimed that his record-level datasets would suffer from the kind of miscategorization bias that was hypothesized by Clare Craig, Martin Neil, and Norman Fenton.
In the ONS dataset for deaths by vaccination status, the ASMR of people with n-1 doses shoots up when the nth dose is rolled out. Fenton and Neil hypothesized it was because people who died soon after receiving the nth dose were misclassified under dose n-1. But the next plot demonstrates three major problems with their hypothesis: [uk.html#Problems_with_Fenton_and_Neils_n_1_dose_misclassification_hypothesis]
Kirsch wrote:
This just-published study done by the CDC shows in Table 2 that the Pfizer vaccine given to COVID-naive kids increases the risk of symptomatic COVID infection: HR 3.57 (1.10, 11.63). Since, by the CDC's own study, the vaccine increases the odds of a symptomatic COVID infection by an estimated 3.57 in healthy kids under 4, what do you think it will do to the elderly? It is highly unlikely for a vaccine to simultaneously increase the risk of infection in one age group (e.g., children under 4) while reducing it in another age group (e.g., adults). There are NO well-documented examples where a vaccine increased infection risk in one demographic while reducing it in another. Show me the counterexample if you think I'm wrong. Otherwise, we're done with this category. Since even the CDC admits they were wrong (i.e., their own paper shows vaccines increased risk).
The paper he linked is behind a paywall and not at Sci-Hub or Researchgate so I wasn't able to read it: https://www.scienceopen.com/document?vid=c46d3b29-4916-4e80-883f-c095035db6dc. However the abstract says that "there was no difference in risk by vaccination status" (which might mean that there was some risk but it was not significant): "To understand how coronavirus disease 2019 vaccines impact infection risk in children <5 years, we assessed risk of severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2) infection from September 2022 to April 2023 in 3 cohort studies. There was no difference in risk by vaccination status. While vaccines reduce severe disease, they may not reduce SARS-CoV-2 infections in naïve young children."
The results of the paper seem to match this CDC dataset where the rate of COVID cases per person-weeks is similar in unvaccinated and vaccinated people in ages 0-4, even though in older age groups the ratio gradually gets much higher in unvaccinated people: [https://data.cdc.gov/Public-Health-Surveillance/Rates-of-COVID-19-Cases-or-Deaths-by-Age-Group-and/54ys-qyzm/about_data]
library(data.table);library(ggplot2) t=fread("Rates_of_COVID-19_Cases_or_Deaths_by_Age_Group_and_Updated__Bivalent__Booster_Status_20241231.csv") p=t[outcome=="case"&age_group!="all_ages"&vaccination_status=="vaccinated"] p[,x:=isoweek(mmwr_week%/%100,mmwr_week%%100,4)] p[,vaxpct:=vaccinated_population/(vaccinated_population+unvaccinated_population)*100] lab=c("Unvaccinated","Fully vaccinated","Vaccinated percent (panel top is 100%)") p=p[,.(x,y=c(c(crude_unvax_ir,crude_vax_ir)/7*365,vaxpct),z=factor(rep(lab,each=.N),lab),group=age_group)] age=unique(p$group);p[,group:=factor(group,age[order(as.integer(sub("[-+].*","",age)))])] p=merge(p,p[z!=levels(z)[3],.(maxy=max(y)),group]) p[z==levels(z)[3],y:=y/100*maxy] xstart=as.Date("2021-7-1");xend=as.Date("2023-7-1") xbreak=as.Date(c("2021-10-1","2022-7-1","2023-4-1"));xlab=year(xbreak) ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_vline(xintercept=seq(as.Date("2022-1-1"),xend,"year"),color="gray80",linewidth=.5)+ geom_line(aes(color=z,linetype=z),linewidth=.6)+ geom_text(data=p[,max(y),group],aes(y=V1,label=group,x=xstart+20),fontface=2,size=3.6,vjust=1.9,hjust=0)+ labs(title="CDC: COVID cases per 100,000 person-years by vaccination status and age",subtitle=paste0("Source: CDC dataset \"Rates of COVID-19 Cases or Deaths by Age Group and Updated (Bivalent) Booster Status\". The fully vaccinated group consists of people who have completed the primary series doses at least 14 days ago. Partially vaccinated people are excluded.")|>stringr::str_wrap(76),x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(0,NA),breaks=\(x){y=pretty(x,4);y[y<max(x)*.9]},labels=\(x)ifelse(x>=1e3,paste0(x/1e3,"k"),x))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#ff5555","#ff66ff"))+ scale_linetype_manual(values=c("solid","solid","42"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(5)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length.y=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(26,"pt"), legend.position="top", legend.justification="right", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,6), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(2,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=6.4,height=5.5,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
Kirsch's Google Docs document included this plot by Jikkyleaks: [https://x.com/Jikkyleaks/status/1870708191367254095]
Canceledmouse performed a similar analysis here which was documented more thoroughly: https://openvaet.substack.com/p/how-the-israeli-data-used-to-sell. It included this table that showed the observation period of each study:
He also used a more accurate method to calculate the number of person-days per group which gave him slightly different results:
However the four studies were performed at different time periods when Israel had different rates of daily new COVID cases. When I divided the incidence values calculated by canceledmouse with the average daily new cases in Israel during the period of each study, I got a higher ratio for unvaccinated people in the first study than for people with three doses in the last two studies:
owid=fread("https://covid.ourworldindata.org/data/owid-covid-data.csv") studies=fread(text="name,start,end,incidence Dagan 2021 (unvaccinated),2020-12-20,2021-02-01,66.7 Bar-On 2021 (2 doses),2021-07-30,2021-08-31,85.46 Bar-On 2022 (3 doses),2022-01-10,2022-03-02,361 Magen 2022 (3 doses),2022-01-03,2022-02-18,348") # OWID only had weekly new cases so this interpolates them to daily so that weekly sums are preserved cases=owid[location=="Israel"&new_cases>0,.(x=as.Date(date)-6,y=new_cases)] daily=tempdisagg::td(cases~1,,"daily","fast")$values studies[,meancases:=daily[time%in%start:end,mean(value)],name] studies[,ratio:=incidence/meancases] print(studies,r=F)
name start end incidence meancases ratio Dagan 2021 (unvaccinated) 2020-12-20 2021-02-01 66.70 6297.8 0.0105911 Bar-On 2021 (2 doses) 2021-07-30 2021-08-31 85.46 6068.9 0.0140815 Bar-On 2022 (3 doses) 2022-01-10 2022-03-02 361.00 41151.9 0.0087724 Magen 2022 (3 doses) 2022-01-03 2022-02-18 348.00 45093.5 0.0077173
The last two studies were done during the Omicron spike when there was a huge number of new cases:
library(data.table);library(ggplot2) owid=fread("https://covid.ourworldindata.org/data/owid-covid-data.csv") studies=fread(text="name,start,end,incidence Dagan 2021 (unvaccinated),2020-12-20,2021-02-01,66.7 Bar-On 2021 (2 doses),2021-07-30,2021-08-31,85.46 Bar-On 2022 (3 doses),2022-01-10,2022-03-02,361 Magen 2022 (3 doses),2022-01-03,2022-02-18,348") cases=owid[location=="Israel"&new_cases>0,.(x=as.Date(date)-6,y=new_cases)] daily=tempdisagg::td(cases~1,,"daily","fast")$values studies[,meancases:=daily[time%in%start:end,mean(value)],name] studies[,ratio:=incidence/meancases] p=daily[,.(x=time,y=value)] yend=max(p$y);xstart=as.Date("2020-1-1");xend=as.Date("2024-1-1") xbreak=seq(xstart+182,xend,"year");xlab=year(xbreak) hue=c(0,12,21,30)/36;color=hsv(hue,1,.8);fill=hsv(hue,.5,1) ggplot(p)+ geom_vline(xintercept=seq(xstart,xend,"year"),color="gray80",linewidth=.5)+ geom_rect(data=studies,aes(xmin=start,xmax=end,ymin=0,ymax=meancases,color=name,fill=name),linewidth=.2,alpha=.5)+ geom_text(data=studies,aes(x=pmean(start,end),y=meancases,label=name,color=name),vjust=c(-2.3,-4,.5,.5),hjust=c(.5,.7,-.12,-.12),size=4)+ geom_line(aes(x=x,y=y),linewidth=.6)+ scale_x_continuous(limits=c(xstart,xend),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(0,NA),breaks=\(x)pretty(x,7),labels=\(x)ifelse(x>=1e3,paste0(x/1e3,"k"),x))+ labs(title="Daily new COVID cases in Israel (intepolated from weekly new cases)",subtitle=paste0("Source: covid.ourworldindata.org/data/owid-covid-data.csv. The height of the bars shows the average number of cases during the period of four Israeli studies highlighted by Jikkyleaks and canceledmouse.")|>stringr::str_wrap(82),x=NULL,y=NULL)+ scale_color_manual(values=color)+ scale_fill_manual(values=fill)+ coord_cartesian(clip="off",expand=F)+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(5)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length.y=unit(4,"pt"), axis.title=element_text(size=8), legend.position="none", panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,5)), plot.title=element_text(size=11.5,face=2,margin=margin(1,,5))) ggsave("1.png",width=6.4,height=4.2,dpi=300*4) system("magick 1.png -resize 25% -dither none -colors 256 1.png")
Other confounders might also explain part of the difference in results between the studies. For example the median age was 45 in the first study (Dagan et al. 2021), but the other three studies only included people aged 60 and above, and the median age was 72 years in the last study.
Kirsch wrote: "Worldwide COVID case numbers reported by OWID and accessible from this page show that highly vaxxed countries have higher cases per million (see The Aarstad paper below). For example, Singapore has one of the highest vaccination rates in the world and everyone was vaxxed before they opened the country to foreigners. So Singapore should be a 'best possible' comparison scenario. So why do they have more cases per capita than the US? If the vaccine reduced infection as claimed, Singapore should be knocking it out of the park due to 1) heavy vaccination and 2) incredibly high herd immunity (due to the high vaccination rate), and 3) compliance with health directives which, if the authorities were right, makes it impossible for the virus to spread. Yet from an infection rate, they did much worse than the US. How is that possible?"
However richer countries have a higher percentage of vaccinated people and richer countries also performed more tests per capita:
library(data.table);library(ggplot2) download.file("https://covid.ourworldindata.org/data/owid-covid-data.csv","owid-covid-data.csv") owid=fread("owid-covid-data.csv") p=na.omit(owid[,.(y=total_cases_per_million,x=total_tests_per_thousand,location,continent)]) p=p[,.(x=max(x),y=max(y)),.(location,continent)] p=p[x!=0&y!=0] set.seed(0) hue=c(0,60,120,210,300)+15 color=c("black",hcl(hue,110,50)) fill=c("black",hcl(hue,110,60)) ggplot(p,aes(x,y))+ ggforce::geom_mark_hull(aes(color=continent,fill=continent),concavity=1000,radius=unit(3,"pt"),expand=unit(4,"pt"),alpha=.2,size=.2)+ geom_smooth(method="lm",formula=y~x,size=.5,se=F,color="black",linetype=2)+ geom_point(aes(color=continent),size=1)+ geom_text(aes(color=continent,label=location),size=3,vjust=-.7)+ labs(title=paste0("OWID: Tests per thousand people vs cases per million people (r≈",p[,sprintf("%.2f",cor(x,y))],")"))+ labs(x="Tests per thousand people",y="Cases per million people")+ scale_x_log10(expand=c(.08,0,.06,0),labels=\(x)paste0("1e",log10(x)))+ scale_y_log10(expand=c(.03,0,.03,0),labels=\(x)paste0("1e",log10(x)))+ scale_fill_manual(values=fill)+ scale_color_manual(values=color)+ coord_cartesian(clip="off")+ theme(axis.text=element_text(size=11,color="black"), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=11,face=2), axis.title.x=element_text(margin=margin(5,0,0,0)), legend.position="none", panel.background=element_rect(fill="white"), panel.border=element_rect(fill=NA,linewidth=.4), panel.grid.major=element_blank(), plot.margin=margin(8,6,6,6), plot.subtitle=element_text(size=11), plot.title=element_text(size=11.5,face=2)) ggsave("1.png",width=7,height=6,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
OWID doesn't have data for the number of tests performed in Singapore, but in both Hong Kong and China as a whole the number of tests performed per capita is about 2.4 times as high as in the United States:
> owid=fread("https://covid.ourworldindata.org/data/owid-covid-data.csv") > owid[,max(total_tests_per_thousand,na.rm=T),location][V1!=-Inf][order(-V1)][1:40,.(location,tests_per_thousand=V1)] location tests_per_thousand 1: Cyprus 32925.826 2: Austria 21272.133 3: United Arab Emirates 17994.670 4: Gibraltar 16322.865 5: Faroe Islands 14707.401 6: Denmark 11043.263 7: Slovakia 9405.660 8: Greece 8088.120 9: United Kingdom 7480.121 10: Bahrain 6812.903 11: Luxembourg 6725.731 12: Hong Kong 6594.993 # region similar to Singapore 13: China 6461.913 14: Israel 5573.137 15: Czechia 5193.488 16: Maldives 4240.251 17: Portugal 4161.808 18: France 4126.754 19: Latvia 3876.137 20: Andorra 3799.719 21: Italy 3795.998 22: Iceland 3709.574 23: Malta 3703.589 24: Georgia 3632.937 25: Palau 3308.200 26: Anguilla 3261.728 27: Lithuania 3128.553 28: British Virgin Islands 3104.878 29: Belgium 2955.332 30: Dominica 2836.077 31: Australia 2830.525 32: Qatar 2817.619 33: United States 2708.533 # United States ranks 33rd 34: Estonia 2577.757 35: Slovenia 2517.858 36: Barbados 2480.356 37: Ireland 2476.135 38: Switzerland 2448.135 39: Liechtenstein 2321.576 40: Mongolia 2213.041 location tests_per_thousand
But the number of cases per million is only about 1.8 times higher in Singapore than United States, so if the number of tests per capita in Singapore is similar to Hong Kong and China, then Singapore might have a lower rate of cases per tests than the United States:
> owid[location%in%c("Singapore","United States"),.(total_cases_per_million=max(total_cases_per_million,na.rm=T)),location] location total_cases_per_million 1: Singapore 532073.6 2: United States 302859.5
Kirsch wrote:
Despite being highly biased to make the product look as good as possible, the only mortality benefit Pfizer/BioNTech could find during their clinical trial was one COVID life saved in the trial, during the blinded period of July to mid-November (see Table S4 in the Appendix page 11). So at best they can claim "1 life saved from COVID" per 22,000 fully vaccinated.
Extrapolate that out to 270M people in the US who were injected. So the very best case is that the COVID vaccines saved on the order of 12,000 lives under ideal conditions. I don't believe it is anywhere close to that, but if you claim more than this number, it means you are saying the "gold-standard trials" are wrong and if the gold-standard DB-RCT trials are wrong, then everything else should be highly suspect.
However the study did not have a sufficiently large sample size to determine the impact of the vaccine on COVID deaths, so Kirsch would need to insert a very wide confidence interval to his estimate of 1 life saved per 22,000 vaccinated people. The study also included only 6 months of follow-up, and it's possible that more people could have died of COVID after the follow-up period was over.
The Pfizer phase 3 trial also included a low proportion of people who were at very high risk of dying from COVID due to old age or comorbidities.
Kirsch wrote:
CFR calculated from COVID cases and COVID deaths in the US. I did the analysis and posted it here for all to see. The CFR doesn't drop consistently below the pre-vaccination level until the variants become less deadly. If the vaccine reduced the CFR, you would be able to, without looking at the x-axis date, tell exactly when the vaccine rolled out because the points would start moving lower from the date of first vaccination onward. So the downward slope would have increased. Can you?
CDC has published a dataset for COVID cases and deaths by vaccination status, which doesn't include the whole US population but only certain jurisdictions with a total population sample of about 100 million: https://data.cdc.gov/Public-Health-Surveillance/Rates-of-COVID-19-Cases-or-Deaths-by-Age-Group-and/54ys-qyzm.
In each age group included in the CDC dataset, the rate of COVID cases per person-weeks is lower in vaccinated people than unvaccinated people, even though the difference is smaller in younger age groups:
In each age group the total rate of COVID deaths per person-weeks is also lower in vaccinated than unvaccinated people:
t=fread("Rates_of_COVID-19_Cases_or_Deaths_by_Age_Group_and_Updated__Bivalent__Booster_Status_20241231.csv") p=t[outcome=="death"&age_group!="all_ages"&vaccination_status=="vaccinated"] p[,x:=isoweek(mmwr_week%/%100,mmwr_week%%100,4)] p[,vaxpct:=vaccinated_population/(vaccinated_population+unvaccinated_population)*100] lab=c("Unvaccinated","Fully vaccinated","Vaccinated percent (panel top is 100%)") p=p[,.(x,y=c(c(crude_unvax_ir,crude_vax_ir)/7*365,vaxpct),z=factor(rep(lab,each=.N),lab),group=age_group)] age=unique(p$group);p[,group:=factor(group,age[order(as.integer(sub("[-+].*","",age)))])] p=merge(p,p[z!=levels(z)[3],.(maxy=max(y)),group]) p[z==levels(z)[3],y:=y/100*maxy] xstart=as.Date("2021-7-1");xend=as.Date("2023-7-1") xbreak=as.Date(c("2021-10-1","2022-7-1","2023-4-1"));xlab=year(xbreak) ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_vline(xintercept=seq(as.Date("2022-1-1"),xend,"year"),color="gray80",linewidth=.5)+ geom_line(aes(color=z,linetype=z),linewidth=.6)+ geom_text(data=p[,max(y),group],aes(y=V1,label=group,x=xstart+20),fontface=2,size=3.6,vjust=1.9,hjust=0)+ labs(title="CDC: COVID deaths per 100,000 person-years by vaccination status and age",subtitle=paste0("Source: CDC dataset \"Rates of COVID-19 Cases or Deaths by Age Group and Updated (Bivalent) Booster Status\". The fully vaccinated group consists of people who have completed the primary series doses at least 14 days ago. Partially vaccinated people are excluded.")|>stringr::str_wrap(76),x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(0,NA),breaks=\(x){y=pretty(x,4);y[y<max(x)*.9]},labels=\(x)ifelse(x>=1e3,paste0(x/1e3,"k"),x))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#ff5555","#ff66ff"))+ scale_linetype_manual(values=c("solid","solid","42"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(5)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length.y=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(26,"pt"), legend.position="top", legend.justification="right", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,6), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(2,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=6.4,height=5.5,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
However the difference between unvaccinated and vaccinated people isn't as big for cases as for deaths, so the difference in CFR is also not as big as the difference in deaths. Unvaccinated people still have clearly higher CFR within age groups, even though the ratio between unvaccinated and vaccinated CFR also gets lower over time, which might be if unvaccinated people acquire natural immunity over time or the effect of vaccination wears out:
library(data.table);library(ggplot2) t=fread("Rates_of_COVID-19_Cases_or_Deaths_by_Age_Group_and_Updated__Bivalent__Booster_Status_20241231.csv") p=t[age_group!="all_ages"&vaccination_status=="vaccinated"] p[,x:=isoweek(mmwr_week%/%100,mmwr_week%%100,4)] p[,vaxpct:=vaccinated_population/(vaccinated_population+unvaccinated_population)*100] lab=c("Unvaccinated","Fully vaccinated") a=p[,.(x,y=c(crude_unvax_ir,crude_vax_ir)/7*365,z=factor(rep(lab,each=.N),lab),group=age_group,outcome)] p=dcast(a,x+z+group~outcome,value.var="y")[,.(x,y=ma(nafill(death,,0),5)/ma(nafill(case,,0),5)),.(group,z)] age=unique(p$group);p[,group:=factor(group,age[order(as.integer(sub("[-+].*","",age)))])] xstart=as.Date("2021-7-1");xend=as.Date("2023-7-1") xbreak=as.Date(c("2021-10-1","2022-7-1","2023-4-1"));xlab=year(xbreak) ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_vline(xintercept=seq(as.Date("2022-1-1"),xend,"year"),color="gray80",linewidth=.5)+ geom_line(aes(color=z,linetype=z),linewidth=.6)+ geom_text(data=p[,max(y),group],aes(y=V1,label=group,x=xstart+20),fontface=2,size=3.6,vjust=1.9,hjust=0)+ labs(title="CDC: Percentage of COVID deaths per COVID cases",subtitle=paste0("A ±5-week moving average of deaths was divided by a ±5-week moving average of cases. Source: CDC dataset \"Rates of COVID-19 Cases or Deaths by Age Group and Updated (Bivalent) Booster Status\". The fully vaccinated group consists of people who have completed the primary series doses at least 14 days ago. Partially vaccinated people are excluded.")|>stringr::str_wrap(76),x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(0,NA),breaks=\(x){y=pretty(x,4);y[y<max(x)*.9]},labels=\(x)paste0(x*100,"%"))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#ff5555","#ff66ff"))+ scale_linetype_manual(values=c("solid","solid","42"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(5)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length.y=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(26,"pt"), legend.position="top", legend.justification="right", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,6), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(2,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=6.4,height=5.5,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
Unfortunately the CDC dataset only starts in October 2021 so I wasn't able to compare the CFR before and after the vaccine rollout.
In observational data like the CDC dataset, the percentage of infections diagnosed as cases out of all infections might be lower for unvaccinated people than vaccinated people, which might cause unvaccinated people to have high CFR relative to IFR. Unvaccinated people might be less likely to get tested than vaccinated people if for example unvaccinated people are less likely to interact with medical services. For example I have never gotten vaccinated or tested, because I have not even interacted with medical services in any way in the past 5 years, but my neighbor grandma who frequently visits a hospital has been vaccinated about 9 times and tested even more times.
Kirsch wrote:
This OSU paper (Adhikari, 2024) was published in Frontiers and found the vaccinated had lower non-COVID mortality (due the selection bias) but higher COVID mortality (n=152 total patients):
Results: While mortality rates were 36% (n=25) and 27% (n=15) for non-COVID-19 NVax and Vax patients, respectively, in COVID-19 patients mortality rates were 37% (NVax, n=89) and 70% (Vax, n=23). Among COVID-19 patients, mortality rate was significantly higher among Vax vs. NVax patients (p=0.002).
In plain English, people who were hospitalized for Acute Respiratory Failure (ARF) conditions excluding COVID were 54% more likely to die (OR 1.54) if they were unvaccinated relative to the vaccinated. That makes total sense due to selection bias. But those hospitalized for COVID-19 were MUCH more likely to die if they were vaccinated (OR=3.9, 95% CI: 1.3-12.2). In short, the unvaccinated are generally less healthy, but when it comes to COVID 19, if you got the shots and were hospitalized for COVID, then you were much more likely to die. In short, the vaccine did exactly the opposite of what was promised: it made you more likely to die from COVID.
However the mortality rates in the paper were not adjusted for age, and among the patients infected with SARS-CoV-2, the median age was about 6 years higher for vaccinated people than unvaccinated people:
Kirsch claimed that in the study the "unvaccinated are generally less healthy" because unvaccinated people had a higher mortality rate among the people who were not hospitalized for COVID. But actually ST1 above shows that unvaccinated people had a lower percentage of comorbidities than vaccinated people (even though it's partially because unvaccinated people were younger).
The study looked at the ratio of deaths per hospitalizations, but it might be that unvaccinated people had a higher risk of hospitalization than unvaccinated people. The paper said: "In this single-center study, 152 adult patients were admitted to Ohio State University hospital with ARF (05/2020 - 11/2022) including 112 COVID-19-positive and 40 COVID-19-negative patients. Of the COVID-19 positive patients, 23 were vaccinated for SARS-CoV-2 (Vax), and 89 were not (NVax). Of the NVax COVID-19 patients, 46 were admitted before and 43 after SARS-CoV-2 vaccines were approved." So during the period after vaccines had been approved, there were 43 COVID hospitalizations for unvaccinated people but only 23 hospitalizations for vaccinated people. The observation period of the study lasted from May 2020 until November 2022, so for most of the study period starting from the vaccine rollout, the majority of people were vaccinated in ages 40 and above which accounted for most COVID hospitalizations in the study.
The study took place in Ohio State University Hospital. In the following code I took a weighted average of daily percentage of vaccinated people in Ohio where the weight was the number of COVID deaths the same day. I included the period from December 14th 2020 when the first vaccine dose in the United States was administered until October 31st 2022 when the observation period of the Ohio study ended. The resulting weighted percentage of vaccinated people was about 42%, but it includes people of all ages so the percentage would've been much higher if I would've looked at only older age groups that account for most COVID hospitalizations:
download.file("https://data.cdc.gov/api/views/pwn4-m3yp/rows.csv","statescases.csv") download.file("https://data.cdc.gov/api/views/rh2h-3yt2/rows.csv","statesvax.csv") vax=fread("statesvax.csv") vax=vax[Location=="OH"][,.(x=as.Date(Date,"%m/%d/%Y"),vax=Administered_Dose1_Pop_Pct)] dead=fread("statescases.csv") dead=dead[state=="OH",.(date=as.Date(start_date,"%m/%d/%Y"),dead=new_deaths)] a=merge(vax,dead[,spline(date,dead/7,xout=min(date):max(date))][,.(x,dead=y)]) a[x>="2020-12-14"&x<="2022-10-31",weighted.mean(vax,dead)] # 42.24037
Kirsch seems to have also overlooked that the study included 23 people hospitalized for COVID in ages 19-49, but only one of them was vaccinated, and 7 out the 22 unvaccinated people ended up dying (even though the study only included patients hospitalized for acute respiratory failure, so they were more likely to die than average people hospitalized for COVID):
Kirsch wrote:
So we now have a complete explanation. People thought the vaccinated died less because of the vaccine, but this was a mirage. It was all selection and miscategorization bias. The Adhikari (2024) paper showed this effect as well for non-COVID hospitalizations where the COVID vaccinated patients died less for NON-COVID deaths, but died more for COVID deaths.
The Czech Republic data (record-level data obtained under FOIA) showed this as well because the mortality rate for those opting for the vaccine INSTANTLY dropped in half as soon as the groups split. For details, see A summary of why the Czech Republic data is so devastating to the "safe and effective" narrative. Note that this Henjin-produced graph is seriously flawed as explained in great detail here, but it illustrates the bias problem.
He claimed that the the healthy vaccinee effect explained why vaccinated ASMR had a massive drop in early 2021. However in the plot above if you look at the gray line which includes both unvaccinated and vaccinated people, it also dropped by about 43% between March 2021 and May 2021, which cannot be due to the healthy vaccinee effect because the gray line includes the entire population contained in the Czech dataset. But instead the gray line fell because there was a big drop in the number of COVID deaths starting in March 2021: [czech.html#Plot_of_multiple_variables_from_OWID]
In order to adjust for the HVE, in the next image I plotted ASMR as percentage of the ASMR in the second half of 2022 when there was a low number of COVID deaths. However during the COVID wave in December 2021, unvaccinated people still had a much bigger increase in deaths than vaccinated people: [czech2.html#ASMR_by_month_and_vaccine_type]
Out of the four vaccine brands included in the plot above, Janssen has the highest relative ASMR during the COVID wave in December 2021. It might be if Janssen vaccines were less effective than other vaccine brands, because in a Medicare dataset from Connecticut that was published by Kirsch, people who got a Janssen vaccine for their first dose also had high ASMR during the winter of 2021-2022 relative to ASMR during periods with low COVID deaths: [connecticut.html#ASMR_by_vaccine_brand_and_month]
(As an aside, the plot above also shows that in the Connecticut data people who got a Moderna vaccine for their first dose subsequently had much lower ASMR than people who got a Pfizer vaccine for the first dose. In the Czech record-level data it was the other way around so Kirsch claimed that the Czech data proved that Moderna vaccines were somehow more deadly than Pfizer vaccines. But I told him it was because of confounders and that other countries would have different profiles of confounders that would end up reversing the relationship, as was later shown by the Connecticut data.)
Kirsch wrote that "this Henjin-produced graph is seriously flawed as explained in great detail here", where he linked to a Substack post by canceledmouse who claimed that I was calculating ASMR incorrectly. I addressed the post in detail here: czech3.html#Reply_to_Substack_article_by_canceledmouse.
The reason why canceledmouse was not able to reproduce my ASMR calculation was because he had 4 bugs in his Perl code. I was able to fix all bugs by changing this line:
$deaths_per_100k_ASMR = $deaths_per_100k * $standard_percent / $age_group_percent_of_total;
To this:
$deaths_per_100k_ASMR = $deaths_per_100k * $standard_percent / 100 * 365 / ($rolling_days + 1);
When he calculated an 11-day moving average of deaths, he added together the deaths on 11 days but he forgot to divide them by 11. And the percentage of each age group in the standard population should've been divided by 100 to get the fraction of the age group. And the deaths per person-days should've been multiplied by 365 to get deaths per person-years. And a division by "age group percent of total" is not part of the formula for calculating ASMR.
He fixed the bugs after I pointed them out to him, and after that his code produced mostly similar results to my code. The remaining differences to my code were for two reasons. First I used the Czech 2021 census population as my standard population, but he used the WHO standard population which has a low percentage of people in elderly age groups so it's a very poor match to the Czech population structure. And second I applied a moving average where the window extended 10 days backwards and 10 days forwards to both deaths and population size, but he didn't apply a moving average to population size but he only applied a moving average that extended 10 days backwards to deaths, so his deaths were lagging 5 days behind the population size which underestimated the ASMR of vaccinated people in early 2021 when the vaccinated population size was increasing rapidly.
canceledmouse also claimed that my bucket analysis was done poorly, but the only reason he gave was that I assigned a random birthday to each person so he claimed my analysis was not reproducible. However he didn't notice that I assigned a seed in my code before I generated the random birthdays, and he corrected his error after I pointed it out to him.
canceledmouse pointed out that when he ran my code for generating the plot for ASMR by vaccine type, he got an extra gray line with the label "NA". However that was a line for Novavax that I forgot to remove from the code on my website.
canceledmouse also claimed that I shouldn't have used the term ASMR because I used the Czech 2021 census population as my standard population, but it's not a standardized standard population like the WHO standard population. However I explained why he was wrong in the page under my previous link.
Kirsch also linked to his summary article about the Czech data, but I addressed the article here: czech3.html#Comment_to_Substack_post_by_Kirsch.
Kirsch wrote: "The Pfizer Phase 3 trial had more deaths in the treatment group than the placebo group. The researchers determined it wasn't the drug that caused any of the deaths, but this was based on speculation because they never did any of the required tests (documented in Schwab 2022) to rule out the drug causing ANY the deaths."
Kirch misleadingly only said that the treatment group had more deaths than the placebo group, but he didn't mention that the difference was negligible. The paper he linked said: "During the blinded, placebo-controlled period, 15 participants in the BNT162b2 group and 14 in the placebo group died; during the open-label period, 3 participants in the BNT162b2 group and 2 in the original placebo group who received BNT162b2 after unblinding died." The study had only 44,165 participants so it did not have sufficient power to determine the impact of the vaccine on all-cause mortality.
Kirsch wrote: "The v-Safe data showed that 8% of people had to seek professional medical help after getting their shots (783K out of 10.1M reporting). 8% seeking medical attention after a vaccine is a train wreck. This should be a red flag that the vaccines are not safe. If just 1% of these medical cases resulted in a death, that is a .08% death rate which is comparable to the minimum of 1 death per 1,000 vaccinated estimated in this document. Note: people signed up for v-safe at the time they got their shot; they were given a pamphlet to sign up for v-safe along with their vaccination card."
However a Reuters article said that the figure of 8% included people who sought medical care within a year from receiving the vaccine: [https://www.reuters.com/legal/litigation/new-data-is-out-covid-vaccine-injury-claims-whats-make-it-2022-10-12/]
According to ICAN, 7.7% of the v-safe users - 782,913 people - reported seeking medical attention via a telehealth appointment, urgent care clinic, emergency room intervention or hospitalization following a COVID-19 vaccine.
About 25% of v-safe users said they experienced symptoms that required them to miss school or work or prevented them from doing other normal activities, according to ICAN's "dashboard" that summarizes the results.
There's no way, however, based on the information collected, to determine whether the COVID-19 vaccines actually caused the ailments. ICAN's analysis included responses reported beyond the first seven days post-vaccine and it counted all reports of people seeking medical attention up to a year after receiving the shot. ICAN did not specify when after vaccination they received the care, nor did the data indicate what the care was for.
[...]
In the first week after getting the shot, the [CDC] spokesperson continued, "reports of seeking any medical care (including telehealth appointments) range from 1-3% (depending on vaccine, age group and dose)."
She pointed me to a report, looking at the first six months of v-safe data to back up the assertion. In addition, another CDC spokesperson said that agency personnel made follow-up calls to any v-safe users who reported seeking medical attention.
But ICAN counsel Aaron Siri of Siri & Glimstad, who led the FOIA litigation against the agency, said that because some vaccine-related adverse effects (chronic arthritis, thrombocytopenia, Guillain-Barré syndrome, myocarditis and more) can appear weeks after vaccination, it's important to broaden the time frame beyond the one-week window in research the CDC cited.
[...]
The data has its limits. The CDC asked v-safe users to self-report a range of post-vaccine symptoms such as headache, joint pain and fatigue, and (irrespective of whether they sought medical attention) to categorize the ailments as mild, moderate or severe. The agency queried v-safe users about their health every day for the first week following vaccine, and then at various points afterwards for the next 12 months, gathering a total of 146 million records.
The study linked above said: "Reports of seeking medical care after mRNA vaccine were rare; v-safe surveys did not ask which symptoms prompted the participant to seek medical care." [https://pmc.ncbi.nlm.nih.gov/articles/PMC8901181/] Table 5 of the study showed that about 0.8% of people "reported medical care" within 8 days from receiving the first dose. The same table shows that only about 0.03% of people were listed as being hospitalized within 8 days from receiving the first dose.
It's not even clear if the rate of 8% people seeking medical care within a year is higher or lower than a baseline rate in the absence of COVID vaccination.
Kirsch wrote: "In Germany, even the regulator who promoted the vaccines admitted that 1 in 5,000 suffer from serious side effects. So that's a start, but the injury numbers are far higher than 1 in 5,000. This is just a perfect example of how officials are underreporting the true rate of harm, but at least acknowledging it."
The tweet by the German MoH said this in German: "One in 5,000 people is affected by a serious side effect after a COVID-19 #vaccination. If you suspect #side effects, get medical help and report your symptoms to @PEI_Germany http://nebenwirkungen.bund.de/nw/DE/home/home_node.html" [http://web.archive.org/web/20220720093113/https://twitter.com/BMG_Bund/status/1549688073478455297] The German MoH soon deleted the tweet and posted a similar tweet next day where the first sentence was changed to say: "The reporting rate for serious reactions @PEI_Germany is 0.2 suspected reports per 1,000 vaccine doses." [https://x.com/BMG_Bund/status/1550077552722644992] A reply to the new tweet also said this in German: "The reporting rate refers to all suspected reports, i.e. a causal connection with the vaccination is not yet confirmed with the suspected report; a temporal connection is first established." And another reply said: "In a tweet from July 20, there was an incorrect formulation regarding the reporting of suspected cases to the Paul Ehrlich Institute."
So the new thread clarified that the ratio in question was the rate of reports for suspected adverse events, and not a rate of people who "suffer from serious side effects" due to the vaccines like Kirsch suggested.
The latest safety report by the Paul Erlich Institute was published in March 2023, and it said this in German: "By March 31, 2023, the Paul Ehrlich Institute had received a total of 340,282 reports of suspected cases of side effects or vaccination complications following COVID-19 vaccines, of which 1,949 did not specify which vaccine was used. In 56,432 cases, the suspicion of a serious vaccination side effect was reported, of which 946 did not specify the vaccine. At the same time, according to the Robert Koch Institute, 192,208,062 COVID-19 vaccinations were administered in Germany." [https://www.pei.de/DE/newsroom/dossier/coronavirus/arzneimittelsicherheit.html] So at that point the ratio of serious reports per doses administered would've been about 0.029% (from 56432/192208062
).
In a Czech dataset for adverse event reports up to July 4th 2023, there were a total of 6,719 serious adverse event reports which was about 0.038% of total doses administered up to that point, so it was fairly similar to the German ratio: [https://github.com/PalackyUniversity/batch-dependent-safety/blob/main/data/SUKL-batches-AE.xlsx]
> s2=setDT(readxl::read_excel("SUKL-batches-AE.xlsx",sheet=2)) > s2[,sum(serious)] [1] 6719 > o=fread("owid-covid-data.csv") > o[location=="Czechia"&date=="2022-7-4",total_vaccinations] [1] 17681431 > 6719/17681431 [1] 0.0003800032
Kirsch wrote: "The official UK ASMR 21 days from dose 1 vs. Dose 2. Shows it is dose dependent. A 'safe' vaccine cannot have a dose dependent ASMR." And he linked to this tweet: [https://x.com/stkirsch/status/1858664074621710521]
However the tweet didn't show what part of the ASMR was accounted for by COVID deaths. In January 2021 COVID ASMR was about 56% of all-cause ASMR in the category "First dose, less than 21 days ago", but there was very low COVID ASMR in the category "Second dose, less than 21 days ago": [uk.html#Clare_Craig_ASMR_within_3_weeks_from_vaccination_for_first_and_second_doses]
So it might be that the vaccine was not yet fully effective during the first couple of weeks from vaccination, or that two doses offered better protection than one dose.
But even after you exclude the COVID ASMR in black from my plot above, there's still a big difference between the one-dose and two-dose categories for non-COVID ASMR. It might partially be if people with two doses who have passed the "healthy vaccinee" test twice might also have lower mortality risk on average than people with one dose who have passed the test once.
There's also an effect I'm calling the "late vaccinee effect" where people who got vaccinated late subsequently have higher mortality than people who got vaccinated during the rollout peak. I have found the effect in Barry Young's New Zealand data, the Czech record-level data, Kirsch's Medicare data from Connecticut, and an English FOI request given to Clare Craig. It might be if for example people who got vaccinated late tend to be less conscientious than people who got vaccinated on time, or if some people got vaccinated late because they had an illness when the vaccine dose was rolled out. So it might explain why in the ONS data people who got the first dose late also have such high mortality. But for example some people who got the second dose in May 2021 may have already gotten the first dose in January 2021, so in May 2021 people who have received the second dose less than 21 days ago are not necessarily "late vaccinees" to the same extent as people who only got the first dose less than 21 days ago.
The next plot demonstrates the late vaccinee effect in a UKHSA FOI response to Clare Craig. The black line shows deaths in people vaccinated during the weeks shown on the x-axis up to the end of 2022. In each age group the black line is below the blue baseline on the week when the pink line for new vaccine doses peaked, but the black line gradually climbs up among the late vaccinees who got vaccinated after the rollout peak had already passed (with the exception that the "late vaccinee effect" seems to be missing from ages 20-29): [uk.html#Mortality_rate_by_week_of_vaccination_up_to_the_end_of_2022]
From the next plot of the Czech record-level data you can also see that people who got the first dose in February to May 2021 subsequently had low excess mortality even in 2022, but there was subsequently high excess mortality among the late vaccinees who only got the first dose after the initial rollout wave had already passed: [czech.html#Triangle_plot_for_excess_mortality_by_month_of_vaccination_and_month_of_death]
Kirsch wrote: "Denis Rancourt 125 countries study paper (521 pages) found an overall average vDFR=.00127 which is 1 death per 787 doses which is consistent with other estimates presented here." In the 125-country paper and the earlier southern-hemisphere paper, Rancourt ignored how excess deaths had a much higher temporal correlation with COVID deaths than with the daily number of vaccine doses administered. When Rancourt calculated the figure of 17 million vaccine deaths, he assumed that all excess deaths since vaccine rollout were due to vaccines.
However in a recent paper Rancourt now wrote that US data presented strong evidence that excess deaths were nearly entirely associated with deaths labeled as COVID deaths: [https://correlation-canada.org/respiratory-epidemics-without-viral-transmission/]
In the high-quality databases for the USA, there is a close match between the weekly reported COVID-19 mortality and weekly excess all-cause mortality, in the Covid period (2020-2022), including prior to and during the vaccine rollouts (CDC, 2023).
To the degree that COVID-19 death assignation represents a serious respiratory condition at death, and given the intricate weekly temporal matching of the reported COVID-19 mortality and excess all-cause mortality for up to 3 years in the USA data, this represents strong evidence that respiratory infections were dominantly (virtually entirely) associated with the excess all-cause mortality.
On page 255 of the 125-country paper Rancourt wrote that the Czech Republic had a spike in deaths which coincided with the booster rollout. However I told him that if you look at age-stratified data, deaths peaked around the same time in all age groups even though vaccine doses peaked about a month before deaths in ages 80+ and about a month after deaths in ages 40-59: [czech.html#Daily_deaths_and_vaccine_doses_by_age_group]
Age-stratified data presents a fatal weakness to Rancourt's approach of temporally correlating spikes in deaths with vaccine rollouts. In his paper about southern-hemisphere and equatorial countries, he included the plots for Peru that are shown in the GIF file below, and he argued that the spike of deaths in early 2021 was caused by the vaccines because the spike roughly coincided with the rollout of the first two doses in the oldest age groups. [https://correlation-canada.org/covid-19-vaccine-associated-mortality-in-the-southern-hemisphere/] However the spike in deaths also occurred around the same time in younger age groups even though younger age groups got vaccinated much later than older age groups:
In Rancourt's recent paper I believe he referred to the Czech record-level data in the following paragraphs, where he now seems to have admitted that the excess deaths that coincided with the booster rollout could not be attributed to people who had recently received a booster dose:
Recently, Rancourt et al. (in preparation) analysed national mortality data in one country in which COVID-19 vaccination status was known at death, including the history of COVID-19 vaccinations, in a case in which the country exhibited rapid vaccine rollouts strongly temporally associated with observed surges in excess all-cause mortality. They found that relevant peaks in excess all-cause mortality associated with booster rollouts could not preferentially be assigned to booster-vaccinated individuals (and also that the vaccine had no detectable survival benefit).
This means that the COVID-19 vaccination primary cause described in Section 3.3.5 did not produce a measurable increase in excess all-cause mortality in this country, which in turn means that sharp peaks in excess all-cause mortality which are temporally associated with rapid vaccine rollouts need not imply that COVID-19 vaccination is a primary cause of death. Rather, it seems that (as pervasive as they are) such temporal associations between mortality peaks and rapid vaccine rollouts are due to the primary cause described in Section 3.3.6 of campaigns and measures associated in time and place with COVID-19 vaccine rollouts. Although non-conclusive in general, this is consistent with the fact that the vaccine toxicity causing death inferred from populationwide adverse-effect monitoring is usually too small to be detected directly in populationwide (e.g., national) cause-independent all-cause mortality, as per analyses of USA VAERS (Vaccine Adverse Events Reporting System) data (Hickey and Rancourt, 2022).
This would mean that the lethality of medical measures imposed during the Covid period and during vaccine rollouts is much greater than generally acknowledged, and much greater than the known (VAERS, autopsies, etc.) vaccine toxicity itself.
Rancourt now has to perform circus-level acrobatics to reconcile his earlier claim of 17 million vaccine deaths with his new claim that there were not necessarily that many deaths associated directly with vaccination, so he now suggests that the deaths were rather caused indirectly by measures associated with vaccination or by stress induced by vaccination, like the items I highlighted in yellow here: [https://denisrancourt.substack.com/p/did-the-c19-vaccine-kill-17-million]
However his new theory doesn't seem to explain why the excess deaths were concentrated in waves that coincided with COVID waves, and why the waves were higher in unvaccinated than vaccinated people even after adjusting for HVE. Why did stress induced by vaccination kill unvaccinated people?
Kirsch wrote:
The undeniable rise in turbo cancers causing people to die of cancer even though the vaccine is the underlying cause. Highly respected oncologist Dr. Angus Dalgleish noticed the dramatic increases in cancer in his own patients after the COVID vaccine rollout and he's been very public about the COVID vaccines being the cause.
He told me: "My confidence is very high from my own experience alone that the COVID vaccines are causing turbo cancers. I saw 6 people in one clinic. All had turbo cancers wanting a second opinion. None of their GPs, surgeons, or oncologists had asked about their vaccine history. I did and they had all had covid boosters within 3-9 weeks of symptoms/diagnosis. My colleague surgeon James Royle has given a great video at the stone meeting in Ireland. He is being swamped by them as are my colleagues in Australia."
Professor Dalgleish has been doing this for more than 40 years. He went from seeing 2 cases in 40 years to as many as 6/day after the COVID shots rolled out which is a maximum rate increase of 43,800x. From a Poisson perspective, he expected to see 2/(40*365) events in a day and saw 6. The chance of that happening is 9.2e-27. What intervention could cause turbo cancer in so many people? The only thing we know they all had in common is recent COVID vaccination.
The evidence for turbo cancer seems to be largely anecdotal, but turbo cancer is nowhere to be seen in actual cancer statistics.
Mathew Crawford used to be the main person was helping out Kirsch with statistical analysis along with Jessica Rose. But he had a falling out with Kirsch because Kirsch was promoting dubious information like the Died Suddenly film. A year ago Crawford tweeted: "And disinformation is an even larger issue. When I collapsed and stopped spending 80+ hours a week doing analysis last year, I was pissed off and angry that half the work I was doing was fixing the nonsense of people like Kirsch. Cleaning the lines is a priority." [https://x.com/EduEngineer/status/1751137767935881329] He shares my sentiment on how Kirsch is likely controlled opposition who is intentionally producing disinformation. Crawford is now also working on an article about how the turbo cancer narrative might be some kind of a psyop, which is another view I share with him: [https://x.com/EduEngineer/status/1867029472660074701]
After USMortality showed how cancer ASMR had been going down in the United States since 2024, he got a similar treatment from his fellow truth seekers as Crawford did when he busted disinformation about the DMED military data: [https://x.com/EduEngineer/status/1859385389246550191]
In December 2024 Jessica Rose tweeted "We are seeing a shit-ton of cancers since 2021", but USMortality showed her that cancer ASMR had been going down since 2020 in the United States: [https://x.com/USMortality/status/1866040763722657860]
Then as evidence that there had been an increase in cancer mortality, Jessica Rose cited a paper by Ed Dowd about cancer deaths in ages 75-84:
But I replied to her by posting the image below and I told her to read my website where I have debunked Dowd's paper: dowd.html#Paper_about_cancer_deaths_in_ages_75_to_84_at_CDC_WONDER. In Dowd's paper the reason why cancer CMR increased between 2020 and 2021 was because CDC WONDER used population estimates based on the 2010 census for 2020 but population estimates based on the 2020 census for 2021, but the population size of ages 75-84 was revised downwards by about 4% in the 2020-based population estimates. And the reason why the cancer CMR increased between 2021 and 2022 was because Dowd's team retrieved the data from CDC WONDER in 2023 when it still used 2021 population sizes for 2022, because the Census Bureau published the population estimates for 2022 in June 2022 but they were only added to CDC WONDER around January 2024. However the population size of ages 75-84 increased a lot between 2021 and 2022 because the baby boomers started turning 75 around mid-2021:
Later I asked Jessica Rose again a few times if she could now cite another source to back up her claim that there was a "shit-ton of cancers since 2021", and I asked her if she saw my critique of Dowd's paper and if she still thought Dowd's paper showed there was an increase in cancer mortality. But she didn't reply to me, until she just blocked me and said "you're trying to waste my time. and i bid you good day. 👀". [https://x.com/JesslovesMJK/status/1874775113188655526] But if there was an actual epidemic of turbo cancer, then couldn't she have cited a single paper which showed there was an increase in cancer? Either incidence or mortality would have done. And in order to save time she could've even sent me just a URL with no comment needed.
I have also asked Dowd to either issue a correction to his paper or to retract his paper, but he has never responded to me.
Dowd's group also published a paper about cancer mortality in England and Wales in ages 15-44. They found a massive increase in cancer deaths in 2022, but it was because they used an incorrect method to add in deaths they thought were missing because of a registration delay, because they assumed that cancer deaths had the same proportion of missing deaths as the overall proportion of missing deaths for all causes. But in reality cancer deaths have a much shorter registration delay than deaths from external causes, and a large part of all deaths in ages 15-44 are from external causes: [https://x.com/UncleJo46902375/status/1783797036749402598]
I haven't found any country that would've have a clear increase above the pre-COVID trend in either cancer mortality or cancer incidence since 2021.
Cancer ASMR has also been going down in England: [https://x.com/UncleJo46902375/status/1844420592453427663]
In Sweden the age-standardized cancer incidence roughly fell on the pre-COVID trend in 2021 and 2022 but it was below the trend in 2020 and 2023: [https://sdb.socialstyrelsen.se/if_can/val_eng.aspx]
library(data.table);library(ggplot2) cul=\(x,y)y[cut(x,c(y,Inf),,T,F)] agecut=\(x,y)cut(x,c(y,Inf),paste0(y,c(paste0("-",y[-1]-1),"+")),T,F) t=fread("http://sars2.net/f/swedencancercases.csv") t=t[age!="Total",.(cases=sum(cases)),.(year,age=as.integer(age))] t=t[year%in%2010:2023] pop=fread("http://sars2.net/f/swedenpopdead.csv")[,dead:=NULL] pop=pop[,.(pop=sum(pop)),.(year,age=cul(age,unique(t$age)))] t=merge(pop[year==2020,.(age,std=pop/sum(pop))],merge(t,pop)) ages=0:10*10 ages=c(0,30,50,70,85) p=t[,.(y=sum(cases/pop*std*1e5)),.(x=year,group=agecut(age,ages))] p=rbind(p,t[,.(y=sum(cases/pop*std*1e5),group="Total"),.(x=year)]) years=2010:2023 base=p[x%in%2010:2019,.(x=years,y=predict(lm(y~x),.(x=years))),.(group)] p$z="Age-standardized new cases" p=rbind(p,base[x<=2019][,z:="2010-2019 linear trend"]) p=rbind(p,base[x>=2019][,z:="Trend projection"]) p[,z:=factor(z,unique(z))] xstart=2010;xend=2023 expand=p[,.(min=min(y),max=max(y)),group] rat=expand[,max(max/min)]*1.02 expand=expand[,{x=(rat*min-max)/(1+rat);.(y=c(min-x,max+x),group)}] ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_line(aes(linetype=z,color=z),linewidth=.6)+ geom_point(aes(alpha=z),stroke=0,size=1.2)+ geom_text(data=rbind(expand,p[,.(y,group)])[,max(y),group],aes(y=V1,label=group,x=pmean(xstart,xend)),fontface=2,size=3.5,vjust=1.8)+ geom_point(data=expand,x=xstart,alpha=0)+ labs(title="Age-standardized yearly new cancer cases in Sweden per 100,000 people",subtitle=paste0("Source: sdb.socialstyrelsen.se/if_can/val_eng.aspx. Resident population estimates are from statistikdatabasen.scb.se/pxweb/en/ssd/START__BE__BE0101__BE0101A/BefolkningR1860N. The age-standardized rate was calculated by 5-year age groups so that the 2020 resident population estimates were used as the standard population. Each panel has the same ratio between the maximum and minimum value of the y-axis."),x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xstart:xend)+ scale_y_continuous(breaks=\(x)pretty(x,4))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#ff66ff","#ff66ff"))+ scale_alpha_manual(values=c(1,0,0))+ scale_linetype_manual(values=c("solid","solid","11"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(angle=90,vjust=.5,hjust=1), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(24,"pt"), legend.justification="left", legend.margin=margin(,,6), legend.position="top", legend.spacing.x=unit(2,"pt"), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(4,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=7,height=6,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
And cancer ASMR in Sweden has been below the 2010-2019 linear trend each year since 2020: [https://sdb.socialstyrelsen.se/if_dor]
library(data.table);library(ggplot2) agecut=\(x,y)cut(x,c(y,Inf),paste0(y,c(paste0("-",y[-1]-1),"+")),T,F) t=fread("d/cd/swedencancerdead.csv")[age!="Total"] t=t[age!="Total",.(dead=sum(dead)),.(year,age=as.integer(sub("[-+].*","",age)))] t=t[year%in%2010:2023] pop=fread("http://sars2.net/f/swedenpopdead.csv")[,dead:=NULL] pop=pop[,.(pop=sum(pop)),.(year,age=cul(age,unique(t$age)))] t=merge(pop[year==2020,.(age,std=pop/sum(pop))],merge(t,pop)) ages=0:10*10 ages=c(0,30,50,70,85) p=t[,.(y=sum(dead/pop*std*1e5)),.(x=year,group=agecut(age,ages))] p=rbind(p,t[,.(y=sum(dead/pop*std*1e5),group="Total"),.(x=year)]) years=2010:2023 base=p[x%in%2010:2019,.(x=years,y=predict(lm(y~x),.(x=years))),.(group)] p$z="Actual ASMR" p=rbind(p,base[x<=2020][,z:="2010-2019 linear trend"]) p=rbind(p,base[x>=2020][,z:="Trend projection"]) p[,z:=factor(z,unique(z))] xstart=2010;xend=2023 rat=(max(p[,max(y)/min(y),group]$V1)-1)/2 expand=p[,.(mean(range(y))),group][,.(y=c(V1-V1*rat,V1+V1*rat),group)] ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_vline(xintercept=2019.5,color="gray80",linewidth=.4)+ geom_line(aes(linetype=z,color=z),linewidth=.6)+ geom_line(data=p[z==z[1]],aes(linetype=z,color=z),linewidth=.6)+ geom_point(aes(alpha=z),stroke=0,size=1.2)+ geom_text(data=rbind(expand,p[,.(y,group)])[,max(y),group],aes(y=V1,label=group,x=pmean(xstart,xend)),fontface=2,size=3.5,vjust=1.8)+ geom_point(data=expand,x=xstart,alpha=0)+ labs(title="Sweden: ASMR per 100,000 people for underlying cause C00-D48 (neoplasms)",subtitle="Source: sdb.socialstyrelsen.se/if_dor. Resident population estimates are from statistikdatabasen.scb.se/pxweb/en/ssd/START__BE__BE0101__BE0101A/BefolkningR1860N. The age-standardized rate was calculated by 5-year age groups so that the 2020 resident population estimates were used as the standard population. Each panel has the same ratio between the maximum and minimum value of the y-axis.",x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xstart:xend)+ scale_y_continuous(breaks=\(x)pretty(x,4))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#cc7700","#cc7700"))+ scale_alpha_manual(values=c(1,0,0))+ scale_linetype_manual(values=c("solid","solid","11"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(angle=90,vjust=.5,hjust=1), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(25,"pt"), legend.position="top", legend.justification="left", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,6), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(4,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=7,height=6,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
In the next plot of cancer ASMR for the US, the total ASMR for all ages combined gone down each year since 2020, even though the decrease since 2020 seems to have been slightly less steep than the trend before COVID. The age group 0-29 has had a slight increase in cancer ASMR since 2020, but even in 2022 when the ASMR peaked, it was still only around the level of ASMR in 2017:
library(data.table);library(ggplot2) agecut=\(x,y)cut(x,c(y,Inf),paste0(y,c(paste0("-",y[-1]-1),"+")),T,F) t=fread("http://sars2.net/f/wondermalignantyearly.csv")[cause%like%"UCD"] t=t[year%in%2010:2023] t=t[,.(dead=sum(dead)),.(year,age,cause)] pop=fread("http://sars2.net/f/uspopdead.csv")[,dead:=NULL] t=merge(pop[year==2020,.(age,std=pop/sum(pop))],merge(t,pop)) ages=0:10*10 ages=c(0,30,50,70,85) p=t[,.(y=sum(dead/pop*std*1e5)),.(x=year,group=agecut(age,ages))] p=rbind(p,t[,.(y=sum(dead/pop*std*1e5),group="Total"),.(x=year)]) years=sort(c(2010:2023,2019.5)) base=p[x%in%2010:2019,.(x=years,y=predict(lm(y~x),.(x=years))),group] p$z="Actual ASMR" p=rbind(p,base[x<=2019.5][,z:="2010-2019 linear trend"]) p=rbind(p,base[x>=2019.5][,z:="Trend projection"]) p[,z:=factor(z,unique(z))] xstart=2010;xend=2023 expand=p[,.(min=min(y),max=max(y)),group] rat=expand[,max(max/min)] expand=expand[,{x=(rat*min-max)/(1+rat);.(y=c(min-x,max+x),group)}] ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,dir="v",scales="free_y")+ geom_vline(xintercept=c(2014.5,2019.5),color="gray80",linewidth=.4)+ geom_line(aes(linetype=z,color=z),linewidth=.6)+ geom_point(aes(alpha=z),stroke=0,size=1.2)+ geom_line(data=p[z==z[1]],aes(linetype=z,color=z),linewidth=.6)+ geom_text(data=rbind(expand,p[,.(y,group)])[,max(y),group],aes(y=V1,label=group,x=pmean(xstart,xend)),fontface=2,size=3.5,vjust=1.8)+ geom_point(data=expand,x=xstart,alpha=0)+ labs(title="CDC WONDER: ASMR per 100,000 people for UCD malignant neoplasms (C00-C97)",subtitle=paste0("The ASMR was calculated by single year of age so that the 2020 resident population estimates were used as the standard population. The population estimates are from census.gov/programs-surveys/popest/datasets. In order to get rid of a sudden jump at the point when the 2010-based and 2020-based population estimates were merged, the 2010-based estimates were multiplied by a linear slope so that they were equal to the 2020-based estimates in 2020. All panels have the same ratio between the maximum and minimum point of the y-axis.")|>stringr::str_wrap(90),x=NULL,y=NULL)+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xstart:xend)+ scale_y_continuous(breaks=\(x)pretty(x,4))+ coord_cartesian(clip="off",expand=F)+ scale_color_manual(values=c("black","#6666ff","#6666ff"))+ scale_alpha_manual(values=c(1,0,0))+ scale_linetype_manual(values=c("solid","solid","11"))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(angle=90,vjust=.5,hjust=1), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=8), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(25,"pt"), legend.position="top", legend.justification="left", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,6), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing.x=unit(4,"pt"), panel.spacing.y=unit(3,"pt"), plot.margin=margin(7,7,7,7), plot.subtitle=element_text(size=11,margin=margin(,,4)), plot.title=element_text(size=11.5,face=2,margin=margin(4,,6)), strip.background=element_blank(), strip.text=element_blank()) ggsave("1.png",width=7,height=6,dpi=300*4) system("magick 1.png -resize 25% -colors 256 1.png")
The Twitter user Ethical Skeptic has published many fraudulent plots of cancer mortality in the US. In the next plot he got the lowest cancer ASMR in 2021 but after that his ASMR went up three years in a row. However I was not able to reproduce his plot even though I tried many different ways to calculate ASMR, and I always got lower ASMR in 2022 and 2023 than 2021, like what's shown by the red line I overlaid on top of his plot here: [ethical.html#SV40_cancer_wave_plot_for_cancer_ASMR_since_1950s]
Ethical Skeptic is notorious for applying various undocumented adjustments to his plots. In the plot above he may have applied an adjustment he calls "excess MCoD normalization", which means that he initially plots only deaths with the underlying cause cancer, but from some hand-picked point onwards he starts to add in a gradually increasing proportion of MCD cancer deaths to his plot. [ethical.html#Deaths_from_malignant_neoplasms_with_excess_MCD_normalization] He claims he needs to apply the adjustment because there was some kind of a nefarious scheme where cancer deaths which should've been classified as UCD were hidden under MCD. He justifies his adjustment based on this plot which shows that the MCD to UCD ratio for cancer deaths has remained elevated since 2020: [https://theethicalskeptic.com/2025/01/03/the-state-of-things-pandemic/]
The green-to-red line in Chart 5 below shows the CDC Wonder Excess Attributions of underlying cause of death Cancer to multiple cause of death Cancer, per week for the two years prior, as well as years-of and years-post the pandemic. The dotted baseline is normalized from the years 2018-2019, and indexed to the last 7 week average as compared to those same 7 weeks of 2018/19, so it is not a 'regression'. Since this is a relative index, it should exhibit no trend or growth rate (outside the context of Covid mortality peak periods of course). The current excess of 321 deaths reflects cancer deaths which are concealed from the underlying cause of death ICD code, and must be added back into the mix in order to make Excess Cancer Mortality comparable to its past baseline. We reconcile this into Chart 6 below, applying it only after the pandemic period ended.
Chart 5 - Cancer Concealment by Excess MCOD Attribution - stands at 394 concealed cancer deaths per week. In this practice, cancers are moved from the underlying cause of death line in Part I of the death certificate, to one of the multiple cause of death lines above the UCoD line, in excess of past practice. Once Covid has abated, this balance should trend back to zero. It has not. Therefore, in order to capture the true cancer mortality increase, these cancer deaths falsely attributed to Covid and other underlying causes must be added back into the total in the Excess Cancer Mortality chart below. These missing deaths are phased back in from Week 10 of 2022 (point of large decline in Covid mortality) onward.
However the x-axis in his plot above starts from 2018, so you can't see that the MCD to UCD cancer ratio had been already increasing since around 2015, and extra MCD deaths above the trend since 2020 are explained by deaths with MCD COVID:
After I asked Ethical Skeptic to extend the x-axis of his plot further to the past, he posted this plot where he generated fake data for 2017 based on the data for 2018:
After I busted him of posting the fake data, he added a note to his plot which said: "Note: Because Wonder does not offer 2017 weekly data, 2017 data reflects the correct total for the year but is a week-by-week apportionment by combined 2018/19 arrival forms". I don't understand what it means. But from my magenta crosses here which show the real monthly MCD to UCD ratio, you can see that his ratio in 2017 is too high, and the magenta crosses show that there was an increasing trend in the MCD to UCD ratio in 2017-2019:
The increasing trend in the MCD to UCD ratio might be due to an increase in the survival rate from cancer, because there are now more people who survive with cancer up to the point when they die from some other cause. In the United States cancer ASMR has been decreasing faster than the age-standardized incidence of cancer: [https://acsjournals.onlinelibrary.wiley.com/doi/full/10.3322/caac.21820]
Ethical Skeptic has posted many plots like this where there appears to be an impressive increase in cancer mortality since 2021: [https://x.com/EthicalSkeptic/status/1869942081684197426]
However almost all of his excess deaths are explained by either excess MCD normalization where he shifts the baseline upwards, or by PFE adjustment where he shifts the baseline downwards. So if you look at my green lines here where I didn't apply either adjustment then almost all of the excess deaths disappear:
I have shown here why both of his adjustments are likely too heavy: ethical.html#Deaths_from_malignant_neoplasms_with_excess_MCD_normalization, ethical2.html#Should_the_PFE_adjustment_last_for_only_6_6_years.
Out of many bad plots by Ethical Skeptic, the next plot is one of the very worst. It is supposed to show that there has been a massive increase in cancer incidence in the United States due to COVID vaccines: [https://x.com/EthicalSkeptic/status/1676004521112117255]
However in reality the plot above shows projected estimates of cancer incidence that are only based on real data only up to 2019. For example his number of new cancer cases in 2023 is taken from Table 1 of this report by the American Cancer Society: https://www.cancer.org/research/cancer-facts-statistics/all-cancer-facts-figures/2023-cancer-facts-figures.html. But a footnote to Table 1 said: "Source: Estimated new cases are based on 2005-2019 incidence data reported by the North American Association of Central Cancer Registries (NAACCR)." The report also said: "Importantly, the calculation of these estimates is based on reported cancer incidence and mortality through 2019 and 2020, respectively. Thus, projected cancer cases in 2023 do not account for the impact of the coronavirus disease 2019 (COVID-19) pandemic on cancer diagnoses, and the projected cancer deaths in 2023 only account for the first year."
Kirsch wrote: "Hulscher (2024) looks at highly vaccinated King County. 'We found a 25.7% increase in total cardiopulmonary arrests and a 25.4% increase in cardiopulmonary arrest mortality from 2020 to 2023. Applying our model from these data to the entire United States yielded 49,240 excess fatal cardiopulmonary arrests from 2021-2023' (due to the COVID vaccine)."
I wrote about Hulscher's paper here: statistic2.html#McCullough_Foundation_Paper_about_cardiac_arrests_in_King_County_EMS_data.
Hulscher et al. wrote: "Specifically, the number of cardiopulmonary arrest deaths increased from 891 in 2015 to 1,110 in 2020, representing a 24.6% increase. In 2021, deaths jumped to 1,229 and continued to rise to 1,310 in 2022. The projection for 2023 suggests 1,392 cardiopulmonary arrest deaths in King County, WA, indicating a sharp 25.4% increase since the onset of COVID-19 vaccination campaigns"
However in Hulscher's Table 1 the number of deaths in 2020 was 1121 and not 1110. But 1110 was his baseline value for 2020, so he seems to have accidentally calculated the increase between 2020 and 2023 using the baseline value instead of the number of deaths for 2020:
Hulscher's number of deaths actually increased from 1121 in 2020 to 1392 in 2023, so it was an increase of about about 24.2% and not 24.6%. But his baseline also increased by about 12% from 1110 in 2020 to 1245 in 2023. So the excess deaths only increased by about 10.8 percentage points (from (1392/1245)-(1121/1110)
).
However his figure for 2023 wasn't even the real number of deaths but a linear projection of the deaths in 2021 and 2022. The real number of deaths in 2023 was published in September 2024 and it was 1358, so the excess deaths between 2020 and 2023 increased by only about 8.1 percentage points relative to Hulscher's baseline (from (1358/1245)-(1121/1110)
.
McCullough's Substack article about the paper was titled "Peer-Reviewed Study Reveals 1,236% Surge in Excess Cardiac Arrest Deaths Among 2 Million COVID-19 Vaccinated Individuals". But the paper didn't include information about the vaccination status of the people who died, and it might be that unvaccinated people were overrepresented among the people who died in excess since many of the excess deaths seem to have been due to COVID. And the 1236% increase was actually an increase from about 1.0% excess deaths in 2020 to about 11.6% excess deaths in 2023, so it was only an increase of about 10.6 percentage points. McCullough's people seem to have intentionally chosen a misleading headline, because they probably knew their followers would misinterpret the headline figure of a 1236% increase:
The plot above also shows that Hulscher's 2015-2019 linear baseline might have been too low in 2023, because the long-term trend in deaths seemed to be curved upwards.
Hulscher's paper only included data going back to 2015 even though the source where he took the deaths extended back to 2005. He might have omitted earlier years because there was a big drop in the number of deaths between 2014 and 2015, or because it would've showed that the long-term trend in deaths was curved upwards so the 2015-2019 linear baseline was not necessarily accurate.
Hulscher used data published by King County emergency medical services that showed the number of cardiac arrests the EMS responded to which led to a death. So it includes deaths due to COVID, and it's similar to data for cardiac arrest as a multiple cause of death where deaths due to COVID are not excluded. But based on CDC WONDER's data for King County, deaths with MCD COVID explain a large part of excess MCD cardiac deaths since 2020, and there's only a low number of excess UCD cardiac deaths since 2020:
Washington State had a low number of COVID deaths in 2020 relative to 2021 and 2022, so Hulscher's approach of using the year 2020 as the baseline before vaccination but after COVID is not necessarily accurate:
Kirsch wrote:
Aarstad (2023) found a highly statistically significant POSITIVE association between vax uptake in 2021 and increased mortality in 2022 in the 31 EU countries where data was available. In short, more vaccines → more deaths.
They accounted for lag in deaths (COVID deaths occur days after COVID infection) and potential confounders.
The study found that:
i. A one percentage point increase in 2021 vaccination uptake was associated with a 0.105% monthly increase in 2022 all-cause mortality (95% Cl: 0.075 - 0.134).
ii. This association was statistically significant and remained robust even after controlling for alternative explanations, such as prior mortality trends (2020 - 2021 average relative to pre-pandemic years), life expectancy, and potential multicollinearity issuesThat's a huge negative impact. What was the error and what are the correct numbers? Where is the study, using exactly the same data, showing the correlation is negative?
Similar analyses have also been done by Peter Hegarty, Raphael Lataster, and Guyla Nagy: statistic2.html#Excess_mortality_in_European_countries_compared_to_percentage_of_vaccinated_people. But like Aarstad they all took excess deaths from Eurostat which uses the average number of deaths in 2016-2019 as the baseline (even though Hegarty also performed an alternate analysis using OWID's 2015-2019 linear baseline which is less inaccurate).
Eurostat's baseline exaggerates excess deaths in Western European countries relative to Eastern European countries in 2022, because Western European countries had a steeper increase in the yearly number of deaths before COVID, and because Eastern European countries had a greater reduction to population size due to excess deaths in 2020-2021.
In the next plot I calculated the green baseline by first doing a linear regression for CMR in 2010-2019 for each age, and then I multiplied a projection of the regression by the yearly population size for each age to get the expected deaths for each age. So my green baseline accounts for the aging population which produces an upwards curve in the expected deaths per year in many countries, and it also accounts for the reduction in population size due to excess deaths since 2020. But from the last two panels of my plot which show the average values for Western European and Eastern European countries, you can see that the green baseline is above the 2016-2019 average in Western European countries but below the 2016-2019 average in Eastern European countries:
Another way to account for the changing age composition and reduction in population size due to excess deaths is simply to calculate excess ASMR. In the next plot the x-axis shows excess ASMR in 2022 relative to a linear trend in 2013-2019 which is more accurate, and the y-axis shows excess raw deaths relative to Eurostat's 2016-2019 baseline which is less accurate, so you can see how Eurostat's baseline overestimates excess deaths in Western European countries relative to Eastern European countries:
So when I calculated excess mortality using the 2013-2019 linear trend in ASMR instead, I got negative correlation between excess mortality in 2022 and the percentage of vaccinated people in 2022:
Here when I used the same method to calculate excess ASMR, the correlation in 2023 was also close to zero:
Jean Fisch is one of the top gurus on European COVID statistics on Twitter. He wrote that Eurostat's 2016-2019 baseline was a "completely unfit excess mortality method" and that it "wildly overstates excess". [https://x.com/Jean%5f%5fFisch/status/1870815752242287078] And he posted this plot for comparison, where the dark blue balls are similar to my green baseline but the pink balls show Eurostat's baseline:
Kirsch wrote: "Right after corporate America started requiring COVID vaccinations, the CEO of the OneAmerica insurance company publicly disclosed that during the third and fourth quarters of 2021, death in people of working age (18-64) was 40 percent higher than it was before the pandemic. Significantly, the majority of the deaths were not attributed to COVID."
However the article he linked just said: "Most of the claims for deaths being filed are not classified as COVID-19 deaths, Davison said." [https://www.thecentersquare.com/indiana/indiana-life-insurance-ceo-says-deaths-are-up-40-among-people-ages-18-64/article_71473b12-6b1e-11ec-8641-5b2c06725e2c.html] So it said most deaths in general and not most excess deaths, which does not exclude the possibility that most of the 40% excess deaths would've been due to COVID.
On CDC WONDER during the second half of each year, ages 18-64 have about 41% more deaths in 2022 than 2021, so it's in fact very close to the figure of 40%:
> pop=fread("http://sars2.net/f/uspopdeadmonthly.csv") > pop[year>=2018&year<2024&month>=7&age%in%18:64,.(dead=sum(dead)),year]|>print(r=F) year dead 2018 348577 2019 351102 2020 437852 2021 495284 2022 395982 2023 368472
In July to December of 2021, ages 18-64 had 87,677 deaths with UCD COVID and 97,630 deaths with MCD COVID. So deaths with UCD COVID account for about 61% of the difference between 2021 and 2019 (from 87677/(495284-351102)
): [stat.html#Download_fixed_width_and_CSV_files_for_the_NVSS_data_used_at_CDC_WONDER]
> v=fread("curl -Ls sars2.net/f/vital.csv.xz|xz -dc") > v[month>=7&age%in%18:64][cause=="U071",.(ucd=sum(ucd),mcd=sum(mcd)),year] year ucd mcd 1: 2020 188108 50124 2: 2021 366851 97630 3: 2022 29630 10500
The number of deaths with UCD related to recreational drug use also increased from 34,240 in the second half of 2019 to 49,196 in the second half of 2021, so it accounts for about 10% of the increase in total deaths between 2019 and 2021:
> v[month>=7&age%in%18:64][cause%like%"X4[0-4]|X6[0-4]|Y1[0-4]",.(ucd=sum(ucd),mcd=sum(mcd)),year][year>2018] year ucd mcd 1: 2019 173405 36643 2: 2020 218918 45790 3: 2021 249916 52141 4: 2022 254351 53202
On CDC WONDER if you calculate a ratio of deaths with UCD COVID in 2021 divided by 2020, it's about 2.02 in ages 18-64 but about 1.05 in ages 65 and above:
> v[cause=="U071"&age%in%18:64,.(ucd=sum(ucd)),year] year ucd 1: 2020 280867 2: 2021 568342 3: 2022 181644 > v[cause=="U071"&age>=65,.(ucd=sum(ucd)),year] year ucd 1: 2020 1156756 2: 2021 1210465 3: 2022 656996
So why did working-age people have such a high percentage of COVID deaths in 2021 relative to 2020? I think it's because in 2021 working-age people were less likely to be vaccinated than elderly people.
In the winter of 2020-2021 the Czech Republic had a pattern of mortality with three distinct humps, where in ages 80+ the first hump was the highest and the third hump was the lowest, but ages 40-59 followed an opposite pattern. I think it's because by the time of the third hump, the percentage of vaccinated people was over 50% in ages 80+ but less than 10% in ages 40-59: [czech.html#Daily_deaths_and_vaccine_doses_by_age_group]
From the next plot for age-standardized hospitalization rate in the Czech Republic, you can see that working age people had a high hospitalization rate in 2021 relative to 2020 compared to elderly people, but it's explained by a lower percentage of vaccinated people among working-age people: [czech3.html#Hospitalizations_by_age_group_and_vaccination_status]
If you are going to blame vaccines for the excess deaths in working-age people in the second half of 2021, another problem is that there were low excess deaths in northeastern states which had a high percentage of vaccinated people, but there were high excess deaths in southern states which had a low percentage of vaccinated people. [statistic.html#Fabian_Spieker_US_summer_of_deaths_in_2021]. A large part of the deaths also occurred during the Delta wave in August to September 2021, even though there weren't that many new people getting vaccinated at the time. And in some northeastern states like Connecticut where the PCR positivity rate remained low in August to September of 2021, there were also low excess deaths. If the wave of excess deaths was due to vaccines then why did occur in some states but not others even though all states got vaccinated?
Among the vaccinated people who are included in Kirsch's "Medicare all states subset" spreadsheet, there was also very little increase in deaths in August to September of 2021 relative to the general population of the US which also includes unvaccinated people, so the bump in deaths during the Delta wave is almost flat. Your old Medicare spreadsheet also shows that among people in southeastern states who got vaccinated in the second half of 2021, the number of deaths was not clearly elevated during the first few months from vaccination. All of this is explained in more detail in my previous link.
The number of additional working-age people who got vaccinated in the third quarter of 2021 after the mandates is also fairly low compared to the number of people who got vaccinated in the first half of 2021: [statistic.html#Pierre_Kory_Excess_deaths_in_young_age_groups_in_the_fall_of_2021]
So if the mandates caused a massive wave of deaths then why weren't people also dropping like flies around March to May 2021 when a larger number of people got vaccinated? The plot above also shows that the spike in deaths in the third quarter of 2021 can mostly be attributed to deaths where the underlying cause was listed as COVID. And the plot above shows that part of the excess deaths in 2021 relative to 2019 can be explained by deaths from drug overdoses.
Kirsch wrote:
The US cumulative excess mortality is consistent with Aarstad (2023) showing the same effect is happening in the US. With the mass introduction of vaccines in the US in 2021, we should have expected the Cumulative crude excess mortality to have reversed course, but it just kept getting worse and worse. This is a stunning chart because after such a huge mortality increase in 2020, we've "pulled forward" the deaths of the weakest so excess death rates should turn into deficit death rates and the cumulative excess mortality bars should have gone down in 2021, down further in 2022, etc. Instead, things went the wrong direction. If the vaccine was drastically reducing deaths, then how do we explain this? There is a mysterious force driving up excess deaths and it's MUCH stronger than the vaccine. What is it?
Krisch compared total ASMR in 2021 against total ASMR in 2020, but 2020 also includes the months before COVID which reduces the total ASMR for 2020. And a lot of the excess deaths in 2021 were in January when there weren't yet that many people vaccinated.
But anyway I think Ethical Skeptic exaggerates the magnitude of the PFE: ethical2.html#Should_the_PFE_adjustment_last_for_only_6_6_years. He applies the PFE adjustment to the baseline for only 6.6 years, because he calculated that at some point the average age of people who died from COVID in Florida was 82 years, and he got a life expectancy of 6.6 years for age 82 for males from a calculator at seniorliving.com. However the life expectancy for females of age 82 was about 8.2 years on the same website, so I don't know why he didn't even take the average life expectancy for both males and females. And in the 2019 US life table the life expectancy at age 82 was about 8.2 years for both sexes combined. And at CDC WONDER the average age of UCD COVID deaths was about 73.8 in Florida and about 73.9 in the whole US, so both are about 8 years lower than Ethical Skeptic's figure of 82 years.
When I took the life expectancies for each age from the 2019 US life table and I calculated their average weighted by the number of UCD COVID deaths for each age at CDC WONDER, the resulting life expectancy was about 14.5 years. And if we assume that 14.5 years was the average life expectancy of people who died from COVID, then even 14.5 years later there would still be many people who would be alive if they hadn't died of COVID. So the duration of the PFE adjustment should probably be much longer than 6.6 years, which would also cause the average magnitude of the PFE adjustment to be much lower because the adjustment would be spread out over a longer period.
I did a simulation with two scenarios, where in both scenarios the population size for each age started out as one tenth of the mid-2018 US resident population estimates. I otherwise used a 2011-2019 linear trend in CMR for each age in both scenarios, except in the other scenario I multiplied the mortality rates in 2020-2021 to match the actual pattern of excess deaths in the United States. But in the scenario with elevated mortality in 2020-2021 I got only about 1.5% less deaths in 2022-2024. (All of this is described under my previous link.)
USMortality also did similar simulations and he got a much lower reduction in deaths than in Ethical Skeptic's plots: [https://x.com/USMortality/status/1861469855607652804]
USMortality agrees with me that Ethical Skeptic's PFE adjustment is too heavy, and he said "I'd like to see actual proof that PFE actually exists" but so far I believe he has not found good evidence for the kind of heavy PFE hypothesized by Ethical Skeptic. [https://x.com/USMortality/status/1857130356052488394]
If you look at data for real deaths in Bergamo, there was also no clear reduction in deaths in the summer of 2020 apart from the very oldest age groups: [https://x.com/ULorre/status/1861170944204534073]
Similary I only got a clear reduction in deaths below the baseline in Bergamo in ages 90+ but not in ages 80-89: [nopandemic2.html#Should_NYC_and_Bergamo_have_reduced_deaths_due_to_a_pull_forward_effect]
If you plot ASMR then it accounts for the reduction in population size due to excess deaths in a more straightforward and objective way than Ethical Skeptic's PFE adjustment. But Ethical Skeptic thinks ASMR is some kind of black magic and he usually plots raw deaths without even adjusting for population size, and he seems to have made up the shape of his PFE adjustment curve based on some arbitrary subjective criteria. I have been telling him to calculate expected deaths using a method where first you calculate the prepandemic trend in CMR for each age and then you multiply the population size of each age by the projection of the trend. It allows plotting raw deaths on the y-axis while still adjusting for the reduction in population size due to excess deaths and for changes to the age composition of the population, and it doesn't require you to pick any subjective magic numbers for the magnitude or duration for the PFE adjustment. But so far I have never seen him use that method either. But neither method nor ASMR produces nearly as heavy reduction in the expected deaths as his PFE adjustment.
Kirsch wrote: "In 2023, the mainstream news in 98.5% vaccinated Australia reported that 'A troubling new study released this week has shown Australia is experiencing its highest excess mortality rates in over 80 years.'" And he linked to this article: https://www.news.com.au/lifestyle/health/health-problems/report-shows-australias-excess-mortality-rate-has-risen-to-levels-not-seen-since-world-war-ii/news-story/2f86a5483b9ae8363fc80082ae95ba3d.
The article was about excess deaths in 2022 and not 2023, and it said that Australia had about 20,000 excess deaths in 2022. At first I thought they might have exaggerated excess deaths if they used a prepandemic average baseline like the Australian Bureau of Statistics, but at Mortality Watch a 2010-2019 linear baseline also gave me 19,135 excess deaths in 2022: [https://www.mortality.watch/explorer/?c=AUS&t=deaths&e=1&bf=2010&p=0]
However the percentage of excess deaths in 2022 was only about 11%, and as a whole Australia has had low excess mortality since 2020 compared to countries that were not able to keep the virus out with lockdowns until the population was vaccinated.
And if the excess deaths were caused by the vaccines, then why wasn't there already high excess mortality in 2021?
Most regions of Australia had negative seasonality-adjusted mortality around the time in 2021 when people got the primary course doses. But there was a sudden spike up in excess deaths around January 2022 which coincided with a similarly sharp spike in PCR positivity rate, except in Western Australia where the PCR positivity remained close to 0% in January 2022, there was also no clear increase in excess deaths in January 2022:
Kirsch also wrote: "An excess deaths inquiry was held to investigate Australia's excess of nearly 30,000 deaths throughout 2021-2023." However in my screenshot from Mortality Watch above where I used a 2010-2019 linear baseline, the number of excess deaths in Australia is 2,223 in 2021, 19,135 in 2022, and 7,846 in 2023, so almost none of the excess deaths were in 2021. And the total excess mortality in 2021-2023 was only about 5.7%.
Kirsch wrote: "Neil and Fenton (2022) showed that the ONLY viable explanation for these mortality increases was the COVID vaccine. No one has been able to show a mistake in their analysis."
This plot from their Substack post showed that there was a positive correlation between vaccination rate and excess deaths in 2022:
In the Substack post Fenton and Neil got data for various variables from OWID, but they didn't mention if they also got data for excess deaths from OWID or from some other source. At first I thought the excess deaths in their plot were based on the average value of the excess_mortality
column in the file owid-covid-data.csv
, but it did not match their plot. However then I noticed that at the start of the post Fenton and Neil wrote that their impetus for writing the post was to reproduce analysis done by Igor Chudov. And Chudov took data for excess deaths from STMF, and he calculated excess deaths relative to the average number of deaths during the same week number in 2017-2019. [https://www.igor-chudov.com/p/proven-relationship-covid-boosters]
So I believe Fenton and Neil used a method like this to calculate the percentage of excess deaths for each country in 2022:
> s=fread("https://mortality.org/File/GetDocument/Public/STMF/Outputs/stmf.csv")[Sex=="b"] > s=merge(s,s[Year%in%2017:2019,.(base=mean(DTotal)),.(Week,CountryCode)]) > s[Year==2022&Week<=44&Sex=="b",.(excesspct=(sum(DTotal)/sum(base)-1)*100),CountryCode][1:3] CountryCode excesspct 1: AUS 17.2 2: AUT 9.9 3: BEL 4.8
However most countries included in Fenton's plot were European, but a prepandemic average baseline exaggerates excess deaths in Western European countries relative to Eastern European countries, because before COVID Western European countries had a more steep increase in the yearly number of deaths on average, and in 2020-2021 the population size was reduced more by excess deaths in Eastern European countries on average.
In the next plot the green baseline addresses both shortcomings of a prepandemic average baseline. From the last two panels, you can see how in 2022 the prepandemic average baseline is too low compared to the green baseline in Western European countries but too high in Eastern European countries: [statistic2.html#Excess_mortality_in_European_countries_compared_to_percentage_of_vaccinated_people]
In the middle panel of the next plot I calculated excess deaths relative to a 2015-2019 linear baseline for raw deaths, which accounts for the different slopes in deaths between countries before COVID, but it does not account for the reduction in population size due to excess deaths since 2020. But in the bottom panel I looked at excess ASMR which also accounts for the reduction in population size. In the top panel where I used a method similar to Fenton and Chudov to calculate excess deaths, I got a correlation of about 0.45, but the correlation dropped to about 0.11 in the middle panel which is likely more accurate and to about 0.32 in the bottom panel which is likely the most accurate:
library(data.table);library(ggplot2) download.file("https://covid.ourworldindata.org/data/owid-covid-data.csv","owid-covid-data.csv") download.file("https://s3.mortality.watch/data/mortality/world_yearly.csv","world_yearly.csv") download.file("https://mortality.org/File/GetDocument/Public/STMF/Outputs/stmf.csv","stmf.csv") owid=fread("owid-covid-data.csv") mort=fread("world_yearly.csv") stmf=fread("stmf.csv")[Sex=="b"] ave=merge(stmf,stmf[Year%in%2017:2019,.(base=mean(DTotal)),.(Week,CountryCode)]) ave=ave[Year==2022,.(ave=(sum(DTotal)/sum(base)-1)*100),.(iso=CountryCode)] d=owid[!is.na(people_fully_vaccinated_per_hundred)&year(date)==2022,.(vax=max(people_fully_vaccinated_per_hundred),owid=mean(excess_mortality,na.rm=T)),.(continent,location,iso=iso_code)] d=merge(d,na.omit(mort[date==2022,.(iso=iso3c,asmr=(asmr_esp/asmr_esp_baseline-1)*100)]),all=T) d=merge(d,ave,all=T) lab=c("Excess raw deaths at STMF with 2017-2019 average baseline (like Fenton)","Excess raw deaths at OWID with 2015-2019 linear baseline","Excess ASMR at Mortality Watch") p=na.omit(d[,.(x=vax,y=c(ave,owid,asmr),iso,continent,z=factor(rep(lab,each=.N),lab))]) p=p[!(iso=="BOL"&z%like%"OWID")] # Bolivia had 115.7% average monthly excess deaths at OWID because only one month was available p=p[iso%in%p[,.N,iso][N==3,iso]] levels(p$z)=p[,cor(x,y),z][,sprintf("%s (r ≈ %.02f)",z,V1)] xbreak=p[,pretty(x)];ybreak=p[,pretty(y)];ylim=extendrange(p$y);xstart=xbreak[1];xend=max(p$x)*1.01 conti=owid[,.(name=setdiff(sort(unique(continent)),""))] conti$color=c("#444444","#ff5555","#4444ff","#00bb00","#bb22bb","#bbbb22") conti=conti[name%in%p$continent] ggplot(p,aes(x,y))+ facet_wrap(~z,dir="v",scales="free_x")+ coord_cartesian(clip="off",expand=F)+ geom_smooth(method="lm",formula=y~x,linewidth=.5,se=F,color="black",linetype="42")+ geom_point(aes(color=continent),size=.6)+ ggrepel::geom_text_repel(aes(label=iso,color=continent),size=3,max.overlaps=Inf,segment.size=.3,min.segment.length=.2,box.padding=.07,show.legend=F)+ labs(title=sprintf("Excess deaths in 2022 vs percentage of vaccinated people",p[,cor(x,y)] ),x="People fully vaccinated (last available value in 2022)",y="Excess deaths in 2022")+ scale_x_continuous(limits=c(xstart,xend),breaks=xbreak,labels=\(x)paste0(x,"%"))+ scale_y_continuous(limits=ylim,breaks=ybreak,labels=\(x)paste0(x,"%"))+ scale_color_manual(labels=conti$name,values=conti$color)+ guides(color=guide_legend(nrow=1,byrow=F))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(3)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=11,face=2), axis.title.x=element_text(margin=margin(3)), axis.title.y=element_text(margin=margin(,2)), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.justification="right", legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(13,"pt"), legend.position="top", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,4), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.grid.major=element_blank(), panel.spacing=unit(4,"pt"), plot.margin=margin(5,18,5,5), plot.subtitle=element_text(size=11), plot.title=element_text(size=12,face=2,margin=margin(1,,4),hjust=0), strip.background=element_blank(), strip.text=element_text(hjust=0,size=11,margin=margin(,,3))) ggsave("1.png",width=7,height=,dpi=300*4) system("mogrify 1.png -trim -resize 25% -bordercolor white -border 30 -colors 256 1.png")
In the previous plot I took the excess ASMR percentages from this file: https://s3.mortality.watch/data/mortality/world_yearly.csv. The baseline for ASMR in the file is a linear regression in the range of 2010-2019 to 2015-2019 where the duration of the fitting period is selected so that the error between the baseline and actual ASMR is minimized. [https://www.mortality.watch/about] In the middle panel I took the average value of the excess_mortality
column for each country at OWID during months in 2022 or weeks that ended in 2022.
In the previous plot I only included countries that had excess mortality data available using all three methods in my plot. But when I included all available countries for each panel instead, the correlation dropped to 0.09 in the middle panel and -0.06 in the bottom panel:
In the STMF dataset that was used by Chudov and Fenton, there's columns for only deaths and crude mortality rate but not population size, so in the next plot I tried using a new method of calculating age-normalized excess mortality when age-specific mortality rates are available but population size is not. For each country, I first converted the weekly CMR values to yearly values by taking the yearly average CMR of ISO weeks based on the year of the Thursday. Then I divided the CMR for each age in 2022 with the average CMR in 2017-2019, and then I took a weighted average of the resulting ratio where the weight was the number of deaths for each age in 2022:
stmf=fread("https://mortality.org/File/GetDocument/Public/STMF/Outputs/stmf.csv")[Sex=="b"] wei=stmf[,.(iso=CountryCode,Year,Week,dead=unlist(stmf[,5:9],,F),rate=unlist(stmf[,11:15],,F),age=rep(c(0,15,65,75,85),each=.N))] wei=wei[,.(rate=mean(rate),dead=sum(dead)),.(Year,iso,age)] base=wei[Year%in%2017:2019,.(base=mean(rate)),.(age,iso)] merge(base,wei[Year==2022])[,.(excesspct=weighted.mean((rate/base-1)*100,dead)),iso][1:3]
iso excesspct 1: AUS 4.8447 2: AUT 9.3524 3: BEL 0.9138
My new method gave me a correlation of about 0.11 between the percentage of vaccinated people and excess deaths in 2022:
library(data.table);library(ggplot2) owid=fread("owid-covid-data.csv") stmf=fread("stmf.csv")[Sex=="b"] wei=stmf[,.(iso=CountryCode,Year,Week,dead=unlist(stmf[,5:9],,F),rate=unlist(stmf[,11:15],,F),age=rep(c(0,15,65,75,85),each=.N))] wei=wei[,.(rate=mean(rate),dead=sum(dead)),.(Year,iso,age)] base=wei[Year%in%2017:2019,.(base=mean(rate)),.(age,iso)] wei=merge(base,wei[Year==2022])[,.(wei=weighted.mean((rate/base-1)*100,dead)),iso] ave=merge(stmf,stmf[Year%in%2017:2019,.(base=mean(DTotal)),.(Week,CountryCode)]) ave=ave[Year==2022,.(ave=(sum(DTotal)/sum(base)-1)*100),.(iso=CountryCode)] d=owid[!is.na(people_fully_vaccinated_per_hundred)&year(date)==2022,.(vax=max(people_fully_vaccinated_per_hundred)),.(continent,iso=iso_code)] d=merge(d,ave,all=T) d=merge(d,wei,all=T) lab=c("Excess raw deaths at STMF with 2017-2019 average baseline (like Fenton)","Excess age-specific CMR at STMF weighted by total deaths for age") p=na.omit(d[,.(x=vax,y=c(ave,wei),iso,continent,z=factor(rep(lab,each=.N),lab))]) levels(p$z)=p[,cor(x,y),z][,sprintf("%s (r\u00a0≈\u00a0%.02f)",z,V1)] xbreak=p[,pretty(x)];ybreak=p[,pretty(y)];ylim=extendrange(p$y);xstart=xbreak[1];xend=max(p$x)*1.01 conti=owid[,.(name=setdiff(sort(unique(continent)),""))] conti$color=c("#444444","#ff5555","#4444ff","#00bb00","#bb22bb","#bbbb22") conti=conti[name%in%p$continent] ggplot(p,aes(x,y))+ facet_wrap(~z,dir="v",scales="free_x")+ coord_cartesian(clip="off",expand=F)+ geom_smooth(method="lm",formula=y~x,linewidth=.5,se=F,color="black",linetype="42")+ geom_point(aes(color=continent),size=.6)+ ggrepel::geom_text_repel(aes(label=iso,color=continent),size=3,max.overlaps=Inf,segment.size=.3,min.segment.length=.2,box.padding=.07,show.legend=F)+ labs(title=sprintf("Excess deaths in 2022 vs percentage of vaccinated people",p[,cor(x,y)] ),x="People fully vaccinated (last available value in 2022)",y="Excess deaths in 2022")+ scale_x_continuous(limits=c(xstart,xend),breaks=xbreak,labels=\(x)paste0(x,"%"))+ scale_y_continuous(limits=ylim,breaks=ybreak,labels=\(x)paste0(x,"%"))+ scale_color_manual(labels=conti$name,values=conti$color)+ guides(color=guide_legend(nrow=1,byrow=F))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(3)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length=unit(4,"pt"), axis.title=element_text(size=11,face=2), axis.title.x=element_text(margin=margin(3)), axis.title.y=element_text(margin=margin(,2)), legend.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.justification="right", legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(13,"pt"), legend.position="top", legend.spacing.x=unit(2,"pt"), legend.margin=margin(,,4), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.grid.major=element_blank(), panel.spacing=unit(4,"pt"), plot.margin=margin(5,18,5,5), plot.subtitle=element_text(size=11), plot.title=element_text(size=12,face=2,margin=margin(1,,4),hjust=0), strip.background=element_blank(), strip.text=element_text(hjust=0,size=11,margin=margin(,,3))) ggsave("1.png",width=7,height=6,dpi=300*4) system("mogrify 1.png -trim -resize 25% -bordercolor white -border 30 -colors 256 1.png")
However next I realized that I can also use the age-specific mortality rates at STMF to calculate ASMR without having to know the population size of the age groups. When I calculated excess ASMR in 2022 relative to a 2015-2019 linear regression, I got a correlation of about 0.07 with the percentage of fully vaccinated people at OWID:
download.file("https://mortality.org/File/GetDocument/Public/STMF/Outputs/stmf.csv","stmf.csv") download.file("https://covid.ourworldindata.org/data/owid-covid-data.csv","owid-covid-data.csv") stmf=fread("stmf.csv")[Sex=="b"] names(stmf)=tolower(names(stmf)) # population size of STMF age groups in 2013 European Standard Population esp=c(160,645,105,65,25)*100 # multiply age-specific mortality rates by standard population in ESP2013 a=stmf[,.(iso=countrycode,year,week,asmr=unlist(stmf[,11:15],,F)*rep(esp,each=.N))] # exclude countries with data missing during any week in 2015-2022 a=a[iso%in%a[year%in%2015:2022,.N,iso][N==max(N),iso]] # convert weekly ASMR to yearly ASMR by taking yearly average a=a[,.(asmr=sum(asmr)),.(iso,year,week)][,.(asmr=mean(asmr)),.(iso,year)] # actual and projected ASMR in 2022 d=a[year==2022] d$base=a[year%in%2015:2019,predict(lm(asmr~year),.(year=2022)),iso]$V1 # last reported value in 2022 for percentage of fully vaccinated people at OWID owid=fread("owid-covid-data.csv") owid[,vax:=people_fully_vaccinated_per_hundred] vax=owid[!is.na(vax)&year(date)==2022,.(vax=tail(vax,1)),.(iso=iso_code)] # correlation between fully vaccinated percent and excess ASMR in 2022 merge(d,vax)[,cor(asmr/base,vax)] # 0.0689673
Kirsch wrote: "An excess deaths inquiry was held to investigate Australia's excess of nearly 30,000 deaths throughout 2021-2023. The Senate Committee suppressed the majority of submissions. This raises the question: why would the government need to censor public input?"
Both of Kirsch's links went to the same Substack article. The article said: "However, it has come to light that the committee buried the majority of submissions made to the Inquiry, acknowledging only 59 (31.5%) of 187 submissions received on the public Inquiry page."
The website about the inquiry has links to PDFs of the submitted questions, but the links no longer seem to work (or perhaps they are not available to visitors outside of Australia). However there's probably many questions which were duplicates of other questions which might explain why the committee didn't publish answers be all questions, or maybe the report produced by the committee was not long enough to answer all questions.
The report about excess deaths was published by the Australian "Senate Standing Committees on Community Affairs", which has published on average about two similar reports per month. [https://www.aph.gov.au/Parliamentary_Business/Committees/Senate/Community_Affairs/Recent_reports]
The next report after the report about excess deaths was titled "Issues related to menopause and perimenopause". [https://www.aph.gov.au/Parliamentary_Business/Committees/Senate/Community_Affairs/Menopause/Report] The committee received a total of 285 submissions from various organizations and individuals, but the report the committee published was only 151 pages long so it didn't have room to include answers to nearly all of the submissions. So maybe it's the common practice for only a part of all submissions to be answered in these reports.
Kirsch wrote: "Former FDNY fireman O'Brian Pastrana (was injured for life by the COVID vaccine and can no longer work) testified on video that he personally observed a 10X increase in death rate right after the vaccines rolled out. His colleagues won't talk about it for fear of losing their job. He said they saw 1 to 2 deaths a week before the shots rolled out, and it shot up to 3 to 4 a day which is an astonishing 10X increase in death rate after the COVID vaccine rollout."
Kirsch linked to his interview of the fireman. Here's a transcript of the part that mentioned the increase in deaths:
- Kirsch: And so what's interesting is what he was seeing before he was retired - was that, he would, they would - he would see like one death a week.
- Fireman: Yeah, probably on average in a day in a busy area.
- Kirsch: Before the vaccines rolled out?
- Fireman: Before the vaccines rolled out.
- Kirsch: Even through COVID, all of that, one death a week?
- Fireman: That's right.
- Kirsch: And what happened after the jabs were rolled out?
- Fireman: The uptick was - I mean, I'm not a mathematician, but three to four times a day.
- Kirsch: Ok, I'm a mathematician. So that is a 28 times, 28-fold increase. 28 times more deaths in the same amount of time after the vaccines were rolled out.
- Fireman: That's right.
After that Kirsch asked why other firemen weren't speaking out about vaccine deaths if they were also seeing a massive number of deaths, but the fireman answered that they were afraid to lose their job. From the context of the video it was not fully clear if the fireman was seeing the deaths as part of his job or in his personal life, even though Kirsch said that the fireman was seeing the deaths before he was retired, and the fireman said that other firemen were also seeing a lot of deaths, so I guess he was supposed to be seeing the deaths as part of his job. But why would a fireman even see vaccine-related deaths in their work? Wouldn't they be seeing fire-related deaths?
The fireman's LinkedIn profile says that he worked as an EMT until 2013, but from 2013 onwards he gave this description of his job: "To perform a wide variety of administrative and technical tasks and functions in support of fire suppression, fire prevention, hazardous materials, emergency medical and other emergency services; and provide highly responsible prevention activities including crash fire rescue, inspections, and security." [https://www.linkedin.com/in/pastrana-o-brian-43b88897/] It does say he performed administrative and technical tasks relating to emergency medical services, but it's not clear if he still worked as an EMT who provided emergency services on the ground or not, or if he worked as an EMT in 2021. And even if he did work as an EMT, doesn't a fire department EMT deal with fire victims and not COVID vaccine injury patients? In the comments of a New York Post article about Pastrani, someone wrote: "FD EMT here. I treated a number of patients who were ultimately diagnosed with myocarditis following the jab. The problem is a real issue, which needs to be addressed." [https://nypost.com/2023/11/25/metro/fdny-vet-sues-for-disability-pension-after-covid-vax-reax/] But I still don't understand why a fire department EMT would treat COVID vaccine injury patients.
The fireman is supposed to have worked for the NYC fire department, but he said there was an average of about one death per week in the COVID era before the vaccines were rolled out. But in reality NYC had up to about 7-fold the normal number of weekly deaths in the spring of 2020, but subsequently NYC had low excess deaths in 2021. Now of course a fireman wouldn't necessarily be witnessing people die from COVID in the spring of 2020, so the COVID deaths in the spring of 2020 wouldn't necessarily have resulted in an increase in the number of deaths seen by the fireman. But why would a fireman even be seeing deaths due to vaccines later on? And if NYC had a 10-fold to 28-fold increase in deaths then why is it not visible in mortality statistics?
Kirsch has published many similar anecdotes about how various professionals have been seeing an increase in deaths since the vaccine rollout, but in several other cases he has said that he received the story from some anonymous source. And often the numbers in his anecdotes seem so implausible that I suspect he makes up some of his stories.
In August 2024 Kirsch published a Substack post about an interview he supposedly had with an anonymous military doctor. But he only published notes of the supposed interview in his own words, so I don't know if the doctor was even a real person or if the notes were just made up by Kirsch.
Kirsch made the post unlisted soon after he published it, because he said that "the doctor changed his mind and didn't want to lose his job and he asked me to take it down." [https://x.com/stkirsch/status/1829554732861677628] But it might have also been that Kirsch took down the post in case he realized people would've figured out the story was fake.
However the post can still be accessed via the draft URL: https://kirschsubstack.com/p/22826d30-3ccc-4ecf-901f-30c3a598ae23. I also posted a PDF of the post here: f/kirsch-military-doctor.pdf.
This table from the post showed the number of adverse events in the "last 2 years":
But the post didn't indicate what period of 2 years the table referred to. So was it something like August 2022 to August 2024? In that case the doctor should've mentioned if the rate of adverse events was higher in 2021 or the first half of 2022, which were the most relevant periods concerning the impact of the vaccines.
Kirsch wrote that the military doctor said: "Not a single vaccinated female has been able to give birth! 10/10 were miscarriages." However the table of adverse events above showed that there had been 10 miscarriages in the 2-year period. So in the rest of the post-vaccine era outside the 2-year period, were there also zero births and zero miscarriages in vaccinated women?
The rate of 10 miscarriages out of 10 pregnancies also seems too extreme. Based on CDC WONDER there hasn't been any clear increase in miscarriages since 2021. [https://wonder.cdc.gov/fetal.html]
In Kirsch's table of adverse events in the last 2 years, there were 3 cases of blindness and 8 cases of brain fog. But was blindness really so common that even brain fog was only about 2.7 times as common as blindness? If 3 out of about 4,000 people on the base went blind because of the shots, that would be the equivalent of about 250,000 people in the whole US population, which would be a huge number even if it would include temporary blindness. And even during the 30-year baseline period the rate was only 1 for blindness and 3 for high blood pressure, so why was high blood pressure only 3 times as common as blindness?
Kirsch's post didn't say what period of time was used to calculate the "normal rate" in the pre-vaccine era. If there was data available for the exact number of adverse events during the 2-year period, then was it also available for the entire period of time that was used to calculate the normal rate? In that case why are the normal rates rounded to integers? Or are the normal rates approximate estimates, or were they the calculated from actual data but they were just rounded off to integers?
Or do the normal rates simply show something like the total number of adverse events on the base during a 30-year period? In that case Kirsch should've mentioned that the normal rates are not necessarily accurate in case the number of service members on the base had not remained at a constant level of around 4,000 throughout the 30-year period.
Kirsch told me "the doctor gave me his stats for last 2 years vs. 30 years before the rollout. What THIS DOCTOR observed first hand." But in the Substack post Kirsch reported the doctor as saying that he had worked for "over 25 years as an military doctor/medic" and that "I've been doing this for over 25 years now". So if his data was based on first-hand obervation, then how does he have data going back 30 years before the vaccine rollout if he hadn't even worked as a doctor or medic that long?
Kirsch's post said that the doctor came to his unit in 2021. Did he come to the unit from a different base or from a different unit on the same base? Does the unit mean a medical unit, or does it mean a unit of personnel he provides medical services for? Or does the base have multiple medical units? Do the doctor's statistics apply to only his unit or to all units? And if they only apply to his unit, then did he extrapolate the figures of his unit to the entire base relative to the size of his unit, or did he also acquire data about other units from other doctors on the base? Or does he also have data about other units that is somehow based on first-hand observation?
I asked these questions from Kirsch on DM but he wasn't able to answer them. He wasn't even able to answer what 2-year period the rates in his table referred to. He just said something like "are you accusing me of lying?!" (Which is the standard line people say when they are actually lying but they don't have any argument to defend their lies.)
Kirsch wrote: "Ed Dowd's book 'Cause Unknown' documents 500 people who died unexpectedly (that was the sole criteria). They have something in common: as far as we know, only one of the 500 was unvaccinated."
The Twitter user WaitingForPerot who is specialized in researching the dead atheletes story posted this tweet (where in the replies he showed evidence that the three people circled in green died before their age group was eligible for vaccination): [https://x.com/WaitingForPerot/status/1739655583450517957]
Did @stkirsch think he was smart using an alternate cover of Dowd's book? Only problem is it's just as bad (worse?) than the original.
The 3 GREEN weren't vaccinated:
• Alex Apolinario
• Josh Downie
• Emmanuel AntwiThe BLUE is Logan Luker. Tragically, he took his own life.
Another version of the cover image features Brandon Fahey who was not vaccinated and who died from a malformed blood vessel in his brain, and it featured Aaron Vasquez who died from a congenital heart defect: [https://x.com/Truth_in_Number/status/1743327152685085159]
An article about Vasquez said that one of his coronary arteries "was in a place that, left surgically uncorrected, could result in death", and that he "was neither under the effects of the coronavirus nor of any vaccine against the coronavirus" (even though I don't know if it means he was unvaccinated). [https://parentheartwatch.org/dumont-student-athlete-who-suddenly-died-14-had-undetected-heart-condition-dad-says/]
This section consists of my comments to this Substack post: https://kirschsubstack.com/p/my-rebuttal-on-the-claims-that-vaccines.
Kirsch wrote:
Analysis of the entire Hungarian population
Claim: If you got the shots, you had a lower likelihood of dying of COVID
Reality: Fig. 1 admits the all-cause mortality rapidly worse if you got the shots.You can plainly see that with Moderna, you were worse off after just 80 days. And with Pfizer, it was a wash at 80 days. And the trend line was way better for the unvaxxed than for either mRNA vaccine post 80 days.
However the survival probability in Figure 1 is not adjusted for age. Table S1 shows that during the period displayed in Figure 1, the average age was about 45.6 for unvaccinated people, 45.0 for Janssen, 50.1 for Sputnik, 56.9 for Moderna, and 57.9 for Pfizer. So it explains why the survival probability was low for Moderna and Pfizer but high for Janssen and Sputnik: [https://www.mdpi.com/article/10.3390/vaccines10071009/s1]
Kirsch wrote:
Claim: Some countries, notably Hong Kong, vaccinated their population in 2021 and had no excess deaths until Omicron. If vaccination caused excess deaths, they would have happened during that period.
Reality:
He used a 2010-2019 linear baseline for CMR in Hong Kong, but it might not be accurate because the trend in CMR in 2014-2019 seemed to be curved upwards, and even 2019 was already clearly above the 2010-2019 linear baseline: [https://www.mortality.watch/explorer/?c=HKG&t=cmr&df=2005&bf=2010&bt=2019]
Wilf didn't claim that Singapore had no excess deaths until 2022, because he wrote that excess deaths in Singapore started in "Oct-2021, with Delta". However Singapore had close to 0% excess deaths in the first half of 2021 when most people got vaccinated:
download.file("https://covid.ourworldindata.org/data/owid-covid-data.csv","owid-covid-data.csv") library(data.table);library(ggplot2) ma=\(x,b=1,f=b){x[]=rowMeans(embed(c(rep(NA,b),x,rep(NA,f)),f+b+1),na.rm=T);x} t=fread("owid-covid-data.csv") pick=sort(c("Hong Kong","Singapore","South Korea","Australia")) a=t[location%in%pick,.(location,date,excess_mortality,new_vaccinations,positive_rate)] a[,positive_rate:=positive_rate*100] shil=\(x,y=1)c(tail(x,-y),rep(NA,y)) wemo=\(x){rle=rle(is.na(x));len=table(rle$lengths[rle$values]);if(sum(len["29"],len["30"],na.rm=T)>2)x=shil(x,15);if(!is.na(len["6"]>3))x=shil(x,3);x} a[,excess_mortality:=wemo(excess_mortality),location] var=setkey(fread(text="z,name,h,s,b excess_mortality,Excess deaths,0,0,0 new_vaccinations,New vaccine doses,30,.5,1 positive_rate,PCR positivity rate,12,1,.65"),z) var[,color:=hsv(h/36,s,b)] var[,color:=hsv(h/36,s,b)] ispct=c("excess_mortality","positive_rate") p=a[,.(group=factor(location,pick),x=date,z=rep(names(.SD)[-(1:2)],each=.N),y=unlist(.SD[,-(1:2)]))] p[,y:=zoo::na.approx(y,na.rm=F),.(group,z)] p[,z:=factor(z,intersect(p$z,var$z))] lab=merge(p[,.(min=min(y,na.rm=T),max=max(y,na.rm=T)),.(group,z)],var)[is.finite(max)] lab=lab[,.(group,z,color,label=paste0(name," (",pmin(0,round(min)),"-",round(max),ifelse(z%in%ispct,"%",""),")"))] p[,y:=ma(y,7),.(group,z)][,y:=y/max(y,na.rm=T),.(group,z)] lab=merge(p[,.(ymin=min(y,na.rm=T)),group],lab) lab[,y:=seq(1-.08*(1-ymin[1]),,-1/11*(1-ymin[1]),.N),group] lab[,hjust:=c(0,0,0,0)[group]] xstart=as.Date("2020-1-1");xend=as.Date("2024-1-1") xbreak=seq(xstart,xend,"6 month") xlab=ifelse(month(xbreak)==7,year(xbreak),"") ggplot(p,aes(x,y))+ facet_wrap(~group,ncol=2,strip.position="top",scales="free")+ geom_vline(xintercept=seq(xstart,xend,"year"),linewidth=.3,color="gray70",lineend="square")+ geom_hline(yintercept=0:1,linewidth=.3,color="gray70",lineend="square")+ geom_hline(data=p[,min(y,na.rm=T),group],aes(yintercept=V1),linewidth=.3,color="gray70",lineend="square")+ geom_line(aes(color=z),linewidth=.4)+ geom_label(data=lab,aes(hjust=hjust,x=`class<-`(ifelse(hjust==0,xstart+30,xend-30),"Date"),y=y,label=label,color=z),fill=alpha("white",.85),label.r=unit(0,"pt"),label.padding=unit(1,"pt"),label.size=0,size=2.4)+ labs(x=NULL,y=NULL,title="OWID: ±7-day moving averages",subtitle="Source: covid.ourworldindata.org/data/owid-covid-data.csv. The excess deaths are raw deaths with a 2015-2019 linear baseline adjusted for seasonality. Weekly and monthly data was linearly interpolated to daily data before calculating the moving average. Weekly data is plotted in the middle of the week and monthly data is plotted in the middle of the month."|>stringr::str_wrap(110))+ scale_x_date(limits=c(xstart,xend),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(NA,1))+ scale_color_manual(values=var[levels(p$z),color])+ coord_cartesian(clip="off",expand=F)+ theme(axis.text=element_text(size=7,color="black"), axis.text.y=element_blank(), axis.ticks.length=unit(0,"pt"), legend.position="none", panel.spacing=unit(2,"pt"), panel.spacing.y=unit(1,"pt"), panel.background=element_blank(), panel.grid=element_blank(), plot.margin=margin(4,4,3,4), plot.subtitle=element_text(size=7,margin=margin(,,4)), plot.title=element_text(size=7.5,face="bold",margin=margin(1,,4)), strip.background=element_blank(), strip.text=element_text(face=2,margin=margin(,,3),size=7)) ggsave("1.png",width=5,height=4,dpi=380*4) system("magick 1.png -resize 25% -colors 256 1.png")
The plot above also shows that in Hong Kong, South Korea, and Australia, the PCR positivity rate remained close to 0% until 2022, but in 2022 there was a sharp spike in excess deaths which coincided with a sharp spike in the PCR positivity rate. Why would vaccines not result in excess deaths in 2021 but they would only result in a sharp spike in deaths much later in 2022? In South Korea the spike did not even coincide with the booster rollout because the booster rollout had peaked about 3 months earlier.
Even in the second half of 2022 and in 2023, the spikes in deaths in Singapore coincided with COVID waves:
Kirsch told me: "I talked to my contact in Singapore. The excess deaths happening when they rolled out the booster in September. These people weren't dying from Covid." [https://x.com/stkirsch/status/1876122367677874511] However from my plot above you can see that Singapore had a very low number of COVID deaths until a sudden increase in October 2021, which coincided with the first big increase in excess deaths. I didn't find data for deaths in Singapore by age and month, but I suspect the spike in deaths in late 2021 would've occurred around the same time in all age groups even though older age groups got the booster earlier than younger age groups.
Wilf's initial arguments to Kirsch were posted here: https://docs.google.com/document/d/1mFuduR7b0YBfjXYTwNkv5pB-tioKzRbhgrMacknjh1k.
Wilf's Google Docs document included this table:
Even though he used a 2015-2019 average baseline to calculate excess deaths due to drugs, traffic accidents, and firearm use, he took the overall number of excess deaths from a CDC dataset which used a 2013-2019 trend as the baseline. CDC's website said: "Counts of deaths in the most recent weeks were compared with historical trends (from 2013 to present) to determine whether the number of deaths in recent weeks was significantly higher than expected, using Farrington surveillance algorithms (1)." [https://www.cdc.gov/nchs/nvss/vsrr/covid19/excess_deaths.htm] So the CDC dataset took into account that in 2013-2019 there was an increasing trend in deaths from drug overdoses and it assumed that the trend would continue during COVID, which means that Wilf's 2015-2019 average baseline exaggerates the contribution of drug overdose deaths to total excess deaths in the CDC dataset.
For example Wilf got 43,041 excess drug overdose deaths in 2022, which was close to my figure here when I used a 2015-2019 average baseline, but my number of excess deaths fell by more than half when I used a 2013-2019 linear baseline instead:
v=fread("curl -Ls sars2.net/f/vital.csv.xz|xz -dc") # NVSS data used by CDC WONDER a=v[,.(dead=sum(ucd)),.(year,cause)] drug=a[cause%like%"X4[0-4]|X6[0-4]|Y1[0-4]",.(dead=sum(dead)),year] d=drug[year>=2020] d$ave=drug[year%in%2015:2019,mean(dead)] d$trend=drug[year%in%2013:2019,predict(lm(dead~year),d)] round(d[,excessave:=dead-ave][,excesstrend:=dead-trend][])
year dead ave trend excessave excesstrend 1: 2020 91631 64734 78951 26897 12680 2: 2021 106485 64734 83883 41751 22602 3: 2022 107734 64734 88816 43000 18918
When I similarly used a 2013-2019 linear trend to calculate excess deaths from traffic accidents and firearm use, they were also much lower than in Wilf's table. My remainder of unexplained deaths was much higher than in Wilf's table, even though it seems to be mostly because I looked at UCD instead of MCD COVID deaths:
a=v[,.(dead=sum(ucd)),.(year,cause)] d=a[cause=="U071",.(year,cdcexcess=c(453810,530876,327658),covid=dead)] a$group=NA a$group[a$cause%like%"X4[0-4]|X6[0-4]|Y1[0-4]"]="drug" a$group[a$cause%like%"V"]="traffic" a$group[a$cause%like%"X7[2-4]|X9[3-5]|W3[2-4]|Y2[2-4]"]="gun" a=a[!is.na(group),.(dead=sum(dead)),.(year,group)] a=merge(a[year%in%2013:2019,.(year=d$year,base=predict(lm(dead~year),d)),group],a) d=merge(d,dcast(a[,value:=dead-base],year~group)) d$remainder=d$cdcexcess-rowSums(d[,-(1:2)]) print(round(d),r=F)
year cdcexcess covid drug gun traffic remainder 2020 453810 350831 12680 2983 1047 86269 2021 530876 416893 22602 5467 4850 81065 2022 327658 186552 18918 3535 3088 115565
Wilf took the number of COVID deaths from OWID which in turn took it from a dataset published by WHO. [https://ourworldindata.org/explorers/covid?tab=table&time=earliest%2e%2e2022-12-31&country=%7eUSA&pickerSort=desc&pickerMetric=total_deaths&Metric=Confirmed+deaths&Interval=Cumulative&Relative+to+population=false, https://data.who.int/dashboards/covid19/data?n=c&m49=840] The number of deaths in the WHO dataset doesn't match either MCD or UCD COVID deaths at CDC WONDER, but it might be because the deaths in the WHO dataset are by "date reported to WHO" but deaths at CDC WONDER are by date of occurrence. The numbers in the WHO dataset are also slightly off from the numbers listed at OWID, but I think it's because OWID interpolated WHO's weekly data to daily data. Here I converted the weekly deaths to yearly deaths based on the year of the Thursday:
> who=fread("https://srhdpeuwpubsa.blob.core.windows.net/whdh/COVID/WHO-COVID-19-global-data.csv") > who[Country_code=="US",.(dead=sum(New_deaths,na.rm=T)),.(year=year(Date_reported-3))]|>print(r=F) year dead 2020 362570 # 348653 in Wilf's table 2021 459163 # 470402 2022 260723 # 263401 2023 82031 2024 45580
The WHO dataset appears to correspond to MCD rather than UCD deaths at CDC WONDER, except the deaths in the WHO dataset seem to be reported with a delay so that there's less deaths in 2020 and 2021 but more deaths in 2022:
> v[cause=="U071",.(ucd=sum(ucd),mcd=sum(mcd)),year] year ucd mcd # deaths at CDC WONDER and NVSS 1: 2020 350831 397566 2: 2021 416893 478402 3: 2022 186552 254355
But anyway Wilf might have underestimated his remainder of unexplained deaths because he looked at MCD rather than UCD COVID deaths (even though UCD COVID seems to fall short of excess deaths during COVID waves).
However CDC's estimate for excess deaths seems to be accurate, or at least it's close to my estimate here where I multiplied the 2013-2019 trend in CMR for each age by the mid-year resident population estimate for the age:
d=data.table(year=2020:2022,cdcexcess=c(453810,530876,327658)) years=2011:2023 t=fread("http://sars2.net/f/uspopdead.csv")[year%in%years] t=merge(t,t[year<2020,.(year=years,base=predict(lm(dead/pop~year),.(year=years))),age]) t=t[,.(dead=sum(dead),base=sum(base*pop)),year] merge(d,t[,.(year,myexcess=dead-base)])|>print(r=F)
year cdcexcess myexcess 2020 453810 468885.1 2021 530876 515125.3 2022 327658 285018.6
USMortality commented on Wilf's initial arguments here: https://www.usmortality.com/p/debunking-pro-vaccine-arguments-in.
USMortality wrote: "Data from the Mortality Watch Excess Ranking, based on age-standardized deaths and a conservative 3-year pre-pandemic baseline, reveals at least two dozen countries that did not exhibit statistically significant excess mortality during the 2020-2023 period."
However he determined statistical significance based on whether the yearly ASMR crossed above the upper end of the 95% PI or not. The 2017-2019 average baseline for ASMR is too high in most countries and it often produces a very wide 95% prediction interval compared to a linear regression baseline with a longer fitting period. So for example in these plots for Sweden, the ASMR in 2020 crossed above the 95% PI when I used a 2010-2019 linear baseline but not when I used a 2017-2019 average baseline, and the average baseline also produced a very wide 95% PI: [https://www.mortality.watch/explorer/?c=SWE&df=2010&bf=2010&bm=lin_reg]
USMortality posted this plot for COVID ASMR by vaccination status at OWID, which used data from a CDC dataset where partially vaccinated people who had not finished the primary course doses at least 14 days ago were excluded: [https://ourworldindata.org/grapher/united-states-rates-of-covid-19-deaths-by-vaccination-status, https://data.cdc.gov/Public-Health-Surveillance/Rates-of-COVID-19-Cases-or-Deaths-by-Age-Group-and/54ys-qyzm/about_data]
However the plot only started from October 9th 2021, and there weren't very many people who only received the primary course doses in October 2021 or later so it didn't make much difference if people were classified as vaccinated immediately after vaccination or not (even though it may have made a bigger difference if people who had received only one dose were excluded entirely).
But anyway in the Czech record-level data when I plotted all-cause ASMR but I classified people as unvaccinated until 3 weeks from the first dose, it gave an advantage to unvaccinated people because it reduced the ASMR of unvaccinated people and it increased the ASMR of vaccinated people (but in late 2021 the classification delay no longer made much difference because there were few new people who got vaccinated that late): [czech4.html#ASMR_when_people_are_classified_as_unvaccinated_until_three_weeks_from_vaccination]
Similarly in Dutch CBS data, people who were not fully vaccinated had lower COVID ASMR than unvaccinated people: [https://www.cbs.nl/nl-nl/longread/rapportages/2024/covid-vaccinatiestatus-en-sterfte/3-resultaten]
In the next plot for the English ONS data, I plotted CMR in a single age group instead of ASMR in all age groups, because I had to calculate the mortality rate in the fully and not fully vaccinated people by adding together multiple vaccination status groups, and it's not possible to add together ASMR values when the population denominators are not the same, but it is possible to calculate CMR for different vaccination status groups combined by simply dividing total deaths across different groups with total person-years. And the reason why I picked the age group 80-89 was that it had the highest number of total COVID deaths. But anyway, the next plot shows that in early 2021 people who were not fully vaccinated had much lower COVID ASMR than unvaccinated people, even though by late 2021 there was no longer much difference because there were few new people getting vaccinated:
library(data.table);library(ggplot2) t=fread("http://sars2.net/f/ons.csv") t=rbind(t[ed==7&month<="2021-03"],t[ed==9]) t=t[cause=="Deaths involving COVID-19"&age=="80-89"] p=t[status=="Unvaccinated",.(y=dead/pop,month,z=status)] p=rbind(p,t[status!="Unvaccinated",.(y=sum(dead)/sum(pop),z="Vaccinated"),month]) p=rbind(p,t[status%like%"Unvaccinated|First|Second dose, less",.(y=sum(dead)/sum(pop),z="Not fully vaccinated"),month]) p=rbind(p,t[status%like%"Second dose, at|Third|Fourth",.(y=sum(dead)/sum(pop),z="Fully vaccinated"),month]) p[,y:=y*1e5] p[,z:=factor(z,unique(z))] p[,month:=as.Date(paste0(month,"-1"))] xstart=as.Date("2021-1-1");xend=as.Date("2023-6-1") xbreak=seq(as.Date("2021-1-1"),xend,"year");xlab=year(xbreak) ybreak=pretty(p$y,7);ystart=0;yend=max(p$y,na.rm=T) ggplot(p,aes(x=month+15,y))+ geom_vline(xintercept=seq(as.Date("2021-1-1"),as.Date("2023-1-1"),"year"),color="gray75",linewidth=.5)+ geom_vline(xintercept=c(xstart,xend),linewidth=.5,lineend="square")+ geom_hline(yintercept=c(ystart,yend),linewidth=.5,lineend="square")+ geom_line(aes(color=z,linetype=z),linewidth=.7)+ geom_point(aes(color=z,alpha=z),stroke=0,size=1.3)+ labs(x=NULL,y=NULL,title="English ONS data, ages 80-89: COVID CMR per 100,000 person-years")+ scale_x_date(limits=c(xstart,xend),breaks=xbreak,labels=xlab)+ scale_y_continuous(limits=c(ystart,yend),breaks=ybreak)+ scale_color_manual(values=hsv(c(21,0,21,0)/36,1,.8))+ scale_linetype_manual(values=c("solid","solid","42","42"))+ scale_alpha_manual(values=c(1,1,0,0))+ coord_cartesian(clip="off",expand=F)+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(hjust=0,margin=margin(4)), axis.ticks=element_line(linewidth=.5), axis.ticks.length=unit(5,"pt"), axis.ticks.length.x=unit(0,"pt"), legend.background=element_rect(fill="white",color="black",linewidth=.5), legend.box.spacing=unit(0,"pt"), legend.direction="vertical", legend.justification=c(1,1), legend.key=element_blank(), legend.key.height=unit(12,"pt"), legend.key.width=unit(30,"pt"), legend.margin=margin(5,7,5,5), legend.position=c(1,1), legend.spacing.x=unit(3,"pt"), legend.spacing.y=unit(0,"pt"), legend.text=element_text(size=11), legend.title=element_blank(), panel.background=element_blank(), panel.grid=element_blank(), plot.margin=margin(7,7,5,7), plot.title=element_text(size=11.5,face="bold",margin=margin(,,5))) ggsave("1.png",width=6,height=2.7,dpi=300*4) sub="Fully vaccinated means that at least 21 days have passed from the second dose. Source: ONS dataset \"Deaths involving COVID-19 by vaccination status, England\". Data for the first three months is taken from the July 2022 release which was linked against the 2011 census, and data for the other months is taken from the August 2023 release which was linked against the 2021 census." system(paste0("mogrify -trim 1.png;w=`identify -format %w 1.png`;magick 1.png \\( -size $[w]x -font Arial -interline-spacing -3 -pointsize $[43*4] caption:'",gsub("'","'\\\\'",sub),"' -splice x100 \\) -append -resize 25% -bordercolor white -border 26 -colors 256 1.png"))
USMortality wrote: "On the other hand, data from New Zealand provides a contrasting perspective. It shows that mortality rates for vaccinated and unvaccinated groups are similar, and the country experienced no statistically significant excess mortality during the pandemic."
In the blog post USMortality linked to, he took the number of deaths by vaccination status from a FOIA response which was missing population sizes, so he had to estimate the population sizes of unvaccinated and vaccinated people by merging the FOIA response with two other datasets where the population sizes were completely unreliable: https://x.com/henjin256/status/1804593333924442299. Me and Uncle John Returns also looked at the same FOIA data but we concluded that it was not possible to calculate mortality rates based on the response properly because accurate population sizes were not available.
In this plot by USMortality if you look at the CMR in 2022 only, it's over twice as high in unvaccinated people as vaccinated people in ages 0-20, 21-40, and 41-60, but ages 81+ follow the opposite pattern so vaccinated people have about twice as high CMR as unvaccinated people. That should've served as a basic sanity check to USMortality that his population sizes were so inaccurate that he shouldn't even have published his analysis: [https://www.usmortality.com/p/new-zealands-all-cause-deaths-and]
The plot above also doesn't match Barry Young's dataset, where in 2022 vaccinated people had lower CMR than the general NZ population in all age groups shown above (even though unvaccinated people are overrepresented at the lower end of the age groups which reduces unvaccinated CMR relative to vaccinated CMR):
agecut=\(x,y)cut(x,c(y,Inf),paste0(y,c(paste0("-",y[-1]-1),"+")),T,F) ages=c(0,21,41,61,81) t=fread("http://sars2.net/f/buckets.gz") pop=fread("http://sars2.net/f/nzpopdead.csv") nz=pop[year==2022,.(nz=sum(dead)/sum(pop,na.rm=T)*1e5),.(age=agecut(age,ages))] barry=t[year(date)==2022,.(barry=sum(dead)/sum(alive)*365e5),.(age=agecut(age,ages))] print(mutate_if(merge(nz,barry),is.double,round),r=F)
age nz barry # deaths per 100,000 person-years 0-20 33 30 # the `nz` column includes both vaccinated and unvaccinated people 21-40 67 62 # the `barry` column includes only vaccinated people 41-60 297 295 61-80 1562 1519 81+ 10944 9914
However there weren't very many people who only got their first vaccine dose after January 2022. So one way the FOIA response can be employed to estimate if the vaccines were effective or not is to look at the percentage increase in deaths in March 2022 when New Zealand was first hit by COVID. But for example in ages 81-100 between February and March 2022, the number of deaths divided by days in month increased by about 57% in unvaccinated people but only by about 16% in vaccinated people: [moar.html#Deaths_in_ages_81_in_Chris_Johnstons_OIA_response]
In his Substack post USMortality wrote that New Zealand "experienced no statistically significant excess mortality during the pandemic". He may have again meant that the yearly ASMR didn't cross above the 95% PI when he used a 2017-2019 average baseline. But the yearly ASMR would have crossed above the 95% PI if he would've used a 2011-2019 linear baseline instead: [https://www.mortality.watch/explorer/?c=NZL&df=2011&bm=lin_reg]
Saar Wilf showed there was a negative correlation across US states between the percentage of vaccinated people and mortality rate during the Delta wave. Spiro Pantazatos pointed out that the correlation turned positive after he adjusted for the number of COVID deaths in each state in 2020: https://telemimesis.substack.com/p/heres-to-you-dr-robinson.
I won't address his methodology here, but I'll show that unvaccinated people had a much bigger increase in mortality during the Delta wave than vaccinated people.
Kirsch had a source inside HHS who has given him a couple of different sets of data from Medicare. Kirsch published the first set of data in February 2023: https://kirschsubstack.com/p/game-over-medicare-data-shows-the?open=false#%C2%A7the-medicare-data-that-i-received. And he published the second set of data in December 2023 at the same time as Barry Young's New Zealand data: https://kirschsubstack.com/p/data-from-us-medicare-and-the-new. I wrote about both sets of data here: moar.html#Connecticut_Medicare_data_published_by_Kirsch.
The first set of data included data for both unvaccinated and vaccinated people only for Connecticut, but it's not very useful to determine the impact of vaccination during the Delta wave because Connecticut had a very low number of deaths during the Delta wave. However it includes another sheet for deaths in only vaccinated people called "Medicare all states subset", which includes entries for a total of 114,157 deaths that occcurred between December 2020 and January 2023. I don't know how the subset of people was selected, and Kirsch doesn't seem to know it either because he included this comment in his spreadsheet for the data: "Whatever query produced these records did NOT get all the records for people who died since their vaccine. It seems like it is a random subset of this data."
But anyway, the subset of people who were included in his Medicare spreadsheet had almost no increase in deaths during the Delta wave:
In the second set of Medicare data that Kirsch published in December 2023, there was another spreadsheet which had one sheet for deaths by date in unvaccinated people and and another sheet for deaths by date in all people: f/COVID_vax_jan_feb_mar_2021_plus_ALL_deaths_in_medicare_per_day.xlsx. It was missing deaths by date in vaccinated people but I believe it's possible to calculate it by simply subtracting unvaccinated people from all people. The spreadsheet also had sheets for deaths by days since vaccination among people vaccinated in January 2021, February 2021, and March 2021, but I converted them to deaths by estimated date of death by assuming that all people got vaccinated on the 15th day of the month, which means that my estimated date of death is off by at most 16 days from the actual date of death. However by both methods of calculating deaths in vaccinated people, the bump in deaths during the Delta wave was almost flat:
library(data.table);library(ggplot2) ma=\(x,b=1,f=b){x[]=rowMeans(embed(c(rep(NA,b),x,rep(NA,f)),f+b+1),na.rm=T);x} f="http://sars2.net/f/COVID_vax_jan_feb_mar_2021_plus_ALL_deaths_in_medicare_per_day.xlsx" s8=setDT(readxl::read_excel(f,sheet=8)) p=s8[,.(x=as.Date(BENE_DEATH_DT),y=num_benes,z="Unvaccinated")] s5=setDT(readxl::read_excel(f,sheet=5)) p=rbind(s5[,.(x=as.Date(BENE_DEATH_DT),y=NUM_BENES,z="All people")],p) minus=dcast(p,x~z,value.var="y") p=rbind(p,minus[,.(x,y=`All people`-`Unvaccinated`,z="All people minus unvaccinated")]) d=do.call(rbind,lapply(1:3,\(i)setDT(readxl::read_excel(f,sheet=i))[,.(days=died_days_after,dead=`# deaths`)][,date:=i])) d[,date:=as.Date(paste(2021,date,15,sep="-"))] p=rbind(p,d[,.(y=sum(dead),z="Vaccinated January to March 2021"),.(x=date+days)]) p[,z:=factor(z,unique(z))] x1=as.Date("2022-7-1");x2=as.Date("2023-9-30") p=merge(p,p[x%in%x1:x2,mean(y),z])[,.(x,y=y/V1*100,z)] p[,y:=ma(y,3),z] xstart=as.Date("2020-1-1");xend=as.Date("2024-1-1") xbreak=seq(xstart+182,xend,"year") p=p[x%in%xstart:xend] ybreak=pretty(p$y,7) ggplot(p,aes(x,y,z))+ geom_vline(xintercept=seq(xstart,xend,"year"),linewidth=.4,color="gray60")+ annotate("rect",xmin=x1,xmax=x2,ymin=0,ymax=max(ybreak),fill="gray80",alpha=.5)+ geom_vline(xintercept=c(x1,x2),linetype="42",linewidth=.4)+ annotate("segment",x=as.Date("2021-4-15"),xend=as.Date("2021-4-15"),y=70,yend=100,color="#bb0000",linewidth=.4,linetype="42")+ annotate("text",x=as.Date("2020-12-5"),hjust=1,vjust=1,y=90,label="No new people\nadded after\ndashed line",color="#bb0000",size=3.6,lineheight=.9)+ annotate("segment",x=as.Date("2020-12-15"),xend=as.Date("2021-4-5"),y=85,yend=90,arrow=arrow(type="closed",length=unit(4,"pt")),lineend="butt",color="#bb0000",size=.5)+ geom_hline(yintercept=100,linetype="42",linewidth=.4)+ geom_line(aes(color=z),linewidth=.6)+ labs(x=NULL,y=NULL,title="Medicare data published by Steve Kirsch: Deaths as percentage of\naverage daily deaths in July 2022 to September 2023")+ scale_x_continuous(limits=c(xstart-.5,xend+.5),breaks=xbreak,labels=year(xbreak))+ scale_y_continuous(limits=range(ybreak),breaks=ybreak,labels=paste0(ybreak,"%"))+ scale_color_manual(values=c("black","#6666ff","#ff6666","#bb0000"))+ coord_cartesian(clip="off",expand=F)+ guides(color=guide_legend(ncol=2,byrow=F))+ theme(axis.text=element_text(size=11,color="black"), axis.text.x=element_text(margin=margin(4)), axis.text.y=element_text(margin=margin(,3)), axis.ticks=element_line(linewidth=.4,color="black"), axis.ticks.length.x=unit(0,"pt"), axis.ticks.length.y=unit(4,"pt"), legend.background=element_blank(), legend.box.background=element_blank(), legend.box.spacing=unit(0,"pt"), legend.direction="horizontal", legend.justification="center", legend.key=element_blank(), legend.key.height=unit(13,"pt"), legend.key.width=unit(26,"pt"), legend.margin=margin(,,4), legend.position="top", legend.spacing.x=unit(2,"pt"), legend.spacing.y=unit(0,"pt"), legend.text=element_text(size=11,vjust=.5), legend.title=element_blank(), panel.background=element_blank(), panel.border=element_rect(fill=NA,linewidth=.4), panel.spacing=unit(2,"pt"), plot.margin=margin(5,5,2,5), plot.subtitle=element_text(margin=margin(,,5)), plot.title=element_text(size=11,face=2,margin=margin(2,,3))) ggsave("1.png",width=5.7,height=3.7,dpi=300*4) sub="Source: kirschsubstack.com/p/data-from-us-medicare-and-the-new, spreadsheet \"data-transparency/USA/Medicare/COVID vax jan feb mar 2021 plus ALL deaths in medicare per day.xlsx\". All lines are moving averages where the window extends 3 days backwards and 3 days forwards. People vaccinated in January to March 2021 only had data for month of vaccination and days between vaccination and death, so an approximate date of death was calculated by assuming that people got vaccinated on the 15th day of the month, which is off by at most 16 days from the actual date of death. However the exact date of death was available for unvaccinated people and for a set of all people which includes both unvaccinated and vaccinated people." system(paste0("mogrify -trim 1.png;magick 1.png \\( -size `identify -format %w 1.png`x -font Arial -interline-spacing -3 -pointsize $[44*4] caption:'",gsub("'","'\\\\'",sub),"' -splice x80 \\) -append -resize 25% -bordercolor white -border 24 -colors 256 1.png"))
In the plot above the dashed dark red line shows that after April 15th 2021 there's no more new people added, so after that the dark red line increases less steeply than the light red line, because more vaccinated people get added to the light red line.
In the Medicare datasets Kirsch has published, there's many people who are actually vaccinated but who are listed as unvaccinated because they had no vaccine dose known to Medicare. There's also many people who were listed as unvaccinated until they got a booster dose:
In my previous plot the number of deaths in unvaccinated people goes down a lot between late 2021 and mid-2022, but it's partially because many people were listed as unvaccinated until they got a booster dose.
Added later: Kirsch posted this reply to my comment to the Substack post by Pantazatos: "Medicare is OLD people. The increase in death during delta were vaccinated working age people. so medicare is consistent with previous claims." [https://telemimesis.substack.com/p/heres-to-you-dr-robinson/comments] But I posted this reply to Kirsch:
How do you know the increase was in vaccinated people? In the Czech Republic the Delta wave only peaked around November to December 2021. But if you look at ages 40-59, vaccinated people had almost no increase in ASMR during the Delta wave, but the ASMR of unvaccinated people almost doubled between September 2021 and the Delta peak: http://sars2.net/czech.html#Daily_deaths_and_vaccine_doses_by_age_group.
In the US in August to September 2021, ages 65+ accounted for about 57% of all excess deaths (relative to a linear trend in CMR in August to September of 2010-2019 multiplied by population size):
us=fread("http://sars2.net/f/uspopdeadmonthly.csv") us=us[month%in%8:9,.(dead=sum(dead),pop=sum(pop)),.(age,year)] base=us[year%in%2010:2019,.(base=predict(lm(dead/pop~year),.(year=2021))),age] a=merge(us[year==2021],base)[,base:=base*pop] a[age>=65,sum(dead)-sum(base)]/a[,sum(dead)-sum(base)] # 0.568729