Atlas
statminds
Categorical (Exact Probability Model)The underlying model family class (e.g. GLM, linear model, categorical matrix, log-linear).Parametric ReferenceStatistical methods that assume a specific probability distribution family (typically normal).12-stage workflow

Fisher's Exact Test

The blueprint for Small-Sample Precision. This model calculates the exact probability of an association using the hypergeometric distribution, providing a 'Safe Harbor' when Chi-Square approximations fail due to sparse data.

Model familyCategorical (Exact Probability Model)
Hypothesisassociation
AliasesFisher-Irwin Test · Exact Probability Association · Small-Sample Contingency Test
G1
Sparsity Neutralization
Calculate valid p-values for 2x2 grids where cell counts are dangerously low (expected frequencies < 5).
G2
Exact Discovery Audit
Move beyond 'Approximation' to find the precise mathematical probability of observing your specific pattern of association.
G3
Categorical Signal Shielding
Protect discovery in pilot studies and rare-event scenarios where traditional tests lose their authority.
1

What is it?

Fisher's Exact Test calculates the exact probability of categorical association, rather than relying on asymptotic chi-square approximations.

2

When to use it

  • Small Samples: Standard when cell expected frequencies fall below 5.
  • 2x2 Contingency Table: Designed for binary independent groups and outcomes.
3

Core Idea

We calculate hypergeometric probabilities for all possible table configurations that share the same row and column totals:

P = (R1! * R2! * C1! * C2!) / (a! * b! * c! * d! * N!)

By summing up the probabilities of the observed table and all tables more extreme, we obtain an exact p-value.

4

Hypotheses

H0: No association exists between the row and column classifications.
Ha: Rows and columns are significantly associated.
5

How it works

  1. Fix row and column totals.
  2. List all possible cell combinations.
  3. Compute the probability of each combination using the factorials.
  4. Sum probabilities of all tables with probability <= observed probability.
6

Assumptions

📊 Fixed Margins: Historically assumes row/column totals are fixed.
👤 Independence: Mutually exclusive categorical sorting.
7

Effect Size

Association strength is represented via the **Odds Ratio**: OR = (a * d) / (b * c). Values departing heavily from 1.0 indicate strong treatment effects.

8

Quick Example

GroupSuccessFailure
Treatment82
Control37
Interactive Sandbox

Fisher's Exact Live Laboratory

Vary the cell counts (0 to 15) to watch individual dots shuffle and calculate exact probability sums.

Cell A (Treatment Success)8
Cell B (Treatment Failure)2
Cell C (Control Success)3
Cell D (Control Failure)7
Hypergeometric classification of individual subject dotsFour quadrants: A (Top Left), B (Top Right), C (Bottom Left), D (Bottom Right)
A=8B=2C=3D=7
Calculations Output
MetricValue
Total Sample Size (N)20
Observed Table Probability (Pobs)0.032151
Odds Ratio (ad / bc)9.3333
p-value (two-tailed)0.06978
Exact Inference

Not Significant No significant association is confirmed by exact probability calculations (p = 0.06978).

The 12-Stage Precision Workflow
01Exact Independence
Hypotheses
We test the null of random distribution against the discovery of a non-random clustering—auditing the *actual* probability rather than an estimate.
02Fixed Margins
Assumptions
The 'Conditional Mandate': The test assumes the row and column totals are fixed—the mathematical basis for the hypergeometric logic.
03The Sparsity Signal
Diagnostics
Identifying the 'Chi-Square Failure'—when more than 20% of your expected counts are under 5, Fisher is the only valid path.
04focus
Testing the association between a Rare Mutation (Yes/No) and FlowMotion Response (Success/Failure) in a tiny N=15 pilot group.
05Boschloo Pivot
Alternatives
Knowing when to switch to Boschloo’s test if you need more power and your margins aren't strictly fixed by design.
06Hypergeometric Strike
Significance
Calculating the cumulative probability of all possible tables 'more extreme' than yours—the ultimate precision strike on the p-value.
07Odds Ratio (OR)
Effect Size
Interpreting the strength of the association via Odds Ratios, often reported with 'Exact' confidence intervals for absolute rigor.
08Lean Discovery
Sample Size
Exploiting the model's peak performance in samples as small as N=5, where large-sample theories mathematically collapse.
09The Exact Statement
Reporting
Reporting the p-value as 'Exact': 'A significant association was found (Fisher's Exact Test p = .034).'
10Fisher.Test Logic
Software
Executing 'fisher.test' or 'stats.fisher_exact', ensuring the algorithm calculates the two-tailed probability for discovery.
11focus
Avoiding the error of using Fisher for very large tables/samples—where the computational cost explodes and Chi-Square is more efficient.
12focus
Tracing the model back to R.A. Fisher and the famous 'Lady Tasting Tea' experiment that defined experimental exactness.
01Hypothesis test logic

