Arte SheetsLearn. Try. Understand.

Nonparametric Statistics & Clinical Trials

Brunner-Munzel Heteroscedastic Rank Test and Stochastic Superiority

Solve the nonparametric Behrens-Fisher unequal-variance problem using Brunner and Munzel’s (2000) placement-variance rank statistic W_BM and Satterthwaite degrees of freedom.

Understand why unequal group spread invalidates Mann-Whitney for median/dominance claims

The classical Mann-Whitney U test assumes identical distribution shapes under H0: F_1 = F_2; when Group 2 has much wider variance or skew than Group 1, Mann-Whitney inflates Type I error even when stochastic superiority P(X_1 < X_2) + 0.5*P(X_1 = X_2) = 0.50! Brunner and Munzel (2000) subtract each observation’s internal within-group rank G_ki from its pooled rank R_ki to form placement counts P_ki = R_ki - G_ki and estimate group placement variances separately.

Enter Group 1 (5 narrow scores: 18, 20, 21, 22, 24 in B2:B6) and Group 2 (5 wide higher scores: 19, 28, 35, 42, 55 in B7:B11). Pooled ascending ranks R_ki in C2:C11 minus within-group ranks G_ki in D2:D11 give placement counts P_1 = {0, 1, 1, 1, 1} (sample variance s_1^2 = 0.2000) and P_2 = {1, 5, 5, 5, 5} (sample variance s_2^2 = 3.2000). Relative treatment effect p_hat = (R_bar_2 - R_bar_1) / 10 + 0.5 = 0.8400 (Group 2 beats Group 1 84% of the time!), with W_BM = 2.0616 on Satterthwaite df = 4.4981.

Brunner-Munzel QuantityFormula ExpressionSample Output
Stochastic Superiority p_hat(AVERAGE(R_2) - AVERAGE(R_1)) / N + 0.50.8400 (vs 0.5000 null)
Placement Variances s_1^2, s_2^2VAR(R_1 - G_1) vs VAR(R_2 - G_2)0.2000 vs 3.2000 (16x ratio!)
Brunner-Munzel Statistic W_BMn_1*n_2*(R_bar_2 - R_bar_1) / (N * SQRT(n_1*s_1^2 + n_2*s_2^2))2.0616
Satterthwaite Degrees of Freedom(n_1*s_1^2 + n_2*s_2^2)^2 / ((n_1*s_1^2)^2/(n_1-1) + (n_2*s_2^2)^2/(n_2-1))4.4981

Stochastic Superiority (Relative Effect) p_hat Formula

Verify that p_hat = 0.50 indicates stochastic equality, p_hat > 0.50 means Group 2 tends to exceed Group 1, and complete non-overlapping separation hits p_hat = 1.0 (where s_1^2 = s_2^2 = 0).

=ROUND((AVERAGE(C7:C11) - AVERAGE(C2:C6)) / ROWS(B2:B11) + 0.5, 4)

Brunner-Munzel W_BM Statistic Formula (Guarding Complete Separation)

When every Group 2 value strictly exceeds every Group 1 value (change B7 from 19 to 26), placement counts become constant {0,0,0,0,0} and {5,5,5,5,5} so s_1^2 + s_2^2 = 0 — guard that boundary explicitly as "Complete Separation (p=1)".

=LET(cnt_a, ROWS(B2:B6), cnt_b, ROWS(B7:B11), v_a, VAR(E2:E6), v_b, VAR(E7:E11), pool_v, cnt_a * v_a + cnt_b * v_b, IF(pool_v <= 0.0000001, "Complete Separation (p=1)", ROUND((cnt_a * cnt_b * (AVERAGE(C7:C11) - AVERAGE(C2:C6))) / ((cnt_a + cnt_b) * SQRT(pool_v)), 4)))

Try the example

Use the original values or change them to test your understanding.

Further reading