Corelațiile sunt un instrument excelent pentru a afla cum se schimbă un lucru cu altul. După ce ați citit acest lucru, ar trebui să înțelegeți ce este corelația, cum să vă gândiți la corelații în propria lucrare și să codificați o implementare minimă pentru a calcula corelațiile.

O corelație se referă la modul în care două lucruri se schimbă între ele

Corelația este un concept abstract de matematică, dar probabil că aveți deja o idee despre ce înseamnă. Iată câteva exemple ale celor trei categorii generale de corelație.

Pe măsură ce mâncați mai multe alimente, probabil că veți ajunge să vă simțiți mai plini. Acesta este un caz în care două lucruri se schimbă împreună în același mod. Una urcă (mănâncă mai multe alimente), apoi cealaltă crește și (simțindu-se sătul). Aceasta este o corelație pozitivă.

Ce este un coeficient de corelatie Valoarea r din statistici
Corelație pozitivă între alimentele consumate și senzația de plin. Se mănâncă mai multe alimente, cu atât s-ar putea să vă simțiți mai plin (tendință spre dreapta sus). Codul R

Când sunteți într-o mașină și merge mai repede, probabil veți ajunge mai repede la destinație și timpul total de călătorie va fi mai mic. Acesta este un caz în care două lucruri se schimbă în direcția opusă (mai multă viteză, dar mai puțin timp). Aceasta este o corelație negativă.

1611880811 307 Ce este un coeficient de corelatie Valoarea r din statistici
Corelație negativă între viteza mașinii și timpul de deplasare. Cu cât mașina este mai rapidă, timpul de călătorie este mai redus (tendință în dreapta jos). Codul R

Există, de asemenea, un al treilea mod posibil în care două lucruri se pot „schimba”. Sau mai bine zis, nu schimbare. De exemplu, dacă ar fi să câștigi în greutate și să te uiți la modul în care s-au schimbat scorurile testelor, probabil că nu va exista niciun model general de modificare a scorurilor testelor. Aceasta înseamnă că nu există nicio corelație.

1611880811 694 Ce este un coeficient de corelatie Valoarea r din statistici
Un complot exagerat fără corelație între creșterea în greutate și scorurile testelor. Codul R

Cunoașterea modului în care două lucruri se schimbă împreună este primul pas către predicție

A putea descrie ceea ce se întâmplă în exemplele noastre anterioare este minunat și totul. Dar ce rost are? Motivul este de a aplica aceste cunoștințe într-un mod semnificativ pentru a ajuta la prezicerea a ceea ce se va întâmpla în continuare.

În exemplul nostru de mâncare, putem înregistra cât mâncăm pentru o săptămână întreagă și apoi să notăm cât de plin ne simțim după aceea. Așa cum am constatat anterior, cu cât mâncăm mai mult, cu atât ne simțim mai plini.

După colectarea tuturor acestor informații, putem pune mai multe întrebări despre de ce se întâmplă acest lucru pentru a înțelege mai bine această relație. Aici, putem începe să ne întrebăm ce fel de alimente ne fac să fim mai plini sau dacă timpul zilei afectează cât de plin ne simțim și noi.

O gândire similară poate fi aplicată și slujbei sau afacerii dvs. Dacă observați că vânzările sau alte valori importante cresc sau scad cu alte măsuri ale afacerii dvs. (cu alte cuvinte, lucrurile sunt corelate pozitiv sau corelate negativ), ar putea fi util să explorați și să aflați mai multe despre relația respectivă pentru a vă îmbunătăți afacerea.

Corelațiile pot avea diferite niveluri de forță

Am acoperit unele dintre corelațiile generale

  • pozitiv,
  • negativ sau
  • inexistent

Deși aceste descrieri sunt în regulă, toate corelațiile pozitive și negative nu sunt toate la fel.

Aceste descrieri pot fi, de asemenea, traduse în cifre. O valoare de corelație poate lua orice valoare zecimală între una negativă, (- 1 ) și una pozitivă, (+ 1 ).

Valorile zecimale dintre (- 1 ) și (0 ) sunt corelații negative, cum ar fi (- 0,32 ).

Valorile zecimale dintre (0 ) și (+ 1 ) sunt corelații pozitive, cum ar fi (+ 0,63 ).

O corelație zero perfectă înseamnă că nu există nicio corelație.

Pentru fiecare tip de corelație, există o serie de corelații puternice și corelații slabe. Valori de corelație mai aproape de zero sunt corelații mai slabe, în timp ce valori mai aproape de unul pozitiv sau negativ sunt corelații mai puternice.

Corelațiile puternice arată tendințe mai evidente în date, în timp ce cele slabe arată mai dezordonate. De exemplu, cea mai puternică corelație pozitivă de mai jos arată mai mult ca o linie în comparație cu corelația pozitivă mai slabă și mai mică.

Exemple de corelații pozitive scăzute, ridicate și perfecte între x și y
Niveluri variabile de corelații pozitive. Codul R.

În mod similar, corelațiile puternic negative au o tendință mai evidentă decât corelația negativă mai slabă și mai mică.

Exemple de corelații negative scăzute, ridicate și perfecte între x și y
Nivele variabile de corelații negative. Codul R

Unde face r valoarea provine de la? Și ce valori poate lua?

r valoare “este un mod obișnuit de a indica o valoare de corelație. Mai precis, se referă la corelația (eșantion) Pearson sau la r. Nota „eșantion” este pentru a sublinia faptul că puteți revendica doar corelația pentru datele pe care le aveți și trebuie să fiți precaut în a face revendicări mai mari dincolo de datele dvs.

Tabelul de mai jos rezumă ceea ce am tratat până acum despre corelații.

Valoarea r a lui Pearson Corelația dintre două lucruri este … Exemplu
r = -1 Perfect negativ Ora zilei și numărul de ore rămase în zi
r Negativ Viteze mai rapide ale mașinii și timp de călătorie mai mic
r = 0 Independent sau necorelat Creșterea în greutate și scorurile testelor
r> 0 Pozitiv Mai multă mâncare mâncată și senzație mai plină
r = 1 Perfect pozitiv Crește în vârsta mea și crește în vârsta ta

În următoarele secțiuni, vom face

  • Descompuneți ecuația matematică pentru a calcula corelațiile
  • Folosiți exemple de numere pentru a utiliza această ecuație de corelație
  • Codificați ecuația matematică în Python și JavaScript

Descompunerea matematicii pentru a calcula corelațiile

Ca memento, corelațiile pot fi doar între (- 1 ) și (1 ). De ce este asta?

Răspunsul rapid este că ajustăm cantitatea de modificare a ambelor variabile la o scară comună. În termeni mai tehnici, normalizăm cât de mult se schimbă cele două variabile împreună cu cât se schimbă fiecare dintre cele două variabile de la sine.

Din Wikipedia, putem înțelege definiția matematică a coeficientului de corelație Pearson. Arată foarte complicat, dar să o descompunem împreună.

[ 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 } }]

Din această ecuație, pentru a găsi ( textcolor {lime} { text {corelație}} ) între un ( textcolor {# 4466ff} { text {x variabilă}} ) și un ( textcolor { fuchsia} { text {y variable}} ), mai întâi trebuie să calculăm valoarea medie ( textcolor {verde} { text {pentru toate} x text {valori}} ) și ( textcolor {olive} { text {valoare medie pentru toate} y text {valori}} ).

Să ne concentrăm pe partea de sus a ecuației, cunoscută și sub numele de numărător. Pentru fiecare dintre variabilele (x ) și (y ), va trebui apoi să găsim distanța valorilor (x ) de la media lui (x ) și să facem aceeași scădere cu (y ).

Intuitiv, compararea tuturor acestor valori cu media ne oferă un punct țintă pentru a vedea câtă schimbare există într-una dintre variabile.

Acest lucru este văzut în forma matematică, ( textcolor {# 800080} { sum_ {i = 1} ^ {n}} ( textcolor {# 000080} {x_i – overline {x}}) ), ( textcolor {# 800080} { text {adună toate}} ) ( textcolor {# 000080} { text {diferențele dintre}} ) valorile dvs. cu valoarea medie pentru (x ) variabil.

În partea de jos a ecuației, cunoscută și sub numele de numitor, facem un calcul similar. Cu toate acestea, înainte de a adăuga toate distanțele față de valorile noastre și de mediile lor, le vom multiplica de la sine (asta face (( ldots) ^ 2 )).

Acest numitor este ceea ce „ajustează” corelația astfel încât valorile să fie între (- 1 ) și (1 ).

Folosirea numerelor în ecuația noastră pentru ao face reală

Pentru a demonstra matematica, să găsim corelația dintre vârstele dvs. și frații dvs. anul trecut ([1, 2, 6]) și vârstele dvs. pentru acest an ([2, 3, 7]). Rețineți că acesta este un mic exemplu. De obicei, ați dori ca mai mult de trei eșantioane să aibă mai multă încredere în faptul că corelația dvs. este adevărată.

Privind numerele, acestea par să crească la fel. Puteți observa, de asemenea, că sunt aceeași succesiune de numere, dar al doilea set de numere are unul adăugat. Acest lucru este la fel de aproape de o corelație perfectă pe cât vom obține. Cu alte cuvinte, ar trebui să obținem un (r = 1 ).

Mai întâi trebuie să calculăm mediile fiecăruia. Media de ([1, 2, 6]) este ((1 + 2 + 6) / 3 = 3 ) și media lui ([2, 3, 7]) este ((2 + 3 + 7) / 3 = 4 ). Completând ecuația noastră, obținem

[ 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 } }]

Privind partea de sus a ecuației, trebuie să găsim diferențele asociate dintre (x ) și (y ). Amintiți-vă, ( sum ) este simbolul pentru adăugare. Apoi, vârful devine

[ (1-3)(2-4) + (2-3)(3-4) + (6-3)(7-4) ] [= (-2)(-2) + (-1)(-1) + (3)(3) ] [= 4 + 1 + 9 = 14]

Deci vârful devine 14.

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

În partea de jos a ecuației, trebuie să facem câteva calcule foarte similare, cu excepția concentrării doar pe (x ) și (x ) separat înainte de multiplicare.

Să ne concentrăm mai întâi pe doar ( sum_ {i = 1} ^ n (x_i – 3) ^ 2 ). Amintiți-vă, (3 ) aici este media tuturor valorilor (x ). Acest număr se va schimba în funcție de datele dvs. particulare.

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

Și acum pentru valorile (y ).

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

Noi, aceste numere completate, le putem pune înapoi în ecuația noastră și le putem rezolva pentru corelația noastră.

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

Am confirmat cu succes că obținem (r = 1 ).

Deși acesta a fost un exemplu simplu, este întotdeauna cel mai bine să folosiți exemple simple în scopuri demonstrative. Arată că ecuația noastră funcționează într-adevăr, ceea ce va fi important atunci când o codificăm în secțiunea următoare.

Cod Python și JavaScript pentru coeficientul de corelație Pearson

Matematica poate fi uneori prea abstractă, așa că haideți să codificăm acest lucru pentru a experimenta. Ca memento, iată ecuația pe care o vom codifica.

[ 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 } }]

După ce parcurgeți matematica de mai sus și citiți codul de mai jos, ar trebui să fie un pic mai clar cu privire la modul în care funcționează totul împreună.

Mai jos este versiunea Python a corelației Pearson.

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
Coeficientul de corelație Pearson programat în Python

Iată un exemplu al codului nostru Python la locul de muncă și putem verifica de două ori munca noastră folosind o funcție de corelație Pearson din pachetul SciPy.

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

Mai jos este versiunea JavaScript a corelației Pearson.

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;
};
Coeficientul de corelație Pearson programat în JavaScript

Iată un exemplu al codului nostru JavaScript la locul de muncă pentru a verifica de două ori munca noastră.

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

Simțiți-vă liber să traduceți formula în Python sau JavaScript pentru a înțelege mai bine cum funcționează.

In concluzie

Corelațiile sunt un instrument util și accesibil pentru a înțelege mai bine relația dintre oricare două măsuri numerice. Poate fi gândit ca un început pentru probleme predictive sau doar pentru a vă înțelege mai bine afacerea.

Valori de corelație, utilizate cel mai frecvent ca Pearson r, variază de la (- 1 ) la (+ 1 ) și poate fi clasificat în corelație negativă ( (- 1 lt r lt 0 )), pozitivă ( (0 lt r lt 1 )) și fără corelație ( (r = 0 )).

O privire în lumea mai largă a corelațiilor

Există mai multe modalități de a calcula o corelație. Aici am abordat cazul în care ambele variabile se schimbă în același mod. Există și alte cazuri în care o variabilă se poate schimba la o rată diferită, dar totuși are o relație clară. Acest lucru dă naștere la ceea ce se numește relații neliniare.

Notă, corelația nu implică cauzalitate. Dacă aveți nevoie de exemple rapide de ce, Nu mai căuta.

Mai jos este o listă cu alte articole pe care le-am întâlnit care m-au ajutat să înțeleg mai bine coeficientul de corelație.

  • Dacă doriți să explorați o vizualizare interactivă excelentă asupra corelației, aruncați o privire la acest simplu și fantastic site.
  • Folosind Python, există mai multe modalități de a implementa o corelație și există mai multe tipuri de corelație. Acest excelent tutorial arată exemple excelente de cod Python pentru a experimenta cu tine însuți.
  • A postare pe blog de Sabatian Sauer trece peste corelații folosind „dreptunghiuri de deviație medie”, unde fiecare punct creează un dreptunghi vizual din fiecare punct folosind media și ilustrându-l folosind limbajul de programare R.
  • Și pentru cei profund curioși de acolo, aruncați o privire această lucrare prezintă 13 moduri de a privi coeficientul de corelație (PDF).

Urmează-mă pe mine Stare de nervozitate și verifică-mi blog personal unde împărtășesc alte informații și resurse utile pentru programare, statistici și învățare automată.

Mulțumesc pentru lectură!