F-Test in Statistics

Last Updated : 8 Apr, 2026

The F-test is a statistical hypothesis testing used to compare the variances of two independent samples. It helps determine whether the variability in two populations is significantly different. The F-test is widely used in hypothesis testing, ANOVA (Analysis of Variance) and statistical model comparison in data science and analytics.

what_is_f_test_
F-Test

To properly understand the F-test, it is important to first understand the F-distribution, since the test statistic follows this distribution.

F-distribution

The F-distribution is a continuous probability distribution that arises as the ratio of two independent chi-square distributed random variables divided by their respective degrees of freedom.

It is defined by two parameters:

  • df1: degrees of freedom of the numerator
  • df2: degrees of freedom of the denominator

Formula:

F = \frac{(X_1 / df_1)}{(X_2 / df_2)}

where:

  • X1​ and X2​ follow chi-square distributions
  • df1​ and df2​ are their respective degrees of freedom

The F-statistic is always greater than or equal to 0 because it is a ratio of variances, and variance cannot be negative.

How the F-Test Works

The F-test compares two variances by forming their ratio. Depending on the research question, the test can be:

  • Left-tailed
  • Right-tailed
  • Two-tailed

The F-test is applicable when:

  • The populations are normally distributed
  • Samples are random and independent

Hypothesis Testing Framework for F-test

For various hypothesis tests the F test formula is provided as follows:

1. Left Tailed Test

  • Null Hypothesis: H_0 : \sigma_{1}^2 = \sigma_{2}^2
  • Alternate Hypothesis: H_1:\sigma_{1}^2 < \sigma_{2}^2
  • Decision-Making Standard: Reject H_0​ if the F statistic is less than the critical value.

2. Right Tailed Test

  • Null Hypothesis: H_0:\sigma_{1}^2 = \sigma_{2}^2
  • Alternate Hypothesis: H_1: \sigma_{1}^2 > \sigma_{2}^2
  • Decision-Making Standard: Reject H0​ if the F statistic is greater than the critical value.

3. Two Tailed Test

  • Null Hypothesis: H_0 : \sigma_{1}^2 = \sigma_{2}^2
  • Alternate Hypothesis: H_1: \sigma_{1}^2 \neq \sigma_{2}^2
  • Decision-Making Standard: Reject H0​ if the F statistic falls in the rejection region.

F Test Statistics

The F test statistic or simply the F statistic is a value that is compared with the critical value to check if the null hypothesis should be rejected or not. The F test statistic formula is given below:

For large samples: F_{calc}=\frac{\sigma_{1}^{2}}{\sigma_{2}^{2}}

For small samples: F_{calc}=\frac{s_{1}^{2}}{s_{2}^{2}}

where:

  • \sigma_{1}^{2}  is the variance of the first population and \sigma_{2}^{2} is the variance of the second population.
  • s_{1}^{2} is the variance of the first sample and s_{2}^{2} is the variance of the second sample.

Steps to Perform an F-Test

  1. Compute variances of both samples
  2. Define null and alternative hypotheses
  3. Calculate the F statistic
  4. Determine degrees of freedom
  5. Find the critical F value using significance level α
  6. Compare F statistic with critical value

Decision Rule

  • If F_{calc} < F_{table} ​: Do not reject H0
  • If F_{calc} > F_{table} ​: Reject H0​

Example

Consider the following example In this we conduct a two-tailed F-Test on the following samples: 

StatisticSample 1Sample 2
Standard Deviation10.478.12
Sample Size4121

Step 1: Hypotheses

  • H_0: \sigma_1^2 = \sigma_2^2
  • H_1: \sigma_1^2 \neq \sigma_2^2

Step 2: Compute Variances

  • s_1^2 = (10.47)^2 = 109.63
  • s_2^2 = (8.12)^2 = 65.99

Step 3: Degrees of Freedom

  • df_1 = 41 - 1 = 40
  • df_2 = 21 - 1 = 20

Step 4: Critical Value

  • Two-tailed test with α = 0.05:
  • \alpha/2 = 0.025
  • From the F-table: F_{table} = 2.287

Step 5: Decision

  • 1.66 < 2.287
  • Do not reject the null hypothesis. The variances of the two populations are statistically similar.

Python Implementation of F-Test

  • Two samples are generated assuming normal distributions.
  • Sample variances are computed using unbiased estimation (ddof=1).
  • The F-statistic is calculated as the ratio of variances.
  • Degrees of freedom are derived from sample sizes.
  • The p-value is obtained using the F-distribution.
  • Results are printed in a readable format.
Python
import numpy as np
from scipy.stats import f

sample1 = np.random.normal(0, 10.47, 41)
sample2 = np.random.normal(0, 8.12, 21)

var1 = np.var(sample1, ddof=1)
var2 = np.var(sample2, ddof=1)

f_stat = var1 / var2

df1 = len(sample1) - 1
df2 = len(sample2) - 1

p_value = 2 * min(f.cdf(f_stat, df1, df2), 1 - f.cdf(f_stat, df1, df2))

print(f"F-statistic: {f_stat:.4f}")
print(f"P-value: {p_value:.4f}")

Output:

F-statistic: 1.2978
P-value: 0.2697

Interpretation: Since the p-value > 0.05, we fail to reject the null hypothesis, indicating that the variances are statistically similar.

Comment

Explore