Hypotheses

Pragmatic null and alternative hypotheses defined in mathematical notation.

A hypothesis is a question sharpened to a point. Ambiguity is the enemy of inference.
Logic Core
Null · H₀

H₀: Odds ratio = 1 (no association between row and column variables)

Alternative · Hₐ

Hₐ: OR ≠ 1 (association exists; can also test OR > 1 or OR < 1)

Why it matters association

Tests independence in 2×2 contingency tables using exact hypergeometric distribution. Unlike chi-square, provides exact p-value valid for any sample size, especially when n < 20 or expected frequencies < 5.

02Model diagnostics

Assumptions

The core mathematical criteria needed to ensure that statistical testing remains unbiased and valid.

Build your analysis on rock, not sand. Verify the mathematical foundation before building the model.
Integrity Shield
6
Assumptions
0
Critical / High Severity
How to check
Quick
Review study design: ensure one measurement per subject, no hierarchical structure (e.g., patients within clinics), random sampling, and no time dependencies.
Rigorous
For suspected clustering, calculate intraclass correlation (ICC). Check for spatial or temporal autocorrelation. Verify sampling scheme is independent (e.g., simple random sample, not cluster sample without adjustment).
If violated
If clustering exists, account for design effects using complex survey methods. For paired/matched data, use McNemar's test instead. For family data, use family-based association tests or mixed models with random effects. Alternatives: McNemar's test (paired 2×2), Cochran-Mantel-Haenszel (stratified 2×2), GEE for clustered binary data, mixed-effects logistic regression for hierarchical data.
mcnemarlogistic regressiongeemantel haenszel trend
How to check
Quick
Determine study design: Were row/column totals fixed by design (case-control, clinical trial with fixed treatment allocation)? If not fixed by design, conditioning on observed margins is still valid for testing independence.
Rigorous
Review sampling scheme: (1) Both margins fixed: rare in practice. (2) One margin fixed: common (e.g., case-control fixes cases/controls). (3) Neither fixed: conditioning on observed margins valid under null hypothesis of independence (Barnard's test is alternative).
If violated
Standard Fisher's test conditions on both margins, which is conservative and widely accepted even when margins are not fixed by design. No 'fix' needed—test remains valid. Alternatives: Barnard's exact test does not condition on both margins (only one), providing higher power when neither margin is truly fixed. However, computationally intensive and not implemented in many packages. Boschloo's test is another unconditional exact alternative.
How to check
Quick
Verify data structure: two rows × two columns. Each variable must be dichotomous. Count rows and columns in contingency table.
Rigorous
Check for hidden categories or polytomous variables that have been collapsed. Ensure binary categorization is meaningful and not artificially dichotomized from continuous data without substantive rationale.
If violated
If variables have >2 categories, collapse into 2 categories based on substantive theory (e.g., combine 'low' and 'medium' vs 'high'). Document rationale for dichotomization. Alternatives: For r×c tables: chi-square test of independence (if expected frequencies adequate), G-test, Fisher-Freeman-Halton exact test (r×c extension, computationally intensive), or exact tests via Monte Carlo simulation (MCMC).
chi square independence
How to check
Quick
Verify that sum of all four cells equals total sample size. Check for missing data or 'unknown' categories. Ensure coding scheme has no overlap (e.g., 'exposed' vs 'unexposed' with no middle ground).
Rigorous
Review raw data for ambiguous classifications. Cross-tabulate with secondary variables to detect misclassification. Check consistency of coding across data collection time points or sites.
If violated
Exclude observations with missing data on either variable (complete case analysis). Recode ambiguous cases consistently based on pre-specified rules. If overlap exists, redefine categories to ensure mutual exclusivity. Alternatives: Multiple imputation for missing data in contingency tables (use categorical imputation methods). Sensitivity analysis excluding vs including ambiguous cases with different coding rules.
How to check
Quick
Determine whether variables are naturally binary (yes/no, exposed/unexposed, case/control) or artificially dichotomized from ordinal/continuous scales. Check if dichotomization is theory-driven or data-driven.
Rigorous
If dichotomization is used, test sensitivity to cut-point choice: vary threshold and see if conclusions change. Compare effect sizes using continuous vs dichotomized predictor. Review literature for standard dichotomization practices in field.
If violated
Use established clinical or theoretical cut-points (e.g., BMI ≥30 for obesity, age ≥65 for elderly). Pre-specify cut-points before data analysis. Avoid median splits or data-driven dichotomization. Alternatives: Maintain continuous scale and use logistic regression (more power, no information loss). Use ordinal logistic regression for ordinal predictors. For multiple categories, use chi-square test or ordinal methods.
logistic regression
How to check
Quick
Check total sample size n. For n < 20 or any expected cell count < 5, Fisher's exact is preferred. For n > 1000 with all expected cells ≥5, chi-square is more efficient and less conservative.
Rigorous
Calculate expected frequencies under independence: E_ij = (row_i_total × col_j_total) / n. Count cells with E_ij < 5. If any < 5 or n < 40, use Fisher's exact. Conduct power analysis for sample size.
If violated
For very small n, acknowledge low power in interpretation. Consider combining data from multiple sources or extending data collection. For large n with expected frequencies adequate, use chi-square (less conservative, more efficient). Alternatives: Mid-p correction for Fisher's exact reduces conservatism. For large n, chi-square with continuity correction or without (for n > 100). Bayesian methods for small samples provide more nuanced inference than p-values.
fisher exact
03Residual Forensics

Diagnostics

Checking residual plots and indices to examine model deviations and ensure standard error integrity.

Trust, but verify. The outliers often hold more truth than the averages.
System Health
Essential checks
  1. Calculate and report odds ratio with exact confidence interval
  2. Verify 2×2 table structure and check for zero cells
  3. Calculate expected frequencies to confirm chi-square would be inappropriate
  4. Report two-tailed and one-tailed p-values as appropriate
  5. Check total sample size and individual cell counts
Recommended checks
  1. Visualize contingency table with mosaic plot or grouped bar chart
  2. Compare Fisher's exact p-value with chi-square p-value (if n adequate)
  3. Plot odds ratio with exact confidence intervals (forest plot)
  4. Calculate relative risk (if cohort study) or risk difference
  5. Sensitivity analysis: mid-p adjustment to reduce conservatism
  6. Check for Simpson's paradox if stratifying variables exist
  7. Bootstrap confidence intervals for effect sizes as robustness check
  8. Plot proportion differences with exact confidence intervals
  9. Calculate and report number needed to treat (NNT) if intervention study
04Live Instances

Applied Minds

Review concrete study examples, data layout guidelines, and copy executable syntax scripts.

Theory is the map. Practice is the terrain. Simulation bridges the gap.
Applied Wisdom
Example 01

Treatment Effect on Recovery (n=20)

A pilot randomized controlled trial evaluating a new treatment for acute bronchitis. With n=20 patients (10 per group), expected cell frequencies are <5, making Fisher's exact test the appropriate choice. We'll calculate exact p-values, odds ratio with confidence intervals, and compare with chi-square to demonstrate why Fisher's test is necessary.

05Tactical Pivots

Alternatives

Structured fallback pathways for choosing alternative tests when normality or slopes requirements fail.

When the path is blocked, pivot. Rigor is not rigidity; it is the intelligent adaptation to reality.
Adaptive Strategy
Measurement Precision Ladder Ideal · Sparse Binary Grid
Ratio / Interval
Consider Pearson r or OLS. Categorical conversion of tiny samples is 'Discovery Suicide'.
Extreme Data Loss
Binary
Maintain Fisher logic. The definitive standard for small-sample categorical association.
Peak Signal
Multi-Nominal
Pivot to Fisher-Freeman-Halton if your sparse grid is larger than 2x2.
Logic Collapse
Temporal Trajectory Audit Static Sparse Snapshot
Static Audit
Single point audit.
Stay with Fisher's Exact. Calculate exact probability without large-sample approximations.
Matched Sparse
Paired flips.
Pivot to Exact McNemar's Test to model categorical change in tiny paired cohorts.
Adaptive Technical Safeguards · adaptive safeguards
large sample detected
  • Chi-Square Independence — Return to the most efficient strike once expected cell counts ≥ 5.
unfixed margins
  • Barnard's Exact Test — A more powerful 'Unconditional' alternative if rows/columns aren't fixed by design.
conservatism bias
  • Mid-P Fisher — Utilize the mid-p value to reduce the inherent conservatism of the exact strike.
06Adjusted Comparisons

Post-hoc

Group mean comparisons and correction controls (e.g. Tukey HSD, Bonferroni) to protect against Family-Wise Error Rates.

The omnibus test opens the door; post-hoc analysis explores the room.
Forensic Detail
Adjusted Comparisons
  • Compare one-tailed vs two-tailed p-values based on hypothesis
  • Calculate odds ratio with exact confidence intervals
  • Compare with chi-square (should be similar for larger samples)
  • Stratified Fisher's exact (Mantel-Haenszel) for confounders
  • Mid-p correction for less conservative inference
Interpretation Guidelines

Fisher's exact test analyzes 2x2 tables. With only 2 groups, post-hoc tests are not applicable.

07Standardized scale impact

Effect Size

Understanding effect sizes (e.g., Cohen's d, Partial Eta-Squared) and clinical impact benchmarks.

Significance is noise. Magnitude is the signal. Measure the impact, not just the probability.
Impact Magnitude
formula

OR = (a×d) / (b×c) where a,b,c,d are cell counts

interpretation

OR=1: no association; OR>1: positive association; OR<1: negative association

note

Always report with exact 95% CI from Fisher's test. OR is only directly interpretable for case-control; use RR for cohort studies.

confidence intervals

Use exact method from Fisher's test (default in R/Python). Exact CI based on hypergeometric distribution.

formula

RR = (a/(a+b)) / (c/(c+d)) = risk in exposed / risk in unexposed

interpretation

RR=1: no difference; RR>1: higher risk in exposed; RR<1: lower risk in exposed

note

Appropriate for cohort studies or RCTs, not case-control. More interpretable than OR for most audiences.

confidence intervals

Calculate using log transformation: exp(log(RR) ± 1.96×SE(log(RR)))

formula

RD = (a/(a+b)) - (c/(c+d))

interpretation

Absolute difference in risk/probability between groups, in same units as outcome (e.g., 0.20 = 20 percentage point difference)

note

Preferred for clinical interpretation as it indicates absolute benefit. Basis for calculating NNT = 1/RD.

confidence intervals

Wald method: RD ± 1.96×SE(RD) or exact binomial method

small

0.1

medium

0.3

large

0.5

formula

φ = sqrt(χ² / n) for 2×2 table

note

Standardized effect size analogous to correlation coefficient, ranges -1 to +1

formula

NNT = 1 / |Risk Difference|

interpretation

Number of patients to treat to achieve one additional positive outcome (or prevent one negative outcome)

note

Only meaningful when RD is statistically significant and treatment effect is beneficial. Round up to nearest integer.

Recommended Metric: Odds Ratio with exact 95% CI (primary); also report RR and NNT for cohort/RCT studies
Small
0.2
Medium
0.5
Large
0.8
0.50
Odds Ratio with exact 95% CI (primary); also report RR and NNT for cohort/RCT studies
Recommended Measure
5
Available Metrics
ReportUse Odds Ratio with exact 95% CI (primary); also report RR and NNT for cohort/RCT studies to represent clinical impact magnitude.
08Statistical Power

Sample Size

Guidelines for minimum sample requirements and power analysis parameters.

An underpowered study is an ethical failure. Respect the data by collecting enough of it.
Power Protocol
Floor Requirements

The 'Small-Sample Safe Harbor': Fisher's Exact is valid for total samples as small as N=5, where large-sample tests (Chi-Square) would collapse mathematically.

Effect SizeParametersRequired n
Small Effectp1=.50 vs p2=.60 (Small)n ≈ 780 total
Medium Effectp1=.50 vs p2=.75 (Medium)n ≈ 120 total
Large Effectp1=.50 vs p2=.90 (Large)n ≈ 40 total
Key considerations

The 'Conservatism Strike': Fisher's Exact is slightly more conservative than Chi-Square. If you are near the power threshold, increase N by 5-10% to compensate for the 'Exact' penalty.

G*Power StrategyBenchmark: Exact → Proportions: Inequality, two independent groups (Fisher's exact test). Parameters: Group 1 Rate (p1), Group 2 Rate (p2), α = .05, Power = .80. Note: Power is driven by the absolute difference in probabilities.
09APA narrative blueprint

Reporting

How to compile statistical results into publication prose matching APA and journal style guides.

Data does not speak for itself. It requires a translator. Be clear, be precise, be honest.
Narrative Arc
Worked APA paragraph example
Fisher's exact test was performed to evaluate the association between treatment condition and recovery outcome in a small pilot randomized controlled trial (n=20). Given the small sample size and expected cell frequencies below 5, Fisher's exact test was chosen over chi-square test of independence. The analysis revealed a statistically significant association between treatment and recovery (exact p = .048, two-tailed). Patients in the treatment group had significantly higher odds of recovery compared to the control group (OR = 6.00, 95% exact CI [1.07, 33.78]). The relative risk was 2.00, indicating that treatment doubled the probability of recovery. The risk difference was 0.40 (40 percentage points), yielding a number needed to treat of 2.5 (i.e., treating 3 patients results in approximately one additional recovery). While these findings are promising, the small sample size (n=20) and wide confidence intervals warrant replication in a larger confirmatory trial.
Reusable template

Fisher's exact test was conducted to examine the association between variable 1 and variable 2 in a 2×2 contingency table (n=XX). The test revealed a significant / no significant association (exact p = .XXX, two-tailed). The odds ratio was OR = X.XX (95% exact CI X.XX, X.XX), indicating interpretation of OR. If significant: The number needed to treat was NNT = X, suggesting that treating X patients would result in one additional [outcome.]

10Exhibit Builder

Manuscript Lab

Copy standard summary tables and forensic reporting grids to outline analysis details.

Table 1: Fisher's Exact Test for Rare Adverse Events
GroupEvent PresentEvent AbsentTwo-tailed pOdds Ratio
Treatment2 (5%)18 (45%).0240.12
Control10 (25%)10 (25%)
Note. N = 40. Used because 50% of cells have expected counts < 5.
p = .024Identifies a Rare but Real Effect. Even with a small sample, the treatment significantly prevents the adverse event.
Header glossary

The Exact Probability. Calculates the specific chance of observing this exact distribution (or more extreme) without relying on large-sample approximations.

The Risk Guard. 0.12 indicates that the treatment group has 88% lower odds of the event than the control.

11Algorithmic Logic

Command Center

Syntax libraries and function parameters for executing calculations in stats packages.

Code is the modern laboratory. Clean execution ensures reproducible discovery.
Execution Engine
# 1. Execute Fisher's Exact Test
fisher.test(table(df$group, df$event))
Library stack
R
stats
Python
scipy.stats
Elite Forensic Strike

Fisher's is 'Exact'. It doesn't approximate. If you have a 2x2 table and a computer, there is rarely a reason NOT to use Fisher's over Chi-Square.

# Generate Narrative
report::report(fisher.test(table_data))
12The Over-adjustment Trap

Common Mistakes

Analytical caveats and corrections to maintain modeling integrity.

Wisdom is learning from the failures of others. Anticipate the error before it occurs.
Defensive Logic
Why it's wrong
Chi-square test relies on large-sample approximation to the chi-square distribution. When expected cell counts fall below 5, this approximation breaks down, leading to inflated Type I error rates (actual α can be 8-12% when nominal α=5%). Fisher's exact test provides the gold standard for small samples because it calculates exact probabilities from the hypergeometric distribution without approximation.
The correction
Calculate expected frequencies: E_ij = (row_i_total × col_j_total) / n for each cell. If ANY cell has expected count <5 OR total n <40, use Fisher's exact test. Software default: In R, fisher.test(); in Python, scipy.stats.fisher_exact(). Report: 'Fisher's exact test was used due to small expected frequencies (minimum expected = 3.2).' Include exact p-value and odds ratio with exact 95% CI.
Why it's wrong
The odds ratio point estimate without confidence interval provides incomplete information about precision and uncertainty. Many analysts report OR but forget the CI, or worse, use asymptotic (Wald) CI which is inaccurate for small samples. Fisher's test provides exact CI based on hypergeometric distribution, which should always be reported alongside OR.
The correction
Always report: 'OR = X.XX (95% exact CI [X.XX, X.XX])'. In R, fisher.test() automatically provides exact CI in $conf.int. In Python, use statsmodels.stats.contingency_tables.Table2x2(table).oddsratio_confint(method='exact'). Interpret CI: if CI includes 1.0, association is not significant at α=0.05. Wide CIs indicate high uncertainty due to small sample size.
Why it's wrong
Fisher's exact test can be one-tailed (alternative='greater' or 'less') or two-tailed (alternative='two.sided'). One-tailed tests are appropriate when direction is predicted a priori, but many analysts misuse them to achieve significance. Two-tailed is default and more conservative. Failing to specify or reporting wrong p-value (e.g., one-tailed when two-tailed was intended) inflates Type I error.
The correction
Pre-specify hypothesis before analysis: (1) Two-tailed (H₁: OR ≠ 1): most common, tests any association. Use unless strong a priori directional hypothesis. (2) One-tailed (H₁: OR > 1 or OR < 1): only if direction predicted from theory/prior research AND specified pre-data. Always report which test used: 'Fisher's exact test, two-tailed' or 'Fisher's exact test, one-tailed (H₁: treatment superior)'. One-tailed p-value ≈ half of two-tailed if result is in predicted direction.
Why it's wrong
Fisher's exact test assumes independence between observations. With paired or matched data (e.g., before/after measurements on same subjects, matched case-control pairs), observations are correlated. Using Fisher's test ignores pairing structure, loses power, and can give misleading results. The appropriate test for paired 2×2 tables is McNemar's test, which focuses on discordant pairs.
The correction
Identify study design: Independent samples (different subjects in each group) → Fisher's exact test. Paired/matched data (same subjects measured twice, or matched pairs) → McNemar's test. Example: Before/after treatment (paired) requires McNemar's, not Fisher's. In R: mcnemar.test(table). Report: 'McNemar's test was used to account for paired nature of data (exact p = .XXX).'
Why it's wrong
Odds ratio (OR) and relative risk (RR) are different effect sizes. OR compares odds (ratio of probabilities), RR compares probabilities directly. When outcome is rare (<10%), OR ≈ RR. But for common outcomes (>20%), OR overestimates RR and can be misleading. In cohort studies and RCTs, RR is more interpretable and clinically meaningful, yet many analysts only report OR from Fisher's test.
The correction
For case-control studies: OR is appropriate (cannot calculate RR). For cohort studies/RCTs: calculate and report BOTH OR and RR. RR = [a/(a+b)] / [c/(c+d)] where a,b,c,d are cell counts. Example reporting: 'Fisher's exact test: OR=6.00 (95% CI [1.07, 33.78]), p=.048. For clinical interpretation: RR=2.00, indicating treatment doubled recovery probability.' When OR > RR, note: 'OR overestimates RR for this common outcome (40% baseline rate).' Also report risk difference and NNT for absolute effect size.
Why it's wrong
Fisher's exact test can theoretically extend to larger r×c contingency tables (Fisher-Freeman-Halton test), but computation becomes prohibitively expensive for tables larger than ~5×5 or with large cell counts (>100). Many software packages either fail, time out, or provide approximate results (Monte Carlo) without warning. Analysts may assume results are exact when they are actually approximations.
The correction
Fisher's exact test is ONLY truly exact for 2×2 tables. For r×c tables where r or c > 2: (1) If expected frequencies ≥5 in all cells, use chi-square test of independence (accurate and fast). (2) For small expected frequencies in large tables, use Monte Carlo simulation of exact test: in R, chisq.test(table, simulate.p.value=TRUE, B=10000); in Python, use scipy with monte_carlo. (3) Consider collapsing categories to create 2×2 table if substantively meaningful. Always report: 'Monte Carlo approximation to exact test (10,000 simulations)' when simulation is used.
Why it's wrong
Zero cells in 2×2 table can arise from: (1) Sampling zero: no observations happened to fall in cell (random). (2) Structural zero: impossible by design (e.g., male pregnancy). Structural zeros violate assumptions and make OR undefined or infinite. Fisher's test can technically handle zeros but results may be uninterpretable. Adding 0.5 to all cells (continuity correction) is common but controversial.
The correction
Inspect table for zero cells. If structural zero: reconsider study design or hypothesis—test may not be meaningful. If sampling zero due to small n: Fisher's exact test is still valid but interpret cautiously (wide CIs, OR may be extreme or undefined). Do NOT automatically add 0.5 to cells; report actual data. If zero cell: 'One cell had zero counts, resulting in OR [value] with wide CI [X.XX, Inf], indicating [interpretation].' Consider exact conditional test via exact2x2 package in R for handling zeros more rigorously.
Why it's wrong
Fisher's exact test is conservative, meaning the actual Type I error rate is often lower than the nominal α (e.g., actual α ≈ 0.03 when nominal α = 0.05). This conservatism increases power loss, especially for small samples or near-equal marginal distributions. Mid-p correction addresses this by averaging the probability of observed table and more extreme tables, reducing conservatism while maintaining Type I error close to nominal α.
The correction
Be aware of conservatism: Fisher's exact test may fail to detect real associations in small samples. For increased power with minimal Type I error inflation, use mid-p correction: in R, exact2x2::exact2x2(table, midp=TRUE). Report: 'Mid-p Fisher's exact test (p = .XXX) was used to reduce conservatism while maintaining valid Type I error rate.' Compare standard and mid-p results for sensitivity analysis. Mid-p is not universally available in all software but is recommended by many statisticians for 2×2 tables.
13Academic Lineage

References

Scholarly lineage and citation keys grounding the statistical framework.

We stand on the shoulders of giants. Honor the source of the method.
Academic Lineage
[1]
[2]
[3]
[4]
[5]
[6]
Approximations are for the masses; exactness is for the elite. When the data is small, the math must be perfect. Use Fisher to ensure your p-value is a fact, not an estimate.
The Interpretive Rigor Directive
statminds · Fisher'sMind reference · v2.2 · updated 2026-01-1715 of 15 sections