Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Chi-squared test in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Chi-squared Test Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Chi-squared test output interpretation
What is the output of this Python code performing a chi-squared test on a contingency table?
Data Analysis Python
import numpy as np
from scipy.stats import chi2_contingency

# Contingency table: rows = Gender (Male, Female), columns = Preference (A, B)
data = np.array([[30, 10], [20, 40]])
chi2, p, dof, expected = chi2_contingency(data)
print(round(p, 3))
A0.001
B0.15
C0.05
D0.5
Attempts:
2 left
💡 Hint
Look at the p-value returned by chi2_contingency and round it to three decimals.
❓ data_output
intermediate
2:00remaining
Expected frequencies from chi-squared test
Given this contingency table, what is the expected frequency for the cell in row 1, column 2 after running chi2_contingency?
Data Analysis Python
import numpy as np
from scipy.stats import chi2_contingency

data = np.array([[10, 20], [30, 40]])
chi2, p, dof, expected = chi2_contingency(data)
print(round(expected[0,1], 1))
A20.0
B18.0
C25.0
D30.0
Attempts:
2 left
💡 Hint
Expected frequency = (row total * column total) / grand total.
🔧 Debug
advanced
2:00remaining
Identify the error in chi-squared test code
What error does this code raise when trying to perform a chi-squared test?
Data Analysis Python
from scipy.stats import chi2_contingency

data = [[10, 20, 30], [5, 15]]
chi2, p, dof, expected = chi2_contingency(data)
AIndexError: list index out of range
BTypeError: unsupported operand type(s) for +: 'int' and 'list'
CValueError: all rows in a contingency table must be of the same length
DNameError: name 'chi2_contingency' is not defined
Attempts:
2 left
💡 Hint
Check the shape of the input data for chi2_contingency.
🧠 Conceptual
advanced
1:30remaining
Understanding degrees of freedom in chi-squared test
For a contingency table with 4 rows and 3 columns, what is the degrees of freedom used in the chi-squared test?
A6
B7
C11
D12
Attempts:
2 left
💡 Hint
Degrees of freedom = (number of rows - 1) * (number of columns - 1).
🚀 Application
expert
3:00remaining
Chi-squared test on survey data
You have survey data on smoking status (Smoker, Non-Smoker) and lung disease (Yes, No). Which option shows the correct Python code to perform a chi-squared test and print the p-value?
A
import pandas as pd
from scipy.stats import chi2_contingency

survey = pd.DataFrame({'Smoking': ['Smoker', 'Smoker', 'Non-Smoker', 'Non-Smoker'], 'Disease': ['Yes', 'No', 'Yes', 'No'], 'Count': [30, 70, 10, 90]})
contingency = survey.pivot(index='Smoking', columns='Disease', values='Count')
chi2, p, dof, expected = chi2_contingency(contingency)
print(round(p, 4))
B
import pandas as pd
from scipy.stats import chi2_contingency

survey = pd.DataFrame({'Smoking': ['Smoker', 'Smoker', 'Non-Smoker', 'Non-Smoker'], 'Disease': ['Yes', 'No', 'Yes', 'No'], 'Count': [30, 70, 10, 90]})
contingency = survey.groupby(['Smoking', 'Disease']).sum()
chi2, p, dof, expected = chi2_contingency(contingency)
print(p)
C
import pandas as pd
from scipy.stats import chi2_contingency

survey = pd.DataFrame({'Smoking': ['Smoker', 'Smoker', 'Non-Smoker', 'Non-Smoker'], 'Disease': ['Yes', 'No', 'Yes', 'No'], 'Count': [30, 70, 10, 90]})
contingency = survey.pivot(index='Disease', columns='Smoking', values='Count')
chi2, p, dof, expected = chi2_contingency(contingency)
print(round(p, 4))
D
import pandas as pd
from scipy.stats import chi2_contingency

survey = pd.DataFrame({'Smoking': ['Smoker', 'Smoker', 'Non-Smoker', 'Non-Smoker'], 'Disease': ['Yes', 'No', 'Yes', 'No'], 'Count': [30, 70, 10, 90]})
contingency = survey.pivot_table(index='Smoking', columns='Disease', values='Count', aggfunc='sum')
chi2, p, dof, expected = chi2_contingency(contingency)
print(round(p, 4))
Attempts:
2 left
💡 Hint
Use pivot_table with aggfunc='sum' to create the contingency table correctly.

Practice

(1/5)
1. What does the Chi-squared test primarily check in data analysis?
easy
A. If two numerical variables have a linear relationship
B. If two categorical variables are related or independent
C. If a dataset follows a normal distribution
D. If the mean of a dataset is greater than zero

Solution

  1. Step 1: Understand the purpose of the Chi-squared test

    The Chi-squared test is used to check relationships between categorical variables, not numerical data.
  2. Step 2: Identify the correct relationship tested

    It tests if two categories are independent or related based on observed counts.
  3. Final Answer:

    If two categorical variables are related or independent -> Option B
  4. Quick Check:

    Chi-squared tests category relationships [OK]
Hint: Chi-squared tests category links, not means or correlations [OK]
Common Mistakes:
  • Confusing Chi-squared with correlation tests
  • Thinking it tests numerical data relationships
  • Assuming it checks data distribution shape
2. Which Python library and function is commonly used to perform a Chi-squared test on a contingency table?
easy
A. scipy.stats.chi2_contingency
B. numpy.chisquare_test
C. pandas.chi_squared
D. matplotlib.chi2_test

Solution

  1. Step 1: Recall common Python libraries for statistics

    Scipy is the standard library for statistical tests in Python.
  2. Step 2: Identify the correct function for Chi-squared test

    The function to perform Chi-squared test on contingency tables is chi2_contingency in scipy.stats.
  3. Final Answer:

    scipy.stats.chi2_contingency -> Option A
  4. Quick Check:

    Use scipy.stats.chi2_contingency for Chi-squared [OK]
Hint: Remember: scipy.stats has chi2_contingency for Chi-squared [OK]
Common Mistakes:
  • Using numpy or pandas which don't have this function
  • Confusing function names or libraries
  • Trying to use plotting libraries for tests
3. What will be the output of this Python code snippet?
import numpy as np
from scipy.stats import chi2_contingency

observed = np.array([[10, 20], [20, 40]])
chi2, p, dof, expected = chi2_contingency(observed, correction=False)
print('{:.3f}'.format(p))
medium
A. 1.000
B. 0.000
C. 0.500
D. 0.250

Solution

  1. Step 1: Understand the observed data and test

    The observed table has proportional counts (10:20 and 20:40), suggesting independence.
  2. Step 2: Interpret the p-value from chi2_contingency

    The p-value is approximately 0.5, indicating no significant relationship; the test finds data consistent with independence.
  3. Final Answer:

    0.500 -> Option C
  4. Quick Check:

    Proportional counts give moderate p-value around 0.5 [OK]
Hint: Proportional tables yield moderate p-values near 0.5 [OK]
Common Mistakes:
  • Assuming low p-value means independence
  • Confusing chi2 statistic with p-value
  • Rounding errors changing p-value interpretation
4. Identify the error in this code that tries to perform a Chi-squared test:
import scipy.stats as stats
observed = [[15, 25], [35, 25]]
chi2, p = stats.chi2_contingency(observed)
print(p)
medium
A. Incorrect unpacking of chi2_contingency output
B. Missing import of numpy for array input
C. Observed data must be a pandas DataFrame
D. No error; code runs correctly

Solution

  1. Step 1: Check the output of chi2_contingency

    The function returns four values: chi2, p, dof, expected.
  2. Step 2: Verify unpacking matches returned values

    The code unpacks only two values, causing a ValueError due to mismatch.
  3. Final Answer:

    Incorrect unpacking of chi2_contingency output -> Option A
  4. Quick Check:

    chi2_contingency returns 4 values, unpack all [OK]
Hint: Unpack all 4 outputs from chi2_contingency [OK]
Common Mistakes:
  • Unpacking fewer than 4 values
  • Assuming input must be numpy array
  • Thinking pandas DataFrame is required
5. You have a 3x3 contingency table of observed counts for three categories of two variables. After running chi2_contingency, you get a p-value of 0.03. What is the best interpretation if your significance level is 0.05?
hard
A. The variables are independent
B. You need a larger sample size to decide
C. The test is inconclusive; p-value is too high
D. There is a significant relationship between the variables

Solution

  1. Step 1: Compare p-value with significance level

    The p-value 0.03 is less than 0.05, indicating statistical significance.
  2. Step 2: Interpret significance in context of independence

    A significant result means we reject the null hypothesis of independence; variables are related.
  3. Final Answer:

    There is a significant relationship between the variables -> Option D
  4. Quick Check:

    p-value < 0.05 means reject independence [OK]
Hint: p-value < alpha means variables related, not independent [OK]
Common Mistakes:
  • Thinking p-value < 0.05 means independence
  • Ignoring significance level in decision
  • Assuming inconclusive without checking p-value
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard