Mis on korrelatsioonikordaja? R väärtus statistikas selgitatud

Seosed on suurepärane vahend selle kohta, kuidas üks asi teisega muutub. Pärast selle lugemist peaksite mõistma, mis on korrelatsioon, kuidas mõelda korrelatsioonidele oma töös ja korrelatsioonide arvutamiseks kodeerida minimaalne rakendus.

Seos on selles, kuidas kaks asja üksteisega muutuvad

Korrelatsioon on abstraktne matemaatika mõiste, kuid tõenäoliselt on teil juba idee, mida see tähendab. Siin on mõned näited kolmest korrelatsiooni üldkategooriast.

Kui sööte rohkem toitu, tunnete end tõenäoliselt täiskõhutundena. See on juhtum, kui kaks asja muutuvad koos ühtemoodi. Üks tõuseb üles (sööb rohkem toitu), siis teine ​​tõuseb ka (täiskõhutunne). See on positiivne korrelatsioon .

Kui olete autos ja see läheb kiiremini, jõuate tõenäoliselt sihtkohta kiiremini ja kogu reisi aeg on lühem. See on juhtum, kus kaks asja muutuvad vastupidises suunas (rohkem kiirust, kuid vähem aega). See on negatiivne korrelatsioon .

On ka kolmas võimalus, kuidas kaks asja võivad "muutuda". Õigemini, mitte muutuda. Näiteks kui peaksite kaalus juurde võtma ja uurima, kuidas teie testi tulemused muutusid, ei ole teie testi tulemuste üldist muutuse mustrit tõenäoliselt. See tähendab, et korrelatsiooni pole.

Teadmine, kuidas kaks asja koos muutuvad, on esimene samm ennustamiseks

Võime kirjeldada toimuvat meie eelmistes näidetes on suurepärane ja kõik. Aga mis mõte sellel on? Põhjuseks on nende teadmiste mõttekas rakendamine, mis aitab ennustada, mis edasi saab.

Oma söömisnäites võime registreerida, kui palju me terve nädala sööme, ja seejärel märkida, kui täis me end pärast tunneme. Nagu me varem leidsime, mida rohkem me sööme, seda rohkem me end täis tunneme.

Pärast kogu selle teabe kogumist võime selle suhte paremaks mõistmiseks esitada rohkem küsimusi selle kohta, miks see juhtub. Siinkohal võime hakata küsima, millised toidud muudavad meid täisväärtuslikumaks või kas päevaaeg mõjutab ka seda, kui täis me end tunneme.

Sarnast mõtlemist saab rakendada ka teie tööl või ettevõttel. Kui märkate, et müük või muud olulised mõõdikud tõusevad või langevad teie ettevõtte muu näitajaga (teisisõnu, asjad on positiivselt korrelatsioonis või negatiivselt korrelatsioonis), võib teie ettevõtte väärtustamiseks olla väärt seda suhet uurida ja sellest rohkem teada saada.

Korrelatsioonide tugevus võib olla erinev

Oleme käsitlenud mõningaid üldisi seoseid

  • positiivne,
  • negatiivne või
  • olematu

Kuigi need kirjeldused on korras, pole kõik positiivsed ja negatiivsed korrelatsioonid kõik ühesugused.

Neid kirjeldusi saab tõlkida ka numbriteks. Korrelatsiooniväärtus võib saada mis tahes kümnendväärtuse negatiivse, \ (- 1 \) ja positiivse, \ (+ 1 \) vahel.

Kümnendväärtused vahemikus \ (- 1 \) ja \ (0 \) on negatiivsed korrelatsioonid, näiteks \ (- 0,32 \).

Kümnendväärtused vahemikus \ (0 \) ja \ (+ 1 \) on positiivsed korrelatsioonid, näiteks \ (+ 0,63 \).

Täiuslik nullkorrelatsioon tähendab, et korrelatsiooni pole.

