Chapter 15
20 min read
Section 101 of 175

F-Tests

Common Statistical Tests

Learning Objectives

By the end of this section, you will be able to:

📚 Core Knowledge

  • • Understand the F-distribution as a ratio of chi-squares
  • • Derive and interpret the F-statistic for variance comparison
  • • Master the logic of variance decomposition in ANOVA
  • • Calculate degrees of freedom for different F-tests
  • • Interpret F-test results in context

🔧 Practical Skills

  • • Perform F-tests for comparing two variances
  • • Conduct one-way ANOVA to compare multiple group means
  • • Interpret ANOVA tables and effect sizes (η²)
  • • Implement F-tests in Python using scipy and statsmodels

🧠 AI/ML Applications

  • Feature Selection - Use F-tests (ANOVA F-value) to rank features by their discriminative power
  • Model Comparison - Compare nested regression models using the F-test
  • A/B/n Testing - Extend A/B testing to multiple treatment groups
  • Hyperparameter Tuning - Determine if hyperparameter changes significantly improve performance
  • Regression Significance - Test overall significance of regression models (R² significance)
Why F-Tests Matter: The F-test is the statistical workhorse for comparing variances and group means. It underpins ANOVA, regression analysis, and numerous feature selection methods in machine learning. Understanding F-tests unlocks the ability to rigorously compare any number of treatments, models, or feature sets.

The Big Picture: Fisher's Legacy

The year is 1925. Ronald A. Fisher, working at Rothamsted Experimental Station in England, faces a fundamental agricultural question: Do different fertilizer treatments produce genuinely different crop yields, or are observed differences just random variation?

👨‍🔬

Fisher's Brilliant Insight

Fisher realized that variance holds the key. If treatments have different effects, the variance between group means should be larger than the variancewithin groups (due to random error). The ratio of these variances follows a predictable distribution—now called the F-distribution in his honor.

"The analysis of variance is not a mathematical theorem, but rather a convenient method of arranging the arithmetic." — R.A. Fisher

The Problem That Needed Solving

Before Fisher, scientists had the t-test for comparing two groups. But what if you had three fertilizers? Four? Ten? Running many t-tests between pairs caused problems:

  • Multiple comparisons: With 10 groups, you'd need 45 pairwise t-tests!
  • Inflated Type I error: Each test has α = 0.05 chance of false positive
  • Computational burden: In the pre-computer era, this was prohibitive

Fisher's elegant solution: test all groups simultaneously with a single test that asks: "Is there ANY significant difference among the groups?" This is the Analysis of Variance (ANOVA), with the F-statistic at its heart.

The Central Question of F-Tests

"Is the variation BETWEEN groups large enough compared to variation WITHIN groups to conclude that group membership matters?"


The F-Distribution Foundation

Before diving into F-tests, we must understand the F-distribution itself. Just as the t-test relies on the t-distribution, F-tests rely on the F-distribution.

Definition: Ratio of Chi-Squares

The F-distribution arises naturally as the ratio of two independent chi-square random variables, each divided by its degrees of freedom:

Definition of the F-Distribution

F=χ12/d1χ22/d2F(d1,d2)F = \frac{\chi_1^2 / d_1}{\chi_2^2 / d_2} \sim F(d_1, d_2)

χ₁² ~ χ²(d₁)

Numerator chi-square

χ₂² ~ χ²(d₂)

Denominator chi-square

d₁, d₂

Degrees of freedom

Why this matters: Sample variances from normal populations follow (scaled) chi-square distributions. So when we take the ratio of two sample variances, we get an F-distributed statistic!

Connection to Sample Variances

F=S12/σ12S22/σ22F = \frac{S_1^2 / \sigma_1^2}{S_2^2 / \sigma_2^2}

Under H₀: σ₁² = σ₂², this simplifies to F = S₁²/S₂² ~ F(n₁-1, n₂-1)

Key Properties

PropertyValue/Description
Support(0, ∞) — F is always positive
Meand₂/(d₂ - 2) for d₂ > 2
VarianceComplex formula; exists for d₂ > 4
Mode(d₁ - 2)/d₁ × d₂/(d₂ + 2) for d₁ > 2; otherwise 0
ShapeRight-skewed; approaches symmetry as df increases
Special caseF(1, d₂) = t²(d₂) — squared t-distribution!
The F-t Connection: When you square a t-statistic with d₂ degrees of freedom, you get an F(1, d₂) statistic. This explains why a two-sided t-test and an F-test with one numerator df give the same p-value for comparing two means!

