construct a regression mannequin, which suggests becoming a straight line on the info to foretell future values, we first visualize our knowledge to get an thought of the way it appears to be like and to see the patterns and relationships.
The information could seem to point out a constructive linear relationship, however we affirm it by calculating the Pearson correlation coefficient, which tells us how shut our knowledge is to linearity.
Let’s contemplate a easy Salary Dataset to know the Pearson correlation coefficient.
The dataset consists of two columns:
YearsExperience: the variety of years an individual has been working
Wage (goal): the corresponding annual wage in US {dollars}
Now we have to construct a mannequin that predicts wage primarily based on years of expertise.
We will perceive that this may be accomplished with a easy linear regression mannequin as a result of we’ve got just one predictor and a steady goal variable.
However can we immediately apply the straightforward linear regression algorithm similar to that?
No.
We have now a number of assumptions for linear regression to use, and one among them is linearity.
We have to examine linearity, and for that, we calculate the correlation coefficient.
However what’s linearity?
Let’s perceive this with an instance.
From the desk above, we are able to see that for each one-year improve in expertise, there’s a $5,000 improve in wage.
The change is fixed, and once we plot these values, we get a straight line.
This sort of relationship is known as a linear relationship.
Now in easy linear regression, we already know that we match a regression line on the info to foretell future values, and this may be efficient solely when the info has a linear relationship.
So, we have to examine for linearity in our knowledge.
For that, let’s calculate the correlation coefficient.
Earlier than that, we first visualize the info utilizing a scatter plot to get an thought of the connection between the 2 variables.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# Load the dataset
df = pd.read_csv("C:/Salary_dataset.csv")
# Set plot fashion
sns.set(fashion="whitegrid")
# Create scatter plot
plt.determine(figsize=(8, 5))
sns.scatterplot(x='YearsExperience', y='Wage', knowledge=df, coloration='blue', s=60)
plt.title("Scatter Plot: Years of Expertise vs Wage")
plt.xlabel("Years of Expertise")
plt.ylabel("Wage (USD)")
plt.tight_layout()
plt.present()

We will observe from the scatter plot that as years of expertise will increase, wage additionally tends to extend.
Though the factors don’t kind an ideal straight line, the connection seems to be robust and linear.
To substantiate this, let’s now calculate the Pearson correlation coefficient.
import pandas as pd
# Load the dataset
df = pd.read_csv("C:/Salary_dataset.csv")
# Calculate Pearson correlation
pearson_corr = df['YearsExperience'].corr(df['Salary'], technique='pearson')
print(f"Pearson correlation coefficient: {pearson_corr:.4f}")
Pearson correlation coefficient is 0.9782.
We get the worth of correlation coefficient in between -1 and +1.
Whether it is…
near 1: robust constructive linear relationship
near 0: no linear relationship
near -1: robust adverse linear relationship
Right here, we bought a correlation coefficient worth of 0.9782, which suggests the info principally follows a straight-line sample, and there’s a very robust constructive relationship between the variables.
From this, we are able to observe that easy linear regression is effectively suited for modeling this relationship.
However how can we calculate this Pearson correlation coefficient?
Let’s contemplate a 10-point pattern knowledge from our dataset.

Now, let’s calculate the Pearson correlation coefficient.
When each X and Y improve collectively, the correlation is alleged to be constructive. Alternatively, if one will increase whereas the opposite decreases, the correlation is adverse.
First, let’s calculate the variance for every variable.
Variance helps us perceive how far the values are unfold from the imply.
We’ll begin by calculating the variance for X (Years of Expertise).
To try this, we first must compute the imply of X.
[
bar{X} = frac{1}{n} sum_{i=1}^{n} X_i
]
[
= frac{1.2 + 3.3 + 3.8 + 4.1 + 5.0 + 5.4 + 8.3 + 8.8 + 9.7 + 10.4}{10}
]
[
= frac{70.0}{10}
]
[
= 7.0
]
Subsequent, we subtract every worth from the imply after which sq. it to cancel out the negatives.

We’ve calculated the squared deviations of every worth from the imply.
Now, we are able to discover the variance of X by taking the typical of these squared deviations.
[
text{Sample Variance of } X = frac{1}{n – 1} sum_{i=1}^{n} (X_i – bar{X})^2
]
[
= frac{33.64 + 13.69 + 10.24 + 8.41 + 4.00 + 2.56 + 1.69 + 3.24 + 7.29 + 11.56}{10 – 1}
]
[
= frac{96.32}{9} approx 10.70
]
Right here we divided by ‘n-1’ as a result of we’re coping with a pattern knowledge and utilizing ‘n-1’ provides us the unbiased estimate of variance.
The pattern variance of X is 10.70, which tells us that the values of Years of Expertise are, on common, 10.70 squared items away from the imply.
Since variance is a squared worth, we take the sq. root to interpret it in the identical unit as the unique knowledge.
That is referred to as Commonplace Deviation.
[
s_X = sqrt{text{Sample Variance}} = sqrt{10.70} approx 3.27
]
The usual deviation of X is 3.27, which signifies that the values of Years of Expertise fall about 3.27 years above or beneath the imply.
In the identical means we calculate the variance and customary deviation of ‘Y’.
[
bar{Y} = frac{1}{n} sum_{i=1}^{n} Y_i
]
[
= frac{39344 + 64446 + 57190 + 56958 + 67939 + 83089 + 113813 + 109432 + 112636 + 122392}{10}
]
[
= frac{827239}{10}
]
[
= 82,!723.90
]
[
text{Sample Variance of } Y = frac{1}{n – 1} sum (Y_i – bar{Y})^2
]
[
= frac{7,!898,!632,!198.90}{9} = 877,!625,!799.88
]
[
text{Standard Deviation of } Y text{ is } s_Y = sqrt{877,!625,!799.88} approx 29,!624.75
]
We calculated the variance and customary deviation of ‘X’ and ‘Y’.
Now, the subsequent step is to calculate the covariance between X and Y.
We have already got the technique of X and Y, in addition to the deviations of every worth from their respective means.
Now, we multiply these deviations to see how the 2 variables range collectively.

By multiplying these deviations, we try to seize how X and Y transfer collectively.
If each X and Y are above their means, then the deviations are constructive, which suggests the product is constructive.
If each X and Y are beneath their means, then the deviations are adverse, however since a adverse occasions a adverse is constructive, the product is constructive.
If one is above the imply and the opposite is beneath, the product is adverse.
This product tells us whether or not the 2 variables have a tendency to maneuver within the identical course (each rising or each lowering) or in reverse instructions.
Utilizing the sum of the product of deviations, we now calculate the pattern covariance.
[
text{Sample Covariance} = frac{1}{n – 1} sum_{i=1}^{n}(X_i – bar{X})(Y_i – bar{Y})
]
[
= frac{808771.5}{10 – 1}
]
[
= frac{808771.5}{9} = 89,!863.5
]
We bought a pattern covariance of 89863.5. This means that as expertise will increase, wage additionally tends to extend.
However the magnitude of covariance relies on the items of the variables (years × {dollars}), so it’s indirectly interpretable.
This worth solely exhibits the course.
Now we divide the covariance by the product of the usual deviations of X and Y.
This provides us the Pearson correlation coefficient which may be referred to as as a normalized model of covariance.
Since the usual deviation of X has items of years and Y has items of {dollars}, multiplying them provides us years occasions {dollars}.
These items cancel out once we divide, ensuing within the Pearson correlation coefficient, which is unitless.
However the principle purpose we divide covariance by the usual deviations is to normalize it, so the result’s simpler to interpret and may be in contrast throughout totally different datasets.
[
r = frac{text{Cov}(X, Y)}{s_X cdot s_Y}
= frac{89,!863.5}{3.27 times 29,!624.75}
= frac{89,!863.5}{96,!992.13} approx 0.9265
]
So, the Pearson correlation coefficient (r) we calculated is 0.9265.
This tells us there’s a very robust constructive linear relationship between years of expertise and wage.
This manner we discover the Pearson correlation coefficient.
The system for Pearson correlation coefficient is:
[
r = frac{text{Cov}(X, Y)}{s_X cdot s_Y}
= frac{frac{1}{n – 1} sum_{i=1}^{n} (X_i – bar{X})(Y_i – bar{Y})}
{sqrt{frac{1}{n – 1} sum_{i=1}^{n} (X_i – bar{X})^2} cdot sqrt{frac{1}{n – 1} sum_{i=1}^{n} (Y_i – bar{Y})^2}}
]
[
= frac{sum_{i=1}^{n} (X_i – bar{X})(Y_i – bar{Y})}
{sqrt{sum_{i=1}^{n} (X_i – bar{X})^2} cdot sqrt{sum_{i=1}^{n} (Y_i – bar{Y})^2}}
]
We’d like to ensure sure circumstances are met earlier than calculating the Pearson correlation coefficient:
- The connection between the variables ought to be linear.
- Each variables ought to be steady and numeric.
- There ought to be no robust outliers.
- The information ought to be usually distributed.
Dataset
The dataset used on this weblog is the Salary dataset.
It’s publicly out there on Kaggle and is licensed below the Creative Commons Zero (CC0 Public Domain) license. This implies it may be freely used, modified, and shared for each non-commercial and industrial functions with out restriction.
I hope this gave you a transparent understanding of how the Pearson correlation coefficient is calculated and when it’s used.
Thanks for studying!
