Arte SheetsLearn. Try. Understand.

Statistical

Cramer's V effect size & Chi-Square contingency table association formula

Calculate Chi-Square SUM((O - E)^2 / E) and sample-size-adjusted Cramer's V = SQRT(ChiSq / (N * MIN(r - 1, c - 1))) for categorical cross-tabulations.

Why raw Chi-Square inflates with sample size N—and how Cramer's V normalizes it to [0, 1]!

Cramér’s V rescales the uncorrected Pearson chi-square statistic by sample size and table dimensions. Multiplying all observed counts by ten leaves V unchanged. For this fixed 3-by-2 table, compute expected counts from row and column totals, then V=sqrt(chiSquare/(N*min(rows-1,columns-1))).

V describes the association in the supplied contingency table; it is not a causal effect, a significance test or proof of population independence. Universal weak/moderate/strong cutoffs are not appropriate for every dimension and context. Small samples can bias V; this example does not apply a bias correction or calculate a p-value. Rows and columns with zero marginal totals must be removed before applying this table formula.

Channel (r = 3)Converted (A)Bounced (B)Expected (Conv / Bounce) & ChiSq Row
Search (Total 80)4040E = 36 / 44 -> ChiSq = 0.8081
Email (Total 60)3525E = 27 / 33 -> ChiSq = 4.3098
Social (Total 60)1545E = 27 / 33 -> ChiSq = 9.6970
Totals (N = 200)90110ChiSq = 14.8148 | Cramer's V = 0.2722

Row-by-row Pearson Chi-Square contribution (O - E)^2 / E

With RowTotal in C2:C4 and column totals in A5:C5, D2:D4 computes both cells' Pearson residuals for each channel.

=IF(COUNT(A2:B4)<>6,"Invalid inputs",IF(OR(COUNT(A2:B4)<>6,MIN(A2:B4)<0,A2<>INT(A2),A3<>INT(A3),A4<>INT(A4),B2<>INT(B2),B3<>INT(B3),B4<>INT(B4),MIN(C2:C4)<=0,A5<=0,B5<=0),"Invalid inputs",ROUND(SUM(D2:D4), 4)))

Cramer's V normalized effect size SQRT(ChiSq / (N * MIN(r - 1, c - 1)))

ROWS(A2:B4) - 1 = 2 and COLUMNS(A2:B4) - 1 = 1, so MIN(r - 1, c - 1) = 1 and V = SQRT(14.814815 / 200) = 0.2722.

=IF(COUNT(A2:B4)<>6,"Invalid inputs",IF(OR(COUNT(A2:B4)<>6,MIN(A2:B4)<0,A2<>INT(A2),A3<>INT(A3),A4<>INT(A4),B2<>INT(B2),B3<>INT(B3),B4<>INT(B4),MIN(C2:C4)<=0,A5<=0,B5<=0),"Invalid inputs",ROUND(SQRT(SUM(D2:D4) / (C5 * MIN(ROWS(A2:B4) - 1, COLUMNS(A2:B4) - 1))), 4)))

Try the example

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

Further reading