Code for comparing case series data with known mortality rates for untreated patients. The code uses the computer algebra system Maxima. heaviside(x) := if x >= 0 then 1 else 0; distr(N,a,x) := 100*binomial(N,a)*((x/100)^a)*(1-x/100)^(N-a); pdistr(N,a,x) := float(sum(distr(N,n,x)*heaviside(distr(N,a,x)-distr(N,n,x)), n, 0, N)); For more details see: E. Gkioulekas, P.A. McCullough, V. Zelenko: "Statistical analysis methods applied to early outpatient COVID-19 treatment case series data", COVID 2(8) (2022), 1139-1182 https://doi.org/10.3390/covid2080084 E. Gkioulekas: "Supplementary material: Statistical analysis methods applied to early outpatient COVID-19 treatment case series data". figshare. Online resource. (2022) https://doi.org/10.6084/m9.figshare.19364699.v5 ====================================== ====================================== CFR in South Africa: more than 2.5% https://ourworldindata.org/coronavirus/country/south-africa Reported case series: 14,000 patients, 0 deaths and hospitalizations https://www.biznews.com/health/2023/04/11/covid-injections-jay-naidoo Efficacy threshold for 95% confidence -> 0.03% Efficacy threshold for 99.9% confidence -> 0.06% g(t) := pdistr(14000, 0, t); xlist: makelist(t, t, 2/100, 9/100, 1/100); for t in xlist do print("x = ", float(t), "p-value percentage = ", g(t)); x = 0.01 p-value percentage = 65.47538931388314 x = 0.02 p-value percentage = 12.58841602967415 x = 0.03 p-value percentage = 2.610102078742463 ========[ 95% efficacy threshold ]=================== x = 0.04 p-value percentage = 0.8828665450648194 x = 0.05 p-value percentage = 0.186521454957537 x = 0.06 p-value percentage = 0.04036064775723765 ========[ 99.9% efficacy threshold ]================= x = 0.07 p-value percentage = 0.01438791888205436 x = 0.08 p-value percentage = 0.003068930150175163 x = 0.09 p-value percentage = 6.65120415816417e-4 Selection bias threshold for 99.9% confidence (using 0.06% threshold) -> 0.17% g(t) := pdistr(14000, ceiling(14000*6/10000), t); xlist: makelist(t, t, 7/100, 12/100, 1/100); for t in xlist do print("x = ", float(t), "p-value percent = ", g(t)); x = 0.07 p-value percent = 100.0 x = 0.08 p-value percent = 65.24531701900477 x = 0.09 p-value percent = 39.58275941062579 x = 0.1 p-value percent = 22.65271618667384 x = 0.11 p-value percent = 12.37105864516118 x = 0.12 p-value percent = 6.510213533750695 x = 0.13 p-value percent = 2.548569563507987 x = 0.14 p-value percent = 1.23974811558277 x = 0.15 p-value percent = 0.5926252955836514 x = 0.16 p-value percent = 0.280177388816265 x = 0.17 p-value percent = 0.0941817224047113 ========[ 99.9% selection bias threshold ]========== x = 0.18 p-value percent = 0.0425489106092526 x = 0.19 p-value percent = 0.01374816724860908 x = 0.2 p-value percent = 0.005985907496269317 Selection bias threshold for 95% confidence (using 0.03% threshold) -> 0.09% g(t) := pdistr(14000, ceiling(14000*3/10000), t); xlist: makelist(t, t, 4/100, 12/100, 1/100); for t in xlist do print("x = ", float(t), "p-value percent = ", g(t)); x = 0.04 p-value percent = 100.0 x = 0.05 p-value percent = 57.15205240684753 x = 0.06 p-value percent = 30.00665467969924 x = 0.07 p-value percent = 14.83584904894489 x = 0.08 p-value percent = 7.036383568577192 x = 0.09 p-value percent = 3.250270311325207 ========[ 95% selection bias threshold ]========== x = 0.1 p-value percent = 1.051366637671857 x = 0.11 p-value percent = 0.4556450928447484 x = 0.12 p-value percent = 0.1388574809280142 Conclusion: Selection bias threshold for 99.9% confidence is 0.17%, substantially exceeded by 2.5% CFR in South Africa. We also note that the 95% confidence selection bias threshold is 0.09%. Depending on desired confidence, one could use either threshold to estimate how much the CFR could have been reduced with nationwide implementation of the Chetty protocol. Calculation of selection bias tolerance using 99.9% confidence intervals p: 2.5/100; x: 0.17/100; float ((p*(1-x))/(x*(1-p))); 15.05731523378582 Chetty's case series would require systemic selection bias with F greater than 15 to overturned 99.9% clear and convincing finding, i.e. 15 times more likely to select patients that will survive without treatment than expected from their proportion in the general population) Calculation of selection bias tolerance using 95% confidence intervals p: 2.5/100; x: 0.09/100; float ((p*(1-x))/(x*(1-p))); 28.4 Chetty's case series would require systemic selection bias with F greater than 28 to overturned 95% clear and convincing finding, i.e. 28 times more likely to select patients that will survive without treatment than expected from their proportion in the general population) ====================================== ====================================== Published case series: 200 patients, 0 deaths and hospitalizations Published in: S. Chetty, "Elucidating the pathogenesis and Rx of COVID reveals a missing element", Modern Medicine 45 (5) (2020), 28-31 g(t) := pdistr(200, 0, t); xlist: makelist(t, t, 10/10, 25/10, 1/10); for t in xlist do print("x = ", float(t), "p-value percentage = ", g(t)); x = 1.0 p-value percentage = 27.59456404132179 x = 1.1 p-value percentage = 28.92335641032718 x = 1.2 p-value percentage = 18.40648800578485 x = 1.3 p-value percentage = 12.09019808024183 x = 1.4 p-value percentage = 12.33762010677699 x = 1.5 p-value percentage = 8.103938346501506 x = 1.6 p-value percentage = 8.297141188818303 x = 1.7 p-value percentage = 5.442203116237 x = 1.8 p-value percentage = 5.592877535703755 x = 1.9 p-value percentage = 3.659410586751856 ========[ 95% efficacy threshold ]=================== x = 2.0 p-value percentage = 3.776282258997234 x = 2.1 p-value percentage = 2.462797783611395 x = 2.2 p-value percentage = 2.552770340541375 x = 2.3 p-value percentage = 1.658442220099505 x = 2.4 p-value percentage = 1.72713149575839 x = 2.5 p-value percentage = 1.117197351904322 Conclusion: Efficacy threshold 1.9% with 95% exceeded by 2.5% CFR Preponderance of evidence in favor of the Chetty protocol. ====================================== ====================================== Counterfactual exploration: Suppose that Chetty's case series is as small as 2000 patients with 0 hospitalizations and 0 deaths Efficacy threshold for 95% confidence -> 0.19% g(t) := pdistr(2000, 0, t); xlist: makelist(t, t, 10/100, 40/100, 1/100); for t in xlist do print("x = ", float(t), "p-value percentage = ", g(t)); x = 0.1 p-value percentage = 27.79861586041756 x = 0.11 p-value percentage = 29.12300321510597 x = 0.12 p-value percentage = 18.63354041638426 x = 0.13 p-value percentage = 19.65957381915641 x = 0.14 p-value percentage = 12.56667873096794 x = 0.15 p-value percentage = 8.307014263536622 x = 0.16 p-value percentage = 8.514073850485126 x = 0.17 p-value percentage = 5.624436642835243 x = 0.18 p-value percentage = 5.789447648374661 x = 0.19 p-value percentage = 3.817834402566291 ========[ 95% efficacy threshold ]========== x = 0.2 p-value percentage = 3.94867990919087 x = 0.21 p-value percentage = 2.597187023300024 x = 0.22 p-value percentage = 2.700216350897951 x = 0.23 p-value percentage = 1.770238992011562 x = 0.24 p-value percentage = 1.850746562459596 x = 0.25 p-value percentage = 1.208730954235699 x = 0.26 p-value percentage = 1.27116465136894 x = 0.27 p-value percentage = 0.8266927230696953 ========[ 99% efficacy threshold ]========== x = 0.28 p-value percentage = 0.8747648091964072 x = 0.29 p-value percentage = 0.5662879153567907 x = 0.3 p-value percentage = 0.6030590007148262 x = 0.31 p-value percentage = 0.3884910567680781 x = 0.32 p-value percentage = 0.4164501665960276 x = 0.33 p-value percentage = 0.2669033485701037 x = 0.34 p-value percentage = 0.2880479719503129 x = 0.35 p-value percentage = 0.1836283727137984 x = 0.36 p-value percentage = 0.1222679308272078 x = 0.37 p-value percentage = 0.1265100788491823 x = 0.38 p-value percentage = 0.08375627943861123 ========[ 99.9% efficacy threshold ]========== x = 0.39 p-value percentage = 0.08727685617865558 x = 0.4 p-value percentage = 0.05744202152170058 Selection bias threshold for 95% confidence (using 0.19% threshold) -> 0.52% g(t) := pdistr(2000, ceiling(2000*19/10000), t); xlist: makelist(t, t, 40/100, 60/100, 1/100); for t in xlist do print("x = ", float(t), "p-value percent = ", g(t)); x = 0.4 p-value percent = 21.06638979953452 x = 0.41 p-value percent = 16.17884326408111 x = 0.42 p-value percent = 16.30375297990766 x = 0.43 p-value percent = 16.62615408050432 x = 0.44 p-value percent = 12.54954336681393 x = 0.45 p-value percent = 12.79806740251856 x = 0.46 p-value percent = 9.612909455857816 x = 0.47 p-value percent = 9.800792558574644 x = 0.48 p-value percent = 7.331114234125012 x = 0.49 p-value percent = 7.470856351563773 x = 0.5 p-value percent = 5.568546139705792 x = 0.51 p-value percent = 5.671050709359111 x = 0.52 p-value percent = 4.214175694657665 ========[ 95% selection bias threshold ]========== x = 0.53 p-value percent = 4.288473973344005 x = 0.54 p-value percent = 3.178365415005737 x = 0.55 p-value percent = 3.231666234808314 x = 0.56 p-value percent = 2.389571453791312 x = 0.57 p-value percent = 2.427469300483887 x = 0.58 p-value percent = 1.791233937468517 x = 0.59 p-value percent = 1.817974440301054 x = 0.6 p-value percent = 1.339000493455403 Conclusion: Selection bias threshold for 95% confidence is 0.52%, substantially exceeded by 2.5% CFR in South Africa, if we assume counterfactually that the number of patients treated by Dr. Chetty is 2000 instead of 14000. Sufficient to meet the clear and convincing standard. This means that when the other 12000 patients were treated, it was already clear and convincing that the Chetty protocol was life-saving, and it would have been professional misconducted at that point if Dr. Chetty had stopped using it after treating the first 2000 patients. Calculation of selection bias tolerance using 95% confidence intervals p: 2.5/100; x: 0.52/100; float ((p*(1-x))/(x*(1-p))); 4.905325443786983 Chetty's case series would require systemic selection bias with F greater than 4.9 to overturned 95% clear and convincing finding, i.e. 4.9 times more likely to select patients that will survive without treatment than expected from their proportion in the general population)