Interactive: F-Distribution Explorer

Explore how the F-distribution shape changes with different degrees of freedom. Notice how it becomes less skewed as both d₁ and d₂ increase.

📈F-Distribution Explorer

Controls the numerator chi-square

Controls the denominator chi-square

Statistics for F(5, 20)

Mean:1.1111
Variance:0.7099
Mode:0.5455
Support:(0, ∞)
Shape: Right-skewed with interior mode
Notation: F ~ F(5, 20)

Critical Values for F(5, 20)

α = 0.10:2.1582
α = 0.05:2.7109
α = 0.01:4.1027

Reject H₀ if your F-statistic exceeds the critical value for your chosen α

F₀.₀₅ = 2.71μ = 1.11F=1Ff(F)0.01.32.53.85.0

F = 1 indicates equal variances. Values >1 suggest numerator variance is larger.

Key Insight: The Variance Ratio

The F-distribution models the ratio of two sample variances. When F ≈ 1, the variances are similar. Large F values suggest the numerator variance is significantly larger than the denominator variance.

Common presets:

Interactive: Chi-Square Ratio Demo

Visualize how the F-distribution emerges from the ratio of two chi-square random variables. This demonstration shows the fundamental connection between these distributions.

🎲Chi-Square Ratio Demonstration

How F Arises from Chi-Square

The F-distribution is defined as the ratio of two independent chi-square random variables, each divided by their degrees of freedom:

F = (U/d₁) / (V/d₂) where U ~ χ²(d₁), V ~ χ²(d₂)

Key Insight

As you generate more samples, the histogram approaches the theoretical F(5, 10) distribution. Notice how most values cluster near F = 1 when both chi-squares have similar "expected" behavior.


F-Test for Comparing Two Variances

The most direct application of the F-distribution is testing whether two populations have equal variances. This is the variance ratio test orF-test for homogeneity of variance.

Null Hypothesis (H₀)

σ12=σ22\sigma_1^2 = \sigma_2^2

The population variances are equal

Alternative Hypothesis (H₁)

σ12σ22\sigma_1^2 \neq \sigma_2^2

The population variances differ (two-tailed)

The Test Statistic

F-Test Statistic for Variance Comparison

F=S12S22F(n11,n21)F = \frac{S_1^2}{S_2^2} \sim F(n_1 - 1, n_2 - 1)

Convention: Place the larger variance in the numerator for one-tailed interpretation

SymbolMeaningSource
S₁²Sample variance from population 1Σ(xᵢ - x̄)²/(n₁-1)
S₂²Sample variance from population 2Σ(yᵢ - ȳ)²/(n₂-1)
n₁ - 1Numerator degrees of freedomSample 1 size minus 1
n₂ - 1Denominator degrees of freedomSample 2 size minus 1

Interpretation:

  • If F ≈ 1: Variances are similar (support for H₀)
  • If F significantly greater than 1: Sample 1 has larger variance
  • If F significantly less than 1: Sample 2 has larger variance
Two-Tailed Test: For a two-tailed test at α, reject H₀ if the F-statistic falls in either tail (below F₁₋α/₂ or above Fα/₂). However, by convention, we often place the larger variance in the numerator and use the upper tail only, doubling the one-tailed p-value.

Interactive: Variance Ratio Test

Enter two samples and perform an F-test to determine if their variances are significantly different. Try generating samples with equal and unequal variances to see how the test responds.

⚖️Variance Ratio Test (F-Test)

Hypothesis Test

H₀ (Null):σ₁² = σ₂²

Population variances are equal

H₁ (Alternative):σ₁² ≠ σ₂²

Population variances are different

n = 10 values

n = 10 values

0.010.050.10
Generate samples:

Sample 1

n₁:10
Mean:25.300
Variance (s₁²):4.9000

Sample 2

n₂:10
Mean:29.900
Variance (s₂²):5.4333

F-Statistic Calculation

Sample 2 Variance
5.4333
÷
Sample 1 Variance
4.9000
=
F-statistic
1.1088

df = (9, 9)

Decision

F-statistic:1.1088
p-value:0.880207
α:0.05
p < α?No

✓ Fail to reject H₀: No significant difference in variances