Iga korrelatsioonitüübi puhul on olemas tugev tugev ja nõrk korrelatsioon. Nullile lähemad korrelatsiooniväärtused on nõrgemad korrelatsioonid , positiivsele või negatiivsele lähemal olevad väärtused on aga tugevamad .

Tugevad korrelatsioonid näitavad andmete ilmsemaid suundumusi, nõrgad aga keskmisest. Näiteks tugevam kõrge, positiivne korrelatsioon allpool näeb pigem välja joonena, võrreldes nõrgema ja madalama positiivse korrelatsiooniga.

Madalate, kõrgete ja täiuslike positiivsete korrelatsioonide näited x ja y vahel

Samamoodi on tugevalt negatiivsetel korrelatsioonidel ilmsem trend kui nõrgemal ja madalamal negatiivsel korrelatsioonil.

Madalate, kõrgete ja täiuslike negatiivsete korrelatsioonide näited x ja y vahel

Kust tuleb r väärtus? Ja milliseid väärtusi see võib võtta?

" R väärtus" on tavaline viis korrelatsiooniväärtuse näitamiseks. Täpsemalt viitab see (valimi) Pearsoni korrelatsioonile või Pearsoni r-le . "Näidis" -märkus on rõhutada, et võite nõuda ainult korrelatsiooni nende andmetega, mis teil on, ja peate olema ettevaatlik, kui esitate oma andmetest suuremaid nõudeid.

Allolevas tabelis on kokku võetud, mida oleme korrelatsioonide kohta seni käsitlenud.

Pearsoni r väärtus Kahe asja seos on ... Näide
r = -1 Täiesti negatiivne Päeva tund ja päevast järelejäänud tundide arv
r <0 Negatiivne Suurem auto kiirus ja väiksem sõiduaeg
r = 0 Sõltumatu või korrelatsioonita Kaalutõus ja testide tulemused
r> 0 Positiivne Rohkem toitu söödud ja täiskõhutunne
r = 1 Täiesti positiivne Minu vanuse suurenemine ja teie vanuse suurenemine

Järgmistes osades me seda teeme

  • Korrelatsioonide arvutamiseks jagage matemaatiline võrrand
  • Selle korrelatsioonivõrrandi kasutamiseks kasutage näidenumbreid
  • Kodeerige matemaatika võrrand Pythonis ja JavaScriptis

Matemaatika jaotamine korrelatsioonide arvutamiseks

Meeldetuletuseks võib korrelatsioon olla ainult vahemikus \ (- 1 \) ja \ (1 \). Miks nii?

Kiire vastus on see, et kohandame mõlema muutuja muutuse suuruse ühisele skaalale. Tehnilisemas plaanis normaliseerime, kui palju muutujad koos muutuvad, selle võrra, kui palju mõlemad muutujad ise muutuvad.

Vikipeediast saame haarata Pearsoni korrelatsioonikordaja matemaatilise definitsiooni. See näeb välja väga keeruline, kuid jagame selle koos.

