Cramér’s V is a number between 0 and 1 that measures how strongly two categorical variables are associated. A value of 0 means the variables are completely independent of each other, while 1 means they are perfectly linked. It’s one of the most common ways to quantify the relationship between categorical data, especially when you move beyond simple yes/no variables into categories with three or more options.
What Cramér’s V Actually Measures
When you have two categorical variables, like eye color and hair color, you can arrange the data in a table (called a contingency table) showing how often each combination occurs. A chi-square test tells you whether the pattern in that table is statistically significant, meaning unlikely to be random chance. But statistical significance doesn’t tell you how strong the relationship is. A huge dataset can produce a significant chi-square result even when the actual association is tiny.
Cramér’s V solves this by converting the chi-square value into a standardized effect size. It essentially asks: given the chi-square result and the size of your dataset, how much of the possible association between these two variables is actually present? This makes it useful for comparing results across different studies or different sample sizes, since the raw chi-square number is heavily influenced by how many observations you have.
How the Formula Works
Cramér’s V is calculated by dividing the chi-square statistic by the sample size, then dividing again by whichever dimension of your table is smaller (minus one), and finally taking the square root of the whole thing. In notation, it looks like V = √(χ² / (n × (k − 1))), where χ² is the chi-square statistic, n is the total number of observations, and k is the smaller of the number of rows or columns.
That (k − 1) term in the denominator is important. It adjusts for the size of the table, which is why Cramér’s V works for any table dimension: 2×3, 3×4, 5×5, and so on. Without that adjustment, larger tables would naturally produce inflated values.
How It Relates to the Phi Coefficient
If you’ve encountered the phi coefficient, Cramér’s V is its generalized version. For a simple 2×2 table (two variables, each with two categories), Cramér’s V and phi give identical results. The phi coefficient is just the square root of chi-square divided by the sample size, with no (k − 1) adjustment needed because k − 1 equals 1 in a 2×2 table.
Once either variable has more than two categories, phi becomes unreliable because it can exceed 1.0, which makes interpretation meaningless. Cramér’s V stays bounded between 0 and 1 regardless of table size, which is why it’s the preferred measure for anything beyond a 2×2 design.
Interpreting the Results
The benchmarks for interpreting Cramér’s V depend on the degrees of freedom in your table. For a chi-square test with degrees of freedom equal to 4 (which corresponds to a 3×3 table, for example), the widely used guidelines from Jacob Cohen suggest:
- Small effect: 0.05 to 0.15
- Medium effect: 0.15 to 0.25
- Large effect: above 0.25
These thresholds shift depending on the degrees of freedom. Tables with fewer degrees of freedom require higher values to qualify as a “large” effect, while larger tables hit those labels at lower values. This is a detail many introductory guides skip, but it matters if you want your interpretation to be accurate rather than approximate.
As a concrete example, an analysis of the mtcars dataset examining the relationship between the number of engine cylinders and the number of gears produced a Cramér’s V of 0.53 on a 3×3 contingency table. That’s well above the 0.25 threshold for a large effect, indicating that the number of gears is strongly tied to the number of cylinders in those vehicles.
When to Use Cramér’s V
Cramér’s V is designed for nominal variables, meaning categories that have no natural order. Think blood type, country of residence, or preferred brand. If your categories do have a meaningful order (like education level or income bracket), other measures that account for that ordering may capture the relationship more precisely, though Cramér’s V will still give you a valid result.
It’s also the go-to choice whenever your contingency table is larger than 2×2. For a 2×2 table, you can use either phi or Cramér’s V interchangeably. For a 2×3, 3×4, or any larger combination, Cramér’s V is the standard measure.
Small Sample Bias
One known limitation is that Cramér’s V tends to overestimate the strength of association in small samples, and this bias gets worse as the table gets larger. In a 2×2 table the issue is minor, but for larger tables with relatively few observations, the classical formula can give inflated values. A bias-corrected version of Cramér’s V exists and has been shown through simulations to outperform the standard formula in these situations. If you’re working with a small dataset and a large table, it’s worth using the corrected version rather than the standard one.
Calculating It in Practice
Most statistical software can compute Cramér’s V with minimal effort. In R, the most common approach is using the cramersV() function from the lsr package or the assocstats() function from the vcd package. In Python, the scipy.stats library provides chi-square testing, and you can compute Cramér’s V from the chi-square output with a few lines of code. The researchpy and association_metrics libraries also offer direct functions for it.
The manual calculation is straightforward if you already have the chi-square statistic: divide by the sample size, divide by (k − 1), and take the square root. Most people let software handle it, but understanding the formula helps you catch errors and interpret the output correctly.