When to Use This Test

  • • Testing assumption of equal variances for t-test
  • • Comparing quality control between two processes
  • • Checking if two measurement methods have similar precision
  • • Validating homoscedasticity in regression

ANOVA: The Analysis of Variance

Analysis of Variance (ANOVA) is perhaps the most important application of the F-test. Despite its name, ANOVA is used to test differences in means, not variances—it just does so by analyzing variance components.

The ANOVA Intuition

Imagine you have data from k different groups. ANOVA asks: "Do these groups come from populations with the same mean?"

The Core Logic

If H₀ is TRUE (all means equal)

Group means should vary only due to random sampling. The variance betweengroups should be similar to variance within groups. F ≈ 1.

If H₀ is FALSE (means differ)

Group means spread out more than random chance would predict. The variancebetween groups is larger than within-group variance. F > 1.

Variance Partitioning

The key insight of ANOVA is variance decomposition. The total variance in the data can be split into two components:

Variance Decomposition

SSTTotal=SSBBetween Groups+SSWWithin Groups\underbrace{SS_T}_{\text{Total}} = \underbrace{SS_B}_{\text{Between Groups}} + \underbrace{SS_W}_{\text{Within Groups}}
ComponentFormulaMeasures
SST (Total)Σᵢⱼ(xᵢⱼ - x̄)²Total variation from the grand mean
SSB (Between)Σᵢ nᵢ(x̄ᵢ - x̄)²Variation of group means from grand mean
SSW (Within)Σᵢⱼ(xᵢⱼ - x̄ᵢ)²Variation within each group (error)

Degrees of Freedom:

  • dfB = k - 1: Number of groups minus 1
  • dfW = N - k: Total observations minus number of groups
  • dfT = N - 1: Total observations minus 1

The ANOVA F-Statistic

ANOVA F-Statistic

F=MSBMSW=SSB/(k1)SSW/(Nk)F(k1,Nk)F = \frac{MS_B}{MS_W} = \frac{SS_B / (k-1)}{SS_W / (N-k)} \sim F(k-1, N-k)

MSB (Mean Square Between)

Average squared deviation of group means from grand mean

MSW (Mean Square Within)

Average squared deviation within groups (error variance)

Interpretation of F:

  • F ≈ 1: Between-group variance equals within-group variance → no group effect
  • F >> 1: Between-group variance much larger → groups genuinely differ
  • F < 1: Rare, suggests unusual data structure
ANOVA Tests the Omnibus Hypothesis: A significant F only tells you thatat least one group differs from the others. It does NOT tell you which groups differ. For that, you need post-hoc tests like Tukey HSD, Bonferroni, or Scheffé.

Interactive: One-Way ANOVA

Enter data for multiple groups and see the complete ANOVA table. Experiment with different group means and within-group variability to understand how they affect the F-statistic.

📊One-Way ANOVA Demo

Hypothesis Test

H₀:μ₁ = μ₂ = μ₃ = ... = μₖ(All group means are equal)
H₁:At least one group mean is different

Enter Group Data

Generate example:

Group Visualization

Grand MeanTreatment ATreatment BTreatment C

Thick horizontal lines = group means. Dashed red line = grand mean.

ANOVA Table

SourceSSdfMSFp-value
Between Groups160.13280.0727.6092<0.0001
Within Groups34.80122.90
Total194.9314

The F-Statistic

F = MSB / MSW = 80.07 / 2.90 = 27.6092

Large F indicates group means differ more than expected by chance

Effect Size (η²)

82.1%

Proportion of variance explained by group membership

Small: <1% | Medium: 1-6% | Large: >6%

Decision (α = 0.05)

Reject H₀: Significant difference exists between at least one pair of groups. Use post-hoc tests (Tukey HSD) to determine which groups differ.

When to Use One-Way ANOVA

  • • Comparing means of 3+ groups (use t-test for 2 groups)
  • • Testing if a categorical variable affects a numeric outcome
  • • A/B/C testing in product experiments
  • • Comparing treatment effects in clinical trials

Worked Examples


Assumptions and Robustness

F-tests are parametric tests that rely on several assumptions. Understanding when these can be relaxed is crucial for proper application.

AssumptionDescriptionRobustness
IndependenceObservations are independentNot robust — must be satisfied
NormalityData comes from normal distributionsRobust for n ≥ 30 per group (CLT)
Homoscedasticity (ANOVA)Equal variances across groupsRobust if group sizes equal

