Arte SheetsLearn. Try. Understand.

Statistical & Clinical Analysis

Deeks’ Funnel Plot Asymmetry Test: Diagnostic Meta-Analysis Effective Sample Size (ESS)

Avoid spurious Egger false positives in Diagnostic Test Accuracy (DTA) meta-analyses by computing Deeks’ Effective Sample Size ESS = (4*n_1*n_2)/(n_1 + n_2) and regressing ln(DOR) on 1/SQRT(ESS).

Why Cochrane DTA Guidelines forbid Egger’s SE test on Diagnostic Odds Ratios—and mandate Deeks’ 1/√ESS!

In Diagnostic Test Accuracy (DTA) meta-analyses (where Diagnostic Odds Ratio DOR = (TP*TN)/(FP*FN) typically ranges from 10 to 100!), ln(DOR) and its standard error SE = SQRT(1/TP + 1/FP + 1/FN + 1/TN) are mathematically correlated even when zero publication bias exists—causing Egger’s test to trigger rampant false-positive bias alarms! Jonathan J. Deeks, Petra Macaskill, and Les Irwig (2005, Journal of Clinical Epidemiology) solved this by replacing SE with the inverse root of Effective Sample Size: ESS = (4 * n_1 * n_2) / (n_1 + n_2), where n_1 = diseased cases and n_2 = non-diseased controls!

Notice that when n_1 = n_2 = N/2, ESS equals total N; when prevalence is 1:3 (e.g., n_1 = 25 cases, n_2 = 75 controls), ESS = 75.00 (< 100, penalizing unbalanced designs!). Regressing ln(DOR) D2:D6 against 1/SQRT(ESS) F2:F6 across 5 imaging accuracy studies yields Deeks asymmetry slope β_1 = +16.95 (vs. 0.00 when ln(DOR) is constant across sample sizes)!

DTA Meta-Analysis Scenario (5 Studies)Study 1 ESS (25 Cases / 75 Controls)Deeks Asymmetry Slope on 1/√ESSCochrane DTA Bias Assessment
Small Studies Inflated (ln DOR 3.40 -> 2.20)75.00 (vs Raw N = 100)+16.95Positive Small-Study DTA Asymmetry
Constant Accuracy Across Sizes (All ln DOR = 2.50)75.000.00Symmetric DTA Funnel
Zero Diseased or Non-Diseased Arm (n_1 or n_2 <= 0)Undefined ESS"Arm Sample Sizes Must Be Positive"Two-Gate Study Guard

Deeks Funnel-Asymmetry Regression Slope of ln(DOR) on 1 / SQRT(ESS)

Computes the regression slope of study log Diagnostic Odds Ratio D2:D6 against inverse root Effective Sample Size F2:F6.

=IF(OR(MIN(B2:B6) <= 0, MIN(C2:C6) <= 0), "Arm Sample Sizes Must Be Positive", ROUND(SLOPE(D2:D6, F2:F6), 2))

Deeks Effective Sample Size ESS_1 = (4 * n_1 * n_2) / (n_1 + n_2)

Evaluates prevalence-penalized effective sample size for Study 1 (B2 diseased, C2 non-diseased).

=IF(OR(B2 <= 0, C2 <= 0), "Arm Sample Sizes Must Be Positive", ROUND(E2, 2))

Try the example

Use the original values or change them to test your understanding.

Further reading