The chi-square test is the default choice for testing whether two categorical variables are related. But it relies on an approximation that breaks down when your sample is small. When one or more cells in your table have very low expected counts, the p-value chi-square gives you can be misleading. That is exactly when Fisher’s exact test earns its place — it calculates an exact p-value, with no approximation and no minimum-count rule to worry about. This tutorial covers when chi-square fails, how to run Fisher’s exact test in SPSS step by step, how to read the output, and how to report the result in APA style.
When does the chi-square test fail?
The chi-square test of independence compares the counts you observed with the counts you would expect if the two variables were unrelated. The test statistic follows a chi-square distribution only approximately, and the approximation is good when expected counts are reasonably large. The standard rule is:
- No more than 20% of the cells should have an expected count below 5.
- No cell should have an expected count below 1.
When your data break either rule, the chi-square p-value becomes unreliable — usually too small, which means you may claim a significant association that is not really there. This happens most often with small samples, rare outcomes, or uneven groups. A 2 × 2 table with only 20 or 30 cases is a classic example. Take a small pilot study: twenty patients receive either a new drug or a placebo, and each either recovers or does not.
| Recovered | Not recovered | Total | |
|---|---|---|---|
| New drug | 8 | 2 | 10 |
| Placebo | 3 | 7 | 10 |
| Total | 11 | 9 | 20 |
At first glance the drug looks better: 80% of the drug group recovered, against 30% of the placebo group. But the expected count for two of the four cells is 4.5, below 5 — so the chi-square approximation is on shaky ground. This is a textbook case for Fisher’s exact test.
What is Fisher’s exact test?
Fisher’s exact test calculates the exact probability of getting a table as extreme as yours — or more extreme — if the two variables were truly unrelated. Instead of approximating a distribution, it works out the probabilities directly from the hypergeometric distribution, using your table’s fixed row and column totals.
Because the p-value is exact rather than approximated, the test has no minimum expected-count requirement. That makes it the safe choice for small samples and sparse tables. It is most commonly used with 2 × 2 tables. For larger tables, SPSS can run the Fisher-Freeman-Halton extension, which applies the same exact logic to tables bigger than 2 × 2, although it can be slow with large samples. Note that the test is conservative with very small samples, so it can be slightly harder to reach significance than chi-square — the price of an exact answer.
Assumptions of Fisher’s exact test
Before you run the test, check that your data meet its assumptions:
- Two categorical variables. Both variables must be nominal or ordinal — for example, treatment group (drug vs placebo) and outcome (recovered vs not recovered).
- Independent observations. Each case appears in exactly one cell of the table. The test is not for paired or repeated-measures data.
- Mutually exclusive categories. Each observation belongs to one category of each variable and cannot fall into two cells at once.
- Random sampling. As with any significance test, the cases should be a random sample from the population you want to generalise to.
How to run Fisher’s exact test in SPSS: click-by-click
We will use the drug-versus-placebo example above. Your data file needs two variables — a grouping variable (for example, Treatment, coded 1 = new drug, 2 = placebo) and an outcome (for example, Recovery, coded 1 = recovered, 2 = not recovered) — with one row per patient.
Follow these steps:
- Click Analyze > Descriptive Statistics > Crosstabs.
- Move Treatment into the Row(s) box and Recovery into the Column(s) box.
- Click Statistics, tick Chi-square, then click Continue. Fisher’s exact test is part of the chi-square output, so this box must be ticked.
- Click Cells. Under Counts, tick Observed and Expected. Under Percentages, tick Row and Column. Click Continue.
- Click Exact. Select Exact (rather than Monte Carlo or Asymptotic only) — this is the step most people miss; without it, SPSS will not compute Fisher’s exact test. Click Continue.
- Click OK to run the analysis.
Paste-ready SPSS syntax
If you prefer syntax, or want a record of exactly what you ran, paste this into a syntax window and run it, replacing Treatment and Recovery with your own variable names:
CROSSTABS /TABLES=Treatment BY Recovery /FORMAT=AVALUE TABLES /STATISTICS=CHISQ /CELLS=COUNT EXPECTED ROW COLUMN /COUNT ROUND CELL /METHOD=EXACT TIMER(5).
The key line is /METHOD=EXACT TIMER(5), which tells SPSS to compute exact p-values and to stop after five minutes if the calculation is taking too long. Without the /METHOD subcommand, SPSS runs the standard asymptotic chi-square only and Fisher’s exact test never appears.
How to interpret the SPSS output
SPSS produces two tables that matter. The first is the crosstabulation itself, showing the observed counts, the expected counts and the row and column percentages. Check the expected counts first: in our example two cells have an expected count of 4.5, which confirms that the chi-square approximation is questionable and Fisher’s exact test is the right choice.
The second table is the Chi-Square Tests table. Its rows mean the following:
- Pearson Chi-Square: the standard chi-square result; use it only when the expected-count rules are met. In our example it gives p = .025 — significant, but not trustworthy here.
- Continuity Correction: Yates’ correction, sometimes applied to 2 × 2 tables. It is a conservative fix, not an exact test, and most researchers now prefer Fisher’s test instead.
- Fisher’s Exact Test: the row you want. SPSS reports Exact Sig. (2-sided) and Exact Sig. (1-sided) values; report the two-sided p-value unless you had a clear directional hypothesis stated before collecting the data.
In our example, Fisher’s exact test gives a two-sided p-value of .070. That is above the usual .05 threshold, so the result is not statistically significant — even though 80% versus 30% looks like a large difference. With only 20 patients, the study simply does not have enough evidence to rule out chance. That is exactly the kind of mistake the chi-square test would have led you into: Pearson’s chi-square says p = .025, significant, while the exact test says the evidence is not strong enough. When the two disagree, trust Fisher.
Also report the direction and size of the difference in plain words: 80% of patients on the new drug recovered, compared with 30% on placebo. A p-value never tells the reader how big the difference is, so the percentages carry the practical meaning. If you want a formal effect size for a 2 × 2 table, the odds ratio is the natural choice — here the odds of recovery are about nine times higher in the drug group, though with such a small sample the confidence interval will be very wide.
Reporting in APA style (7th ed.)
APA style has no single prescribed format for Fisher’s exact test, because the test produces a p-value rather than a test statistic with degrees of freedom. The convention is to name the test, give the sample size, describe the pattern in percentages, and report the exact p-value — not a chi-square statistic, which would mix two different tests.
Here is a model sentence for our example:
A Fisher’s exact test showed no significant association between treatment group and recovery, p = .070. Recovery was more common in the new-drug group (80%, 8 of 10 patients) than in the placebo group (30%, 3 of 10 patients), but with 20 patients the difference did not reach statistical significance.
If the result is significant, the same structure applies:
A Fisher’s exact test indicated a significant association between treatment group and recovery, p = .012. Patients receiving the new drug recovered more often (80%) than patients receiving the placebo (30%).
A few style points to remember: italicise p, report the exact p-value to two or three decimal places rather than writing p < .05, and never write p = .000 — if SPSS shows .000, report it as p < .001. If you also report an odds ratio, give its 95% confidence interval. And always state that you used Fisher’s exact test because expected counts were too small for the chi-square test, so your reader knows why you chose it.
Fisher’s exact test vs chi-square: which one do you need?
| Situation | Use this test |
|---|---|
| Expected counts all 5 or above, reasonable sample size | Pearson chi-square |
| More than 20% of cells have expected counts below 5 | Fisher’s exact test |
| Any expected count below 1 | Fisher’s exact test |
| 2 × 2 table with a very small sample (under 30) | Fisher’s exact test |
| Table larger than 2 × 2 with small expected counts | Fisher-Freeman-Halton exact test |
| Paired or matched categorical data | McNemar’s test, not Fisher’s |
When in doubt, Fisher’s exact test is never wrong for a 2 × 2 table — it is valid for large samples too, just slower to compute. The practical rule is simple: check the expected counts first, and if they fail the chi-square rules, report Fisher.
Key Takeaways
- Fisher’s exact test gives an exact p-value for the association between two categorical variables, with no minimum expected-count requirement.
- Use it when chi-square fails: more than 20% of cells with expected counts below 5, any expected count below 1, or a small sample.
- In SPSS, run it through Analyze > Descriptive Statistics > Crosstabs, tick Chi-square under Statistics, and — the step people miss — select Exact in the Exact dialog.
- Read the “Fisher’s Exact Test” row in the Chi-Square Tests table and report the Exact Sig. (2-sided) p-value.
- Report the percentages alongside the p-value, and in APA style name the test, give the sample size, and report the exact p-value — never write p = .000.
Frequently asked questions
When should I use Fisher’s exact test instead of chi-square?
Use Fisher’s exact test when the chi-square assumptions fail: more than 20% of cells have expected counts below 5, any cell has an expected count below 1, or your sample is very small. If all expected counts are comfortably above 5, chi-square is fine and faster.
Can Fisher’s exact test handle tables bigger than 2 × 2?
Yes. SPSS runs the Fisher-Freeman-Halton extension for larger tables using the same Exact dialog and syntax. It works well for 2 × 3 or 3 × 3 tables with small counts, but the calculation time grows quickly with table size and sample size, so very large tables may need a time limit or a Monte Carlo estimate instead.
Why does SPSS not show Fisher’s exact test in my output?
Two common causes. First, you did not select Exact in the Exact dialog — the test is only computed when you ask for exact p-values. Second, you ran a different procedure: Fisher’s exact test appears in the Crosstabs chi-square output only. Re-run via Analyze > Descriptive Statistics > Crosstabs with the Exact option selected.
Do I report a test statistic for Fisher’s exact test?
No. Unlike chi-square, Fisher’s exact test has no test statistic or degrees of freedom to report. In APA style you name the test, give the sample size and the percentages, and report the exact p-value.
Can I still use Fisher’s exact test if my sample is large?
Yes, it is valid for large samples, but unnecessary when expected counts are large enough for the chi-square approximation, and the computation can be slow for big tables. With large samples the two tests give almost identical p-values, so chi-square is the practical choice.
Need this done on your data? Get a free quote → /services/