When F-Tests Are Robust

  • Large, equal group sizes (n ≥ 30 each)
  • Mild departures from normality
  • Variance ratio < 4:1 across groups
  • Balanced designs (equal n per group)

When to Use Alternatives

  • Unequal variances: Use Welch's ANOVA
  • Non-normal data: Use Kruskal-Wallis test
  • Small samples: Use permutation tests
  • Variance comparison: Use Levene's or Brown-Forsythe
The Variance Ratio F-Test is Sensitive: Unlike ANOVA, the F-test for comparing two variances is NOT robust to non-normality. Even small departures from normality can inflate Type I error rates. For testing equal variances, preferLevene's test or Brown-Forsythe test, which are more robust.

Applications in AI/ML

F-tests are deeply embedded in machine learning workflows. Here are the key applications:

🎯 Feature Selection (ANOVA F-value)

For classification, the ANOVA F-value measures how well each feature separates classes. Features with high F-values have means that differ significantly across classes.

🐍python
1from sklearn.feature_selection import SelectKBest, f_classif
2
3# Select top 10 features by ANOVA F-value
4selector = SelectKBest(f_classif, k=10)
5X_selected = selector.fit_transform(X, y)
6print("F-scores:", selector.scores_)

📊 Regression Feature Selection (F-regression)

For regression, F-regression tests the correlation between each feature and the target. It's based on the F-test for the univariate linear regression of each feature.

🐍python
1from sklearn.feature_selection import f_regression
2
3# Get F-scores for all features
4f_scores, p_values = f_regression(X, y)
5print("Significant features:", np.where(p_values < 0.05)[0])

🔄 Nested Model Comparison

The F-test compares nested regression models. If adding features significantly reduces RSS (residual sum of squares), the fuller model is preferred. This is the basis for forward/backward stepwise selection.

🧪 A/B/n Testing

When testing more than two variants (A/B/C testing), ANOVA determines if any variant performs differently. This is common in recommendation systems, ad optimization, and model deployment strategies.

Interactive: F-Test Feature Selection

See how ANOVA F-values rank features by their ability to discriminate between classes. Features with higher F-scores have group means that differ more than expected by chance.

🎯Feature Selection with F-Test

How F-Test Selects Features

The F-test (via ANOVA) measures how well a feature separates different classes. Features with high F-scores have large between-class variance relative to within-class variance, making them good predictors. This is exactly what sklearn.feature_selection.f_classif does!

3 species classification based on petal/sepal measurements

Classes: Setosa, Versicolor, Virginica

Feature Ranking by F-Score

#1
Petal LengthSignificant
F = 271.81
p = <0.0001
#2
Petal WidthSignificant
F = 204.41
p = <0.0001
#3
Sepal LengthSignificant
F = 16.05
p = 0.0004
#4
Random Noise
F = 0.00
p = 1.0000
Quick select:

Selected Features (0)

No features selected. Click checkboxes or use quick select buttons.

Python Equivalent (scikit-learn)

from sklearn.feature_selection import f_classif, SelectKBest

# Calculate F-scores for all features
f_scores, p_values = f_classif(X, y)

# Select top k features
selector = SelectKBest(f_classif, k=2)
X_selected = selector.fit_transform(X, y)

# Get selected feature indices
selected_indices = selector.get_support(indices=True)
print(f"Selected features: {selected_indices}")

ML Engineering Insight

Notice how the "Random Noise" feature has a low F-score? That's because it doesn't help separate the classes. F-test based feature selection automatically identifies and can eliminate such uninformative features, reducing overfitting and improving model interpretability.


Python Implementation

