Pearson correlation helps us see how two things change together. It tells if one goes up when the other goes up or down.
Pearson correlation in SciPy
from scipy.stats import pearsonr correlation_coefficient, p_value = pearsonr(x, y)
x and y are lists or arrays of numbers with the same length.
The function returns two values: the correlation number and a p-value to check significance.
from scipy.stats import pearsonr x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] corr, p = pearsonr(x, y) print(corr)
from scipy.stats import pearsonr x = [1, 2, 3, 4, 5] y = [10, 8, 6, 4, 2] corr, p = pearsonr(x, y) print(corr)
from scipy.stats import pearsonr x = [1, 2, 3, 4, 5] y = [5, 5, 5, 5, 5] corr, p = pearsonr(x, y) print(corr)
This program calculates how strongly hours studied and exam scores are related. It prints the correlation number and the p-value to check if the result is meaningful.
from scipy.stats import pearsonr # Example data: hours studied and exam scores hours_studied = [1, 2, 3, 4, 5] exam_scores = [50, 55, 65, 70, 80] corr, p_value = pearsonr(hours_studied, exam_scores) print(f"Pearson correlation coefficient: {corr:.2f}") print(f"P-value: {p_value:.4f}")
The correlation value ranges from -1 to 1.
A value close to 1 means strong positive relation, close to -1 means strong negative relation, and around 0 means no relation.
The p-value helps decide if the correlation is likely real or by chance. A small p-value (like less than 0.05) means it is probably real.
Pearson correlation measures how two sets of numbers move together.
Use pearsonr from scipy.stats to get the correlation and p-value.
Values near 1 or -1 show strong relationships; near 0 means weak or no relationship.
Practice
Solution
Step 1: Understand Pearson correlation purpose
Pearson correlation measures how two variables move together in a straight line.Step 2: Identify what it quantifies
It quantifies both strength (how close points are to a line) and direction (positive or negative slope).Final Answer:
The strength and direction of a linear relationship -> Option DQuick Check:
Pearson correlation = strength and direction [OK]
- Confusing correlation with difference in means
- Thinking it measures frequency counts
- Assuming it measures total sums
Solution
Step 1: Recall scipy.stats module structure
The pearsonr function is inside scipy.stats, so import must reflect that.Step 2: Check correct import syntax
Python import syntax for functions is 'from module import function', so 'from scipy.stats import pearsonr' is correct.Final Answer:
from scipy.stats import pearsonr -> Option AQuick Check:
Correct import syntax = from scipy.stats import pearsonr [OK]
- Using 'import scipy.pearsonr' which is invalid
- Trying 'from scipy import pearsonr' missing stats
- Wrong syntax like 'import pearsonr from scipy.stats'
from scipy.stats import pearsonr
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
corr, p = pearsonr(x, y)
print("{:.2f}".format(corr))Solution
Step 1: Analyze the data relationship
y is exactly 2 times x, so they have a perfect positive linear relationship.Step 2: Understand Pearson correlation output
Perfect positive linear relationship means correlation coefficient is 1.0.Final Answer:
1.00 -> Option CQuick Check:
Perfect positive linear correlation = 1.00 [OK]
- Confusing correlation with p-value
- Expecting 0.5 for proportional data
- Ignoring perfect linear relationship
from scipy.stats import pearsonr x = [1, 2, 3] y = [4, 5] corr, p = pearsonr(x, y) print(corr)
Solution
Step 1: Check input data lengths
pearsonr requires x and y to have the same length. Here, x has 3 elements, y has 2.Step 2: Understand error cause
Different lengths cause a ValueError when calling pearsonr.Final Answer:
Lists x and y have different lengths -> Option AQuick Check:
Input length mismatch causes error [OK]
- Assuming pearsonr accepts different length inputs
- Thinking print syntax is wrong in Python 3
- Believing inputs must be numpy arrays
Solution
Step 1: Calculate Pearson correlation
Use pearsonr to get correlation coefficient and p-value between temperature and sales.Step 2: Interpret correlation coefficient
A strong positive correlation means corr > 0.7. Checking p-value > 0.7 or negative corr is incorrect.Final Answer:
from scipy.stats import pearsonr corr, p = pearsonr(temp, sales) if corr > 0.7: print('Strong positive correlation') -> Option BQuick Check:
Strong positive correlation if corr > 0.7 [OK]
- Using p-value instead of correlation coefficient
- Checking for negative correlation for positive relation
- Using absolute value less than threshold incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
