Chi-Square Test#
Understanding chi-square tests for categorical association analysis.
Overview#
The chi-square test is a statistical test used to determine whether there is a significant association between two categorical variables. In titanite, chi-square tests are used to identify relationships in survey data.
When to use:
Analyzing associations between categorical variables (e.g., gender vs. department)
Testing independence of two categorical variables
Identifying which variable pairs have statistically significant relationships
The Chi-Square Statistic#
The chi-square statistic (χ²) measures how much the observed frequencies differ from what we would expect if there were no association between variables:
Where:
O = Observed frequency (actual count in data)
E = Expected frequency (count if variables were independent)
Interpreting Results#
P-value#
The p-value indicates the probability that the observed association occurred by chance:
p < 0.05 - Statistically significant association (reject null hypothesis of independence)
p ≥ 0.05 - No significant association (cannot reject null hypothesis)
Interpretation:
Small p-value (e.g., p = 0.001): Very unlikely to occur by chance → Strong evidence of association
Large p-value (e.g., p = 0.5): Likely to occur by chance → No evidence of association
Degrees of Freedom#
Degrees of freedom (df) indicate the flexibility in the data:
More rows/columns = more degrees of freedom = larger χ² value needed for significance.
Effect Size#
The chi-square statistic alone doesn’t indicate strength of association. Use Cramér’s V for effect size:
Where:
χ² = Chi-square statistic
n = Sample size
k = Minimum of (rows, columns)
Interpretation:
V < 0.1 - Negligible association
0.1 ≤ V < 0.3 - Weak association
0.3 ≤ V < 0.5 - Moderate association
V ≥ 0.5 - Strong association
Using in Titanite#
Running Chi-Square Tests#
Test all variable pairs:
cd sandbox
poetry run ti chi2
This generates a matrix showing:
Chi-square statistic for each pair
P-value
Degrees of freedom
Effect size (Cramér’s V)
Extracting Significant Results#
Extract only pairs with p < 0.05:
poetry run ti p005 q13 --save
This saves significant correlations for a specific column (e.g., q13).
Interpreting Output#
Example output:
Variable Pair: q01 vs q02
χ² = 15.42
p = 0.0008
df = 2
V = 0.245 (weak association)
Interpretation:
Strong statistical evidence (p = 0.0008) of association between q01 and q02
Weak practical effect (V = 0.245)
Knowing q01 slightly improves prediction of q02, but not dramatically
Example Analysis#
Survey Scenario#
Question: Is there an association between gender (q01) and field of study (q05)?
Data:
Physics |
Biology |
Chemistry |
|
|---|---|---|---|
Male |
45 |
20 |
25 |
Female |
30 |
35 |
40 |
Other |
5 |
10 |
8 |
Calculate Expected Frequencies#
Under independence (no association):
Total respondents = 218
Expected males in Physics: $\(E = \frac{90 \times 80}{218} = 33.0\)$
Chi-Square Calculation#
With df = 4 (3-1) × (3-1), this gives p ≈ 0.076
Conclusion: No statistically significant association at p < 0.05 level.
Assumptions and Limitations#
Required Assumptions#
Independence of observations - Each respondent counted once
Categorical variables - Data must be categorical, not continuous
Sufficient sample size - Generally need n ≥ 20
Expected cell frequencies - Typically need E ≥ 5 for most cells
If assumptions violated:
Use Fisher’s exact test for small samples
Consider exact chi-square test for sparse tables
Combine categories if E < 5 in many cells
Limitations#
Chi-square tests for association, not causation - Significant association doesn’t mean one variable causes the other
Sensitive to sample size - Large datasets can show “significant” associations with small practical effect
Multiple comparisons problem - Testing many pairs increases chance of false positives
Multiple Comparisons Correction#
When running many chi-square tests, use Bonferroni correction:
Adjusted p-value threshold: $\(p_{adjusted} = \frac{p_{original}}{n_{tests}}\)$
Example: Testing 50 variable pairs $\(p_{adjusted} = \frac{0.05}{50} = 0.001\)$
Only accept associations with p < 0.001 to maintain overall significance level of 0.05.
Titanite implements this correction in chi2 and p005 commands.
Common Pitfalls#
1. Confusing Association with Causation#
Finding: High p < 0.05 correlation between coffee consumption and heart disease
Possible explanations:
- Coffee causes heart disease (unlikely)
- Heart disease causes coffee avoidance (reverse causation)
- Age confounds both (older people drink more coffee AND have more heart disease)
2. Ignoring Effect Size#
Chi-square test: p = 0.02, V = 0.08 (negligible effect)
Interpretation:
- Statistical significance: YES (unlikely due to chance)
- Practical significance: NO (effect too weak to matter)
3. Multiple Comparisons Without Correction#
Testing 100 variable pairs:
Expected false positives: 100 × 0.05 = 5 spurious significant results
Always apply multiple comparisons correction
4. Violating Assumptions#
Small expected cell frequencies:
Combining rare categories
Using Fisher’s exact test instead
Reporting warnings appropriately
Further Reading#
See Also#
Clustering - Creating composite variables
Binning - Converting continuous data for chi-square tests