Mikä on korrelaatiokerroin? R-arvo tilastossa selitetty

Korrelaatiot ovat loistava työkalu oppia siitä, miten yksi asia muuttuu toisen kanssa. Kun olet lukenut tämän, sinun tulisi ymmärtää, mikä korrelaatio on, miten ajatella korrelaatioita omassa työssäsi ja koodata minimaalinen toteutus korrelaatioiden laskemiseksi.

Korrelaatio koskee sitä, kuinka kaksi asiaa muuttuu keskenään

Korrelaatio on abstrakti matemaattinen käsite, mutta sinulla on todennäköisesti jo käsitys siitä, mitä se tarkoittaa. Tässä on joitain esimerkkejä kolmesta yleisestä korrelaatioluokasta.

Kun syöt enemmän ruokaa, olet todennäköisesti päätyä täydemmäksi. Tämä on tapaus, kun kaksi asiaa muuttuu yhdessä samalla tavalla. Yksi nousee ylös (syö enemmän ruokaa), sitten toinen myös nousee (tuntuu täynnä). Tämä on positiivinen korrelaatio .

Kun olet autossa ja se menee nopeammin, pääset todennäköisesti määränpäähäsi nopeammin ja kokonaismatka-aika on lyhyempi. Tässä on kyse kahdesta asiasta, jotka muuttuvat vastakkaiseen suuntaan (enemmän nopeutta, mutta vähemmän aikaa). Tämä on negatiivinen korrelaatio .

On myös kolmas tapa, jolla kaksi asiaa voi "muuttua". Tai pikemminkin, älä muuta. Jos esimerkiksi painotat ja katsot, kuinka testituloksesi muuttuivat, testipisteissäsi ei todennäköisesti ole yleistä muutosmallia. Tämä tarkoittaa, ettei korrelaatiota ole.

Tieto siitä, miten kaksi asiaa muuttuu yhdessä, on ensimmäinen askel ennustamiseen

Mahdollisuus kuvata, mitä edellisissä esimerkeissämme tapahtuu, on hienoa ja kaikki. Mutta mitä järkeä siinä on? Syynä on käyttää tätä tietoa mielekkäällä tavalla, jotta voidaan ennustaa, mitä seuraavaksi tapahtuu.

Syömisen esimerkissämme voimme tallentaa, kuinka paljon syömme koko viikon ajan, ja sitten tehdä muistiinpanon siitä, kuinka täynnä tunnemme jälkeenpäin. Kuten aiemmin havaitsimme, mitä enemmän syömme, sitä täyteläisemmäksi tunnemme.

Kun olemme keränneet kaikki nämä tiedot, voimme kysyä lisää siitä, miksi näin tapahtuu, jotta voimme paremmin ymmärtää tätä suhdetta. Täällä voimme alkaa kysyä, millainen ruoka tekee meistä täydellisempiä vai vaikuttaako vuorokauden aika siihen, kuinka täynnä meitä myös tuntuu.

Samanlaista ajattelua voidaan soveltaa myös työhösi tai yritykseesi. Jos huomaat myynnin tai muiden tärkeiden mittareiden nousevan tai laskevan yrityksesi muun mittarin kanssa (toisin sanoen asiat korreloivat positiivisesti tai korreloivat negatiivisesti), voi olla syytä tutkia ja oppia lisää kyseisestä suhteesta liiketoimintasi parantamiseksi.

Korrelaatioiden vahvuus voi olla erilainen

Olemme käsitelleet joitain yleisiä korrelaatioita joko

  • positiivinen,
  • negatiivinen tai
  • olematon

Vaikka nämä kuvaukset ovat kunnossa, kaikki positiiviset ja negatiiviset korrelaatiot eivät ole kaikki samat.

Nämä kuvaukset voidaan kääntää myös numeroiksi. Korrelaatioarvo voi saada minkä tahansa desimaalin arvon negatiivisen, \ (- 1 \) ja positiivisen, \ (+ 1 \) välillä.

Desimaaliarvot välillä \ (- 1 \) ja \ (0 \) ovat negatiivisia korrelaatioita, kuten \ (- 0,32 \).

Desimaaliarvot välillä \ (0 \) ja \ (+ 1 \) ovat positiivisia korrelaatioita, kuten \ (+ 0,63 \).

Täydellinen nollakorrelaatio tarkoittaa, että korrelaatiota ei ole.

Jokaiselle korrelaatiotyypille on olemassa joukko voimakkaita ja heikkoja korrelaatioita. Korrelaatioarvot lähempänä nollaa ovat heikompia korrelaatiot , kun taas arvoja lähempänä positiivinen tai negatiivinen yksi on voimakkaampaa korrelaatiota .

Voimakkaat korrelaatiot osoittavat datassa selvempiä trendejä, kun taas heikot korruptiot näyttävät keskimääräisemmiltä. Esimerkiksi alla oleva vahvempi korkea, positiivinen korrelaatio näyttää enemmän viivalta verrattuna heikompaan ja pienempään positiiviseen korrelaatioon.

Esimerkkejä matalasta, korkeasta ja täydellisestä positiivisesta korrelaatiosta x: n ja y: n välillä

Vastaavasti voimakkaasti negatiivisilla korrelaatioilla on selvempi trendi kuin heikommalla ja matalammalla negatiivisella korrelaatiolla.

Esimerkkejä matalasta, korkeasta ja täydellisestä negatiivisesta korrelaatiosta x: n ja y: n välillä

Mistä r- arvo tulee? Mitä arvoja se voi tehdä?

" R- arvo" on yleinen tapa osoittaa korrelaatioarvo. Tarkemmin sanottuna se viittaa (näyte) Pearsonin korrelaatioon tai Pearsonin r: ään . "Esimerkki" -merkinnällä on korostettava, että voit vaatia vain vastaavuutta omilla tiedoillasi, ja sinun on oltava varovainen, kun teet suurempia vaatimuksia kuin tietosi.

Alla olevassa taulukossa on yhteenveto siitä, mitä olemme toistaneet korrelaatioista tähän mennessä.

Pearsonin r-arvo Kahden asian välinen korrelaatio on ... Esimerkki
r = -1 Täysin negatiivinen Päivän tunti ja päivässä jäljellä olevien tuntien määrä
r <0 Negatiivinen Nopeampi auton nopeus ja matalampi matka-aika
r = 0 Itsenäinen tai korreloimaton Painonnousu ja testitulokset
r> 0 Positiivinen Lisää ruokaa syöty ja tunne täyteläisempää
r = 1 Täysin positiivinen Kasvata ikäni ja kasvaa ikäsi

Seuraavissa osioissa aiomme

  • Erota matemaattinen yhtälö korrelaatioiden laskemiseksi
  • Käytä esimerkkilukuja tämän korrelaatioyhtälön käyttämiseen
  • Koodaa matematiikkayhtälö Pythonissa ja JavaScriptissä

Jaottamalla matematiikka korrelaatioiden laskemiseksi

Muistutuksena korrelaatiot voivat olla vain välillä \ (- 1 \) ja \ (1 \). Miksi niin?

The quick answer is that we adjust the amount of change in both variables to a common scale. In more technical terms, we normalize how much the two variables change together by how much each of the two variables change by themselves.

From Wikipedia, we can grab the math definition of the Pearson correlation coefficient. It looks very complicated, but let's break it down together.

\[ \textcolor{lime}{r} _{ \textcolor{#4466ff}{x} \textcolor{fuchsia}{y} } = \frac{ \sum_{i=1}^{n} (x_i - \textcolor{green}{\bar{x}})(y_i - \textcolor{olive}{\bar{y}}) }{ \sqrt{ \sum_{i=1}^{n} (x_i - \textcolor{green}{\bar{x}})^2 \sum_{i=1}^{n} (y_i - \textcolor{olive}{\bar{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 syvälle uteliaille ihmisille, katsokaa tätä paperia, jossa on 13 tapaa tarkastella korrelaatiokerrointa (PDF).

Seuraa minua Twitterissä ja tutustu henkilökohtaiseen blogiini, jossa jaan joitain muita oivalluksia ja hyödyllisiä resursseja ohjelmointiin, tilastoihin ja koneoppimiseen.

Kiitos lukemisesta!