🐍python
1import numpy as np
2from scipy import stats
3from scipy.stats import f_oneway, levene, bartlett
4from sklearn.feature_selection import SelectKBest, f_classif, f_regression
5import pandas as pd
6
7# ============================================
8# 1. F-Test for Two Variances
9# ============================================
10
11def f_test_variance(sample1, sample2, alpha=0.05):
12    """
13    F-test for comparing two population variances.
14
15    H0: sigma1^2 = sigma2^2
16    H1: sigma1^2 != sigma2^2 (two-tailed)
17    """
18    n1, n2 = len(sample1), len(sample2)
19    var1, var2 = np.var(sample1, ddof=1), np.var(sample2, ddof=1)
20
21    # Ensure larger variance in numerator
22    if var1 >= var2:
23        F = var1 / var2
24        df1, df2 = n1 - 1, n2 - 1
25    else:
26        F = var2 / var1
27        df1, df2 = n2 - 1, n1 - 1
28
29    # Two-tailed p-value
30    p_value = 2 * min(1 - stats.f.cdf(F, df1, df2),
31                      stats.f.cdf(F, df1, df2))
32
33    return {
34        'F_statistic': F,
35        'df': (df1, df2),
36        'p_value': p_value,
37        'reject_null': p_value < alpha,
38        'var1': var1,
39        'var2': var2
40    }
41
42
43# Example: Compare two manufacturing processes
44process_a = np.array([10.2, 10.1, 10.3, 9.9, 10.0, 10.2, 10.1])
45process_b = np.array([10.5, 9.8, 10.1, 10.4, 9.7, 10.3, 10.0, 9.9])
46
47result = f_test_variance(process_a, process_b)
48print(f"F-test for variances: F = {result['F_statistic']:.4f}, p = {result['p_value']:.4f}")
49
50
51# ============================================
52# 2. One-Way ANOVA
53# ============================================
54
55def one_way_anova(*groups, alpha=0.05):
56    """
57    Perform one-way ANOVA with detailed results.
58    """
59    k = len(groups)
60    all_data = np.concatenate(groups)
61    N = len(all_data)
62    grand_mean = np.mean(all_data)
63
64    # Calculate SS components
65    group_means = [np.mean(g) for g in groups]
66    group_sizes = [len(g) for g in groups]
67
68    # Between-group SS
69    SSB = sum(n * (mean - grand_mean)**2
70              for n, mean in zip(group_sizes, group_means))
71
72    # Within-group SS
73    SSW = sum(np.sum((g - np.mean(g))**2) for g in groups)
74
75    # Total SS
76    SST = np.sum((all_data - grand_mean)**2)
77
78    # Degrees of freedom
79    df_between = k - 1
80    df_within = N - k
81
82    # Mean squares
83    MSB = SSB / df_between
84    MSW = SSW / df_within
85
86    # F-statistic
87    F = MSB / MSW
88    p_value = 1 - stats.f.cdf(F, df_between, df_within)
89
90    # Effect size (eta-squared)
91    eta_squared = SSB / SST
92
93    return {
94        'F_statistic': F,
95        'p_value': p_value,
96        'df_between': df_between,
97        'df_within': df_within,
98        'SSB': SSB,
99        'SSW': SSW,
100        'SST': SST,
101        'MSB': MSB,
102        'MSW': MSW,
103        'eta_squared': eta_squared,
104        'reject_null': p_value < alpha
105    }
106
107
108# Example: Compare three treatment groups
109treatment_a = [23, 25, 28, 24, 26]
110treatment_b = [28, 30, 27, 29, 31]
111treatment_c = [20, 22, 21, 23, 19]
112
113result = one_way_anova(treatment_a, treatment_b, treatment_c)
114print(f"\nOne-Way ANOVA:")
115print(f"  F({result['df_between']}, {result['df_within']}) = {result['F_statistic']:.4f}")
116print(f"  p-value = {result['p_value']:.6f}")
117print(f"  eta² = {result['eta_squared']:.3f} ({result['eta_squared']*100:.1f}% variance explained)")
118
119# Using scipy directly
120F, p = f_oneway(treatment_a, treatment_b, treatment_c)
121print(f"  Scipy: F = {F:.4f}, p = {p:.6f}")
122
123
124# ============================================
125# 3. Feature Selection with F-tests
126# ============================================
127
128from sklearn.datasets import load_iris
129from sklearn.preprocessing import StandardScaler
130
131# Load data
132iris = load_iris()
133X, y = iris.data, iris.target
134feature_names = iris.feature_names
135
136# ANOVA F-test for classification features
137selector = SelectKBest(f_classif, k='all')
138selector.fit(X, y)
139
140# Display feature rankings
141feature_scores = pd.DataFrame({
142    'Feature': feature_names,
143    'F_score': selector.scores_,
144    'p_value': selector.pvalues_
145}).sort_values('F_score', ascending=False)
146
147print(f"\nFeature Selection (ANOVA F-values):")
148print(feature_scores.to_string(index=False))
149
150
151# ============================================
152# 4. Testing Homogeneity of Variance
153# ============================================
154
155# Levene's test (more robust than F-test)
156stat, p = levene(treatment_a, treatment_b, treatment_c)
157print(f"\nLevene's test for equal variances: W = {stat:.4f}, p = {p:.4f}")
158
159# Bartlett's test (assumes normality)
160stat, p = bartlett(treatment_a, treatment_b, treatment_c)
161print(f"Bartlett's test: T = {stat:.4f}, p = {p:.4f}")
162
163
164# ============================================
165# 5. Welch's ANOVA (unequal variances)
166# ============================================
167
168# When variances are unequal, use Welch's ANOVA
169# This is available in scipy starting from version 1.6
170from scipy.stats import alexandergovern  # Welch's ANOVA equivalent
171
172stat, p = alexandergovern(treatment_a, treatment_b, treatment_c)
173print(f"\nWelch's ANOVA (Alexander-Govern): stat = {stat:.4f}, p = {p:.4f}")
174
175
176# ============================================
177# 6. Post-hoc Tests (after significant ANOVA)
178# ============================================
179
180from scipy.stats import tukey_hsd
181
182# Tukey's HSD for pairwise comparisons
183result = tukey_hsd(treatment_a, treatment_b, treatment_c)
184print(f"\nTukey HSD pairwise comparisons:")
185print(result)
186
187
188# ============================================
189# 7. F-Test for Regression (Overall Model Significance)
190# ============================================
191
192from sklearn.linear_model import LinearRegression
193from sklearn.datasets import make_regression
194
195# Generate regression data
196X_reg, y_reg = make_regression(n_samples=100, n_features=5, noise=10, random_state=42)
197
198# Fit model
199model = LinearRegression().fit(X_reg, y_reg)
200y_pred = model.predict(X_reg)
201
202# Calculate F-statistic for overall model
203n = len(y_reg)
204p = X_reg.shape[1]  # number of predictors
205SSR = np.sum((y_pred - np.mean(y_reg))**2)  # Regression SS
206SSE = np.sum((y_reg - y_pred)**2)  # Residual SS
207
208MSR = SSR / p
209MSE = SSE / (n - p - 1)
210F_model = MSR / MSE
211p_value_model = 1 - stats.f.cdf(F_model, p, n - p - 1)
212
213print(f"\nRegression Model Significance:")
214print(f"  F({p}, {n-p-1}) = {F_model:.4f}")
215print(f"  p-value = {p_value_model:.6f}")
216print(f"  R² = {model.score(X_reg, y_reg):.4f}")
Production Tip: In scikit-learn, SelectKBest withf_classif (for classification) or f_regression (for regression) provides an efficient way to filter features based on F-statistics. Always check the p-values and consider using FDR correction when selecting many features.

Knowledge Check

Test your understanding of F-tests and ANOVA with this interactive quiz.

📝Test Your Understanding
Score: 0/0
Question 1 of 80 answered

What does the F-distribution model?


Summary

Key Takeaways

  1. The F-distribution is a ratio of chi-squares: F = (χ₁²/d₁) / (χ₂²/d₂), which arises naturally when comparing sample variances.
  2. F-test for two variances: F = S₁²/S₂² tests H₀: σ₁² = σ₂². Place the larger variance in the numerator. Be cautious: this test is sensitive to non-normality.
  3. ANOVA uses the F-test to compare means: F = MSB/MSWcompares between-group to within-group variance. Large F indicates group means differ.
  4. ANOVA is an omnibus test: A significant result only tells you thatsome groups differ. Use post-hoc tests (Tukey HSD) to identify which pairs.
  5. Effect size matters: η² (eta-squared) measures the proportion of variance explained by group membership. Report it alongside p-values.
  6. ANOVA assumptions: Independence, normality, homogeneity of variances. ANOVA is robust to normality violations with large, equal sample sizes.
  7. ML applications: F-tests power feature selection (ANOVA F-value), regression model comparison, and A/B/n testing.

Quick Reference

TestUse CaseF-Statisticdf
Variance comparisonCompare σ₁² vs σ₂²S₁²/S₂²(n₁-1, n₂-1)
One-way ANOVACompare k group meansMSB/MSW(k-1, N-k)
Regression F-testOverall model significanceMSR/MSE(p, n-p-1)
Feature selectionRank features by discriminationANOVA F per feature(k-1, N-k)
Looking Ahead: In the next section, we'll explore Likelihood Ratio Tests, a powerful generalization that provides an asymptotically optimal framework for comparing nested models and testing composite hypotheses.
Loading comments...