Spearman correlation measures how well the relationship between two variables can be described using a monotonic function. It uses ranks instead of actual values.
Click to reveal answer
beginner
How does Spearman correlation differ from Pearson correlation?
Spearman correlation uses ranks and measures monotonic relationships, while Pearson correlation uses actual values and measures linear relationships.
Click to reveal answer
beginner
Which Python library and function can you use to calculate Spearman correlation?
You can use the scipy library and the function scipy.stats.spearmanr to calculate Spearman correlation.
Click to reveal answer
intermediate
What does the output of scipy.stats.spearmanr include?
It returns two values: the Spearman correlation coefficient (a number between -1 and 1) and the p-value that tests if the correlation is significant.
Click to reveal answer
intermediate
Why is Spearman correlation useful with non-linear data?
Because it uses ranks, Spearman correlation can detect monotonic relationships even if they are not straight lines, unlike Pearson correlation.
Click to reveal answer
What type of relationship does Spearman correlation measure?
AMonotonic relationship
BOnly linear relationship
CNo relationship
DExponential relationship
✗ Incorrect
Spearman correlation measures monotonic relationships, which means variables move in the same direction but not necessarily at a constant rate.
Which function calculates Spearman correlation in scipy?
Ascipy.stats.spearmanr
Bscipy.stats.kendalltau
Cscipy.stats.pearsonr
Dscipy.stats.linregress
✗ Incorrect
The function scipy.stats.spearmanr calculates Spearman correlation.
What does a Spearman correlation coefficient of 1 mean?
APerfect negative monotonic relationship
BPerfect positive monotonic relationship
CPerfect linear relationship only
DNo relationship
✗ Incorrect
A coefficient of 1 means a perfect positive monotonic relationship between variables.
Why might you choose Spearman over Pearson correlation?
AYou want to fit a regression line
BData is normally distributed
CYou want to measure variance
DData has outliers or is not linear
✗ Incorrect
Spearman is better when data is not linear or has outliers because it uses ranks.
What does the p-value from scipy.stats.spearmanr indicate?
AStrength of correlation
BProbability correlation is zero
CSignificance of correlation
DDirection of correlation
✗ Incorrect
The p-value tests if the observed correlation is statistically significant or could happen by chance.
Explain how to calculate and interpret Spearman correlation using scipy.
Think about ranking data and what the two outputs mean.
You got /5 concepts.
Describe when and why you would use Spearman correlation instead of Pearson correlation.
Consider the shape of data and sensitivity to outliers.
You got /5 concepts.
Practice
(1/5)
1. What does the Spearman correlation measure between two variables?
easy
A. The variance of a single variable
B. The strength and direction of a monotonic relationship based on ranks
C. The difference in means of two variables
D. The linear relationship between two variables
Solution
Step 1: Understand correlation types
Spearman correlation measures how two variables move together based on their rank order, not their actual values.
Step 2: Compare with other correlations
Unlike Pearson correlation, which measures linear relationships, Spearman focuses on monotonic relationships using ranks.
Final Answer:
The strength and direction of a monotonic relationship based on ranks -> Option B
Quick Check:
Spearman = monotonic rank correlation [OK]
Hint: Spearman uses ranks, not raw values, to find monotonic links [OK]
Common Mistakes:
Confusing Spearman with Pearson correlation
Thinking it measures linear relationships only
Assuming it compares means or variances
2. Which of the following is the correct way to import the Spearman correlation function from scipy?
easy
A. from scipy.stats import spearmanr
B. import scipy.spearmanr
C. from scipy import spearmanr
D. import spearmanr from scipy.stats
Solution
Step 1: Recall scipy.stats module structure
The Spearman correlation function is inside the stats submodule of scipy, so it must be imported from scipy.stats.
Step 2: Check correct import syntax
The correct Python syntax to import a function is 'from module import function', so 'from scipy.stats import spearmanr' is correct.
Final Answer:
from scipy.stats import spearmanr -> Option A
Quick Check:
Correct import syntax = from scipy.stats import spearmanr [OK]
Hint: Use 'from scipy.stats import spearmanr' to import correctly [OK]
Common Mistakes:
Trying to import spearmanr directly from scipy
Using incorrect import syntax like 'import spearmanr from ...'
Missing the stats submodule in import
3. What is the output of this code snippet?
from scipy.stats import spearmanr
x = [1, 2, 3, 4, 5]
y = [5, 6, 7, 8, 7]
result = spearmanr(x, y)
print(round(result.correlation, 2))
medium
A. 0.5
B. 0.9
C. 1.0
D. 0.82
Solution
Step 1: Understand the data ranks
x is increasing from 1 to 5, y mostly increases but has a slight drop at the end (7 instead of 9), so ranks are similar but not perfect.
Step 2: Calculate Spearman correlation
Spearman correlation measures rank similarity; here it is less than 1 but still strong, about 0.82 after rounding.
Final Answer:
0.82 -> Option D
Quick Check:
Spearman correlation ≈ 0.82 [OK]
Hint: Spearman close to 1 means strong rank similarity [OK]
Common Mistakes:
Assuming perfect correlation (1.0) without checking data
Confusing Pearson and Spearman correlation values
Ignoring the slight rank difference in y
4. Identify the error in this code that calculates Spearman correlation:
from scipy.stats import spearmanr
x = [1, 2, 3]
y = [4, 5]
result = spearmanr(x, y)
print(result.correlation)
medium
A. Missing import for numpy
B. spearmanr function is misspelled
C. Lists x and y have different lengths
D. result.statistic attribute does not exist
Solution
Step 1: Check input data lengths
Spearman correlation requires both input lists to have the same length. Here, x has 3 elements, y has 2.
Step 2: Understand function requirements
Because lengths differ, spearmanr will raise an error. Other options are incorrect as spelling and attribute usage are correct.
Final Answer:
Lists x and y have different lengths -> Option C
Quick Check:
Input length mismatch causes error [OK]
Hint: Ensure input lists have equal length before correlation [OK]
Common Mistakes:
Ignoring length mismatch of input lists
Thinking spearmanr needs numpy import explicitly
Assuming result.statistic is invalid
5. You have two variables with many tied ranks and some missing values (NaNs). Which approach using scipy.stats.spearmanr is best to get a valid Spearman correlation?
hard
A. Use spearmanr with nan_policy='omit' to ignore NaNs and handle ties automatically
B. Replace NaNs with zeros and then use spearmanr without extra parameters
C. Remove all tied values manually before using spearmanr
D. Use spearmanr with nan_policy='raise' to get an error for NaNs
Solution
Step 1: Handle missing values properly
Spearman correlation in scipy can handle NaNs if nan_policy='omit' is set, which ignores NaNs safely.
Step 2: Understand tied ranks handling
Spearman correlation automatically manages tied ranks, so no manual removal is needed.
Step 3: Evaluate other options
Replacing NaNs with zeros or removing tied values manually can bias results; raising errors is not helpful for analysis.
Final Answer:
Use spearmanr with nan_policy='omit' to ignore NaNs and handle ties automatically -> Option A
Quick Check:
nan_policy='omit' + automatic tie handling = Use spearmanr with nan_policy='omit' to ignore NaNs and handle ties automatically [OK]
Hint: Use nan_policy='omit' to skip NaNs safely in spearmanr [OK]
Common Mistakes:
Replacing NaNs with zeros causing bias
Trying to remove tied ranks manually
Not setting nan_policy causing errors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.