\ [\ textcolor {lime} {r} _ {\ textcolor {# 4466ff} {x} \ textcolor {fuchsia} {y}} = \ frac {\ sum_ {i = 1} ^ {n} (x_i - \ textcolor {green} {\ bar {x}}) (y_i - \ textcolor {oliiv} {\ bar {y}})} {\ sqrt {\ sum_ {i = 1} ^ {n} (x_i - \ textcolor {roheline } {\ riba {x}}) ^ 2 \ sum_ {i = 1} ^ {n} (y_i - \ tekstivärv {oliiv} {\ riba {y}}) ^ 2}} \]

From this equation, to find the \(\textcolor{lime}{\text{correlation}}\) between an \( \textcolor{#4466ff}{\text{x variable}} \) and a \( \textcolor{fuchsia}{\text{y variable}} \), we first need to calculate the \( \textcolor{green}{\text{average value for all the } x \text{ values}} \) and the \( \textcolor{olive}{ \text{average value for all the } y \text{ values}} \).

Let's focus on the top of the equation, also known as the numerator. For each of the \( x\) and \(y\) variables, we'll then need to find the distance of the \(x\) values from the average of \(x\), and do the same subtraction with \(y\).

Intuitively, comparing all these values to the average gives us a target point to see how much change there is in one of the variables.

This is seen in the math form, \(\textcolor{#800080}{\sum_{i=1}^{n}}(\textcolor{#000080}{x_i - \overline{x}})\), \(\textcolor{#800080}{\text{adds up all}}\) the \(\textcolor{#000080}{\text{differences between}}\) your values with the average value for your \(x\) variable.

In the bottom of the equation, also known as the denominator, we do a similar calculation. However, before we add up all of the distances from our values and their averages, we will multiple them by themselves (that's what the \((\ldots)^2\) is doing).

This denominator is what "adjusts" the correlation so that the values are between \(-1\) and \(1\).

Using numbers in our equation to make it real

To demonstrate the math, let's find the correlation between the ages of you and your siblings last year \([1, 2, 6]\) and your ages for this year \([2, 3, 7]\). Note that this is a small example. Typically you would want many more than three samples to have more confidence in your correlation being true.

Looking at the numbers, they appear to increase the same. You may also notice they are the same sequence of numbers but the second set of numbers has one added to it. This is as close to a perfect correlation as we'll get. In other words, we should get an \(r = 1\).

First we need to calculate the averages of each. The average of \([1, 2, 6]\) is \((1+2+6)/3 = 3\) and the average of \([2, 3, 7]\) is \((2+3+7)/3 = 4\). Filling in our equation, we get

\[ r _{ x y } = \frac{ \sum_{i=1}^{n} (x_i - 3)(y_i - 4) }{ \sqrt{ \sum_{i=1}^{n} (x_i - 3)^2 \sum_{i=1}^{n} (y_i - 4)^2 } }\]

Looking at the top of the equation, we need to find the paired differences of \(x\) and \(y\). Remember, the \(\sum\) is the symbol for adding. The top then just becomes

\[ (1-3)(2-4) + (2-3)(3-4) + (6-3)(7-4) \]

\[= (-2)(-2) + (-1)(-1) + (3)(3) \]

\[= 4 + 1 + 9 = 14\]

So the top becomes 14.

\[ r _{ x y } = \frac{ 14 }{ \sqrt{ \sum_{i=1}^{n} (x_i - 3)^2 \sum_{i=1}^{n} (y_i - 4)^2 } }\]

In the bottom of the equation, we need to do some very similar calculations, except focusing on just the \(x\) and \(x\) separately before multiplying.

Let's focus on just \( \sum_{i=1}^n (x_i - 3)^2 \) first. Remember, \(3\) here is the average of all the \(x\) values. This number will change depending on your particular data.

\[ (1-3)^2 + (2-3)^2 + (6-3)^2 \]

\[= (-2)^2 + (-1)^2 + (3)^2 = 4 + 1 + 9 = 14 \]

And now for the \(y\) values.

\[ (2-4)^2 + (3-4)^2 + (7-4)^2 \]

\[ (-2)^2 + (-1)^2 + (3)^2 = 4 + 1 + 9 = 14\]

We those numbers filled out, we can put them back in our equation and solve for our correlation.

\[ r _{ x y } = \frac{ 14 }{ \sqrt{ 14 \times 14 }} = \frac{14}{\sqrt{ 14^2}} = \frac{14}{14} = 1\]

We've successfully confirmed that we get \(r = 1\).

Although this was a simple example, it is always best to use simple examples for demonstration purposes. It shows our equation does indeed work, which will be important when coding it up in the next section.

Python and JavaScript code for the Pearson correlation coefficient

Math can sometimes be too abstract, so let's code this up for you to experiment with. As a reminder, here is the equation we are going to code up.

\[ r _{ x y } = \frac{ \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y}) }{ \sqrt{ \sum_{i=1}^{n} (x_i - \bar{x})^2 \sum_{i=1}^{n} (y_i - \bar{y})^2 } }\]

After going through the math above and reading the code below, it should be a bit clearer on how everything works together.

Below is the Python version of the Pearson correlation.

import math def pearson(x, y): """ Calculate Pearson correlation coefficent of arrays of equal length. Numerator is sum of the multiplication of (x - x_avg) and (y - y_avg). Denominator is the squart root of the product between the sum of (x - x_avg)^2 and the sum of (y - y_avg)^2. """ n = len(x) idx = range(n) # Averages avg_x = sum(x) / n avg_y = sum(y) / n numerator = sum([(x[i] - avg_x)*(y[i] - avg_y) for i in idx]) denom_x = sum([(x[i] - avg_x)**2 for i in idx]) denom_y = sum([(y[i] - avg_y)**2 for i in idx]) denominator = math.sqrt(denom_x * denom_y) return numerator / denominator

Here's an example of our Python code at work, and we can double check our work using a Pearson correlation function from the SciPy package.

import numpy as np import scipy.stats # Create fake data x = np.arange(5, 15) # array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) y = np.array([24, 0, 58, 26, 82, 89, 90, 90, 36, 56]) # Use a package to calculate Pearson's r # Note: the p variable below is the p-value for the Pearson's r. This tests # how far away our correlation is from zero and has a trend. r, p = scipy.stats.pearsonr(x, y) r # 0.506862548805646 # Use our own function pearson(x, y) # 0.506862548805646

Below is the JavaScript version of the Pearson correlation.

function pearson(x, y) { let n = x.length; let idx = Array.from({length: n}, (x, i) => i); // Averages let avgX = x.reduce((a,b) => a + b) / n; let avgY = y.reduce((a,b) => a + b) / n; let numMult = idx.map(i => (x[i] - avg_x)*(y[i] - avg_y)); let numerator = numMult.reduce((a, b) => a + b); let denomX = idx.map(i => Math.pow((x[i] - avgX), 2)).reduce((a, b) => a + b); let denomY = idx.map(i => Math.pow((y[i] - avgY), 2)).reduce((a, b) => a + b); let denominator = Math.sqrt(denomX * denomY); return numerator / denominator; };

Here's an example of our JavaScript code at work to double check our work.

x = Array.from({length: 10}, (x, i) => i + 5) // Array(10) [ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ] y = [24, 0, 58, 26, 82, 89, 90, 90, 36, 56] pearson(x, y) // 0.506862548805646

Feel free to translate the formula into either Python or JavaScript to better understand how it works.

In conclusion

Correlations are a helpful and accessible tool to better understand the relationship between any two numerical measures. It can be thought of as a start for predictive problems or just better understanding your business.

Correlation values, most commonly used as Pearson's r, range from \(-1\) to \(+1\) and can be categorized into negative correlation (\(-1 \lt r \lt 0\)), positive (\(0 \lt r \lt 1\)), and no correlation (\(r = 0\)).

A glimpse into the larger world of correlations

There is more than one way to calculate a correlation. Here we have touched on the case where both variables change at the same way. There are other cases where one variable may change at a different rate, but still have a clear relationship. This gives rise to what's called, non-linear relationships.

Note, correlation does not imply causation. If you need quick examples of why, look no further.

Below is a list of other articles I came across that helped me better understand the correlation coefficient.

  • If you want to explore a great interactive visualization on correlation, take a look at this simple and fantastic site.
  • Using Python, there multiple ways to implement a correlation and there are multiple types of correlation. This excellent tutorial shows great examples of Python code to experiment with yourself.
  • A blog post by Sabatian Sauer goes over correlations using "average deviation rectangles", where each point creates a visual rectangle from each point using the mean, and illustrating it using the R programming language.
  • Ja sügavalt uudishimulike inimeste jaoks vaadake seda artiklit, mis näitab 13 viisi korrelatsioonikordaja (PDF) vaatamiseks.

Jälgige mind Twitteris ja vaadake minu isiklikku ajaveebi, kus jagan mõningaid muid teadmisi ja kasulikke ressursse programmeerimise, statistika ja masinõppe jaoks.

Täname lugemast!