Choosing a test · Choose a method

One-tailed vs two-tailed test: which to use, and what switching costs

Use a two-sided test unless you recorded the direction before the data and would treat an opposite result as no effect. Worked example, simulation, sample sizes and templates.

By Licklider · Published · Last reviewed · How this page was made · Markdown

On this page
  1. The decision rule
  2. What the choice does to one result
  3. Choosing the side after the data doubles false positives
  4. How many animals a one-sided test saves
  5. When there are no tails to choose
  6. Run it in R and Python
  7. If a reviewer asks
  8. Report it
  9. Check what an AI assistant ran
  10. References

Quick answer. Use a two-sided test by default. A one-sided test is defensible only when both of these hold: you recorded the direction before collecting any data, and you would treat a result in the opposite direction — however large — exactly like no effect. If either condition fails, report the two-sided p-value, even when the one-sided p would cross 0.05; choosing the side after seeing the data doubles the false-positive rate from 5% to 10%. Already answering a reviewer about sidedness? The reply templates are in If a reviewer asks.

Terms used below. A two-sided (two-tailed) test asks whether the groups differ in either direction. A one-sided (one-tailed) test asks only whether one named group is higher (or lower), and gives no evidence about the other direction. The false-positive rate is how often a test declares a difference when there is none; at α = 0.05 it should be 5%. Power is the chance of detecting a true difference of a given size. α (alpha) is the false-positive rate you accept, usually 0.05. A 95% confidence interval (CI) is the range of differences compatible with the data; a one-sided confidence bound is a single bound on one side. Recorded or dated protocol means a document with a date that shows the direction before any data were collected (a registration, an ethics application, a lab-book entry).

The decision rule

The two conditions come from methods guidance that agrees on the point. Ruxton and Neuhäuser ask authors to explain why they are interested in one direction only, and “why the authors would treat a large observed difference in the unexpected direction no differently from a difference in the expected direction that was not strong enough to justify rejection of the null hypothesis” (Ruxton & Neuhäuser 2010). The GraphPad Prism guide puts the same two conditions as a checklist and adds that a “prediction” made after seeing the data does not count (GraphPad).

Your situation Use
No direction written down before the data Two-sided
Direction expected, but a large change the other way would interest or worry you (toxicity, a paradoxical response) Two-sided
Direction written in a dated protocol, and an opposite result would lead to the same decision as no effect One-sided is defensible; state the reason in Methods
Regulatory or confirmatory trial, with the direction and method fixed in the protocol If the protocol fixed the direction and method in advance: two-sided at 0.05, or one-sided at 0.025, which gives the same evidence threshold (ICH E9)
Three or more groups, or a chi-square test across more than two categories No side to choose: the F or χ² test already looks for any difference (a 2 × 2 table still has a direction)

In practice most lab experiments fall in the second row, because a drug that unexpectedly raised glucose would itself be a finding. A survey of two ecology journals found one-tailed tests in at least 24% (Animal Behaviour) and 13% (Oecologia) of eligible articles and concluded that, by its criterion, all of those uses “seem invalid” (Lombardi & Hurlbert 2009, abstract).

Do this: decide the side when you write the protocol, write it down with the reason, and use two-sided whenever the opposite result would matter to you.

What the choice does to one result

A constructed experiment: fasting glucose in 8 vehicle-treated and 8 drug-treated mice, compared with Welch’s t-test (our default for two independent groups; see Welch vs Student). The data were chosen so that the two-sided p lands between 0.05 and 0.10.

Test Result
Difference, drug − vehicle −0.83 mmol/L (two-sided 95% CI −1.72 to 0.07)
Two-sided Welch t-test t(13.07) = −2.00, p = 0.067
One-sided, predicted “drug lower” p = 0.034 (exactly half of 0.067)
One-sided, predicted “drug higher” p = 0.966

The one-sided p is half the two-sided p when the effect goes the predicted way, and close to 1 when it goes the other way. That last row is the cost: had glucose clearly risen instead, a “drug lower” test would report a p-value close to 1, and that test cannot support a claim about the rise.

The one-sided 95% confidence bound (difference below −0.09 mmol/L) equals the upper end of the two-sided 90% interval, so a one-sided test at 0.05 and a two-sided test at 0.10 draw the same line: choosing the side after the data quietly relaxes α to 0.10, and recording the direction beforehand is what makes a one-sided test legitimate. Without a direction recorded before the experiment, the honest result here is p = 0.067 with its interval; p = 0.06 or “not significant” shows how to write it up.

Do this: report the two-sided p and the 95% CI unless your protocol named the direction; never present the one-sided p as a rescue for a borderline two-sided result.

Choosing the side after the data doubles false positives

We simulated 100,000 experiments with no true difference (8 mice per group, Welch’s t-test, seed 20261110) and applied five testing policies.

Policy False-positive rate
Two-sided at 0.05 4.8%
One-sided at 0.05, direction fixed in advance 4.8%
Two-sided first; if not significant, one-sided in whichever direction the data went 9.7%
One-sided planned, but a two-sided “significant” result in the other direction also reported 7.2%
One-sided at 0.025 (the regulatory convention) 2.4%

The switching analyst in the third row rejects whenever the two-sided p is below 0.10, so the error rate doubles; other switching habits, like the fourth row, raise it less but still above 5%. In this simulation (8 per group, equal spreads) Welch’s test was slightly conservative (its false-positive rate landed just under the 5% it promises), which is why the honest policies sit at 4.8% rather than 5.0%. Download the simulation code and its output to rerun it.

Do this: keep the two-sided result when a reviewer or co-author proposes switching to one-sided after the analysis, and say why in one sentence (template below).

How many animals a one-sided test saves

Animals per group for a two-sample t-test at α = 0.05 (Student’s version, which assumes equal spreads in the two groups, as in the sample size calculator; Welch’s test, our default for the analysis, needs about the same numbers when spreads and group sizes are equal); d is the difference divided by the within-group SD.

d 80% power: two-sided 80% power: one-sided 90% power: two-sided 90% power: one-sided
0.5 64 51 86 70
0.8 26 21 34 28
1.0 17 14 23 18
1.5 9 7 11 9
2.0 6 4 7 6

SciPy’s noncentral t, R’s pwr package and the calculator give identical numbers. With the direction recorded before the experiment and the decision rule above met, the saving at 80% power is about 18–22% for d between 0.8 and 1.5 (17 → 14 mice per group at d = 1, an 18% saving), bought by giving up any test of the opposite direction. An ethics committee or reviewer will ask why that trade is acceptable, so plan it only when the decision rule above holds.

Do this: plan the study for the two-sided test, reserve the calculator’s one-sided setting for a protocol that meets the rule above, and compare the two numbers for your own design.

When there are no tails to choose

With three or more groups the ANOVA F-test asks whether any group differs, so there is no side to pick; GraphPad’s guide notes that the one- or two-tail choice “makes no sense” for ANOVA. The same holds for a chi-square test across more than two categories. A directional question about specific groups is a planned contrast, tested two-sided unless the decision rule holds; see ANOVA significant but post hoc not.

Do this: state the comparisons you planned for three or more groups, and test them as contrasts or post hoc tests.

Run it in R and Python

Every tool listed below runs two-sided by default.

from scipy import stats

vehicle = [10.4, 9.1, 11.2, 10.0, 9.6, 11.8, 10.7, 9.4]   # fasting glucose, mmol/L
drug = [9.8, 8.6, 10.1, 9.0, 10.3, 8.4, 9.5, 9.9]

two = stats.ttest_ind(drug, vehicle, equal_var=False)                     # two-sided (the default)
one = stats.ttest_ind(drug, vehicle, equal_var=False, alternative="less")  # only if planned: drug < vehicle
print(f"two-sided: t({two.df:.2f}) = {two.statistic:.2f}, p = {two.pvalue:.3f}")
print(f"one-sided: p = {one.pvalue:.3f}")
ci = two.confidence_interval(0.95)
print(f"difference {sum(drug)/len(drug) - sum(vehicle)/len(vehicle):.2f} mmol/L, 95% CI {ci.low:.2f} to {ci.high:.2f}")
vehicle <- c(10.4, 9.1, 11.2, 10.0, 9.6, 11.8, 10.7, 9.4)   # fasting glucose, mmol/L
drug    <- c(9.8, 8.6, 10.1, 9.0, 10.3, 8.4, 9.5, 9.9)

t.test(drug, vehicle)                         # Welch, two-sided (both are R's defaults)
t.test(drug, vehicle, alternative = "less")   # only if planned: drug < vehicle

The direction refers to the first group minus the second: alternative="less" tests drug < vehicle when drug comes first. Swapping the order flips the meaning, so check it against your protocol.

Software Argument Default
R t.test, wilcox.test alternative = "two.sided" / "less" / "greater" "two.sided"
R pwr::pwr.t.test alternative "two.sided"
SciPy stats.ttest_ind, stats.mannwhitneyu alternative="two-sided" / "less" / "greater" "two-sided"
statsmodels ttest_ind, TTestIndPower().solve_power alternative "two-sided"

Defaults checked in R 4.3.3 (pwr 1.3-0), SciPy 1.18.1 and statsmodels 0.15.0.

Do this: keep alternative at its default; where your protocol names a direction, put a comment with the protocol reference next to the "less" or "greater".

If a reviewer asks

“Why did you use a one-sided test?” — answer only if the protocol supports it:

The direction was specified before data collection in [protocol or registration, with date]: [reason, e.g. “no mechanism exists by which the compound could lower serum creatinine, and a decrease would have led to the same decision as no change”]. We therefore used a one-sided Welch t-test at α = 0.05. For completeness, the two-sided p-value is [value].

If you have no dated document, replace the one-sided result with the two-sided one in the revision; the reviewer has found a genuine problem:

We agree. The direction was not recorded before data collection, so we now report the two-sided Welch t-test: [difference, 95% CI, p]. [The conclusion is unchanged. / With the two-sided test the difference is no longer statistically significant at 0.05; we have revised the text to report the estimate and its interval.]

“Could you use a one-sided test?” (suggested after the analysis):

We kept the two-sided test because the direction was not specified before data collection; switching after seeing the data would double the false-positive rate. We report the estimate and its 95% confidence interval [values].

If the direction was recorded in a dated document before data collection and the analysis was planned two-sided, keep it anyway and say so:

Our [protocol, dated …] stated the expected direction, but the planned analysis was two-sided; we report it as planned, with the estimate and its 95% confidence interval [values].

Do this: copy the matching template, fill every bracket from your protocol and output, and add the two-sided p even when the one-sided test was justified.

Report it

Groups were compared with two-sided Welch t-tests at α = 0.05.

or, when the decision rule holds:

The prespecified hypothesis was that [group] would have lower [outcome] than [group] ([protocol, date]); because an increase would have led to the same conclusion as no change, we used a one-sided Welch t-test at α = 0.05.

Do this: name the side in Methods for every test, and give the protocol reference for any one-sided test.

Check what an AI assistant ran

AI-written code can set alternative="greater" or "less" without saying why, and that silently halves the p-value. Search the code for alternative, one-sided or tail, and also for equal_var (SciPy’s ttest_ind runs Student’s test by default; Welch’s test needs equal_var=False). If you find a one-sided test, check three things: is the direction in your protocol, does it match the group order in the call, and does the text you were given say “one-sided”? If any answer is no, rerun with the default and report the two-sided result.

Do this: ask the assistant to state the side and the group order for every test before you accept a p-value.

References

  • GraphPad Software. One-tail vs. two-tail P values. GraphPad Prism 11 Statistics Guide. graphpad.com (accessed 2026-11-10).
  • ICH (1998). E9: Statistical Principles for Clinical Trials, Step 4 version, §5.5. database.ich.org
  • Lombardi CM, Hurlbert SH (2009). Misprescription and misuse of one-tailed tests. Austral Ecology 34(4):447–468. doi:10.1111/j.1442-9993.2009.01946.x (cited from the abstract)
  • Ruxton GD, Neuhäuser M (2010). When should we use one-tailed hypothesis testing? Methods in Ecology and Evolution 1(2):114–117. doi:10.1111/j.2041-210X.2010.00014.x (cited from the summary)

How this page was made

  • Written and published by Licklider. The decision rule cites a peer-reviewed methods paper, a survey of published papers, the ICH E9 guideline and the GraphPad Prism statistics guide, listed under References; quoted wording was checked against the source text, and sources we could read only in part are cited at that level.
  • The worked example uses constructed data. Its numbers, the simulation and the sample-size table were produced by stored code (Python 3.13 with SciPy 1.18.1 and statsmodels 0.15.0; R 4.3.3 with pwr 1.3-0); the two languages agree, and the sample sizes match this site's calculator.
  • Separate review passes checked the statistics, the citations and readability before publication.