construct a regression mannequin, which suggests becoming a straight line on the info to foretell future values, we first visualize our information to get an concept of the way it seems to be and to see the patterns and relationships.
The info might seem to point out a constructive linear relationship, however we affirm it by calculating the Pearson correlation coefficient, which tells us how shut our information is to linearity.
Let’s think about a easy Wage Dataset to grasp 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 based mostly on years of expertise.
We will perceive that this may be performed with a easy linear regression mannequin as a result of now we have just one predictor and a steady goal variable.
However can we instantly 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 verify 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 will 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 verify for linearity in our information.
For that, let’s calculate the correlation coefficient.
Earlier than that, we first visualize the info utilizing a scatter plot to get an concept 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 type
sns.set(type="whitegrid")
# Create scatter plot
plt.determine(figsize=(8, 5))
sns.scatterplot(x='YearsExperience', y='Wage', information=df, shade='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'], methodology='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 detrimental linear relationship
Right here, we acquired 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 will observe that easy linear regression is nicely suited for modeling this relationship.
However how can we calculate this Pearson correlation coefficient?
Let’s think about a 10-point pattern information from our dataset.

Now, let’s calculate the Pearson correlation coefficient.
When each X and Y improve collectively, the correlation is claimed to be constructive. However, if one will increase whereas the opposite decreases, the correlation is detrimental.
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 will 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 information 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 information.
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 under the imply.
In the identical approach we calculate the variance and commonplace 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 commonplace 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 under their means, then the deviations are detrimental, however since a detrimental occasions a detrimental is constructive, the product is constructive.
If one is above the imply and the opposite is under, the product is detrimental.
This product tells us whether or not the 2 variables have a tendency to maneuver within the similar path (each growing 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 acquired a pattern covariance of 89863.5. This means that as expertise will increase, wage additionally tends to extend.
However the magnitude of covariance will depend on the items of the variables (years × {dollars}), so it’s indirectly interpretable.
This worth solely exhibits the path.
Now we divide the covariance by the product of the usual deviations of X and Y.
This provides us the Pearson correlation coefficient which will 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 will 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 want to verify sure situations are met earlier than calculating the Pearson correlation coefficient:
- The connection between the variables needs to be linear.
- Each variables needs to be steady and numeric.
- There needs to be no robust outliers.
- The info needs to be usually distributed.
Dataset
The dataset used on this weblog is the Wage dataset.
It’s publicly accessible on Kaggle and is licensed below the Inventive Commons Zero (CC0 Public Area) license. This implies it may be freely used, modified, and shared for each non-commercial and business 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!
















