Was ist ein Korrelationskoeffizient? Der r-Wert in der Statistik erklärt

Korrelationen sind ein großartiges Werkzeug, um zu lernen, wie sich eine Sache mit der anderen ändert. Nachdem Sie dies gelesen haben, sollten Sie verstehen, was Korrelation ist, wie Sie über Korrelationen in Ihrer eigenen Arbeit nachdenken und eine minimale Implementierung codieren, um Korrelationen zu berechnen.

Bei einer Korrelation geht es darum, wie sich zwei Dinge miteinander ändern

Korrelation ist ein abstraktes mathematisches Konzept, aber Sie haben wahrscheinlich bereits eine Vorstellung davon, was es bedeutet. Hier sind einige Beispiele für die drei allgemeinen Korrelationskategorien.

Wenn Sie mehr essen, werden Sie sich wahrscheinlich satter fühlen. Dies ist der Fall, wenn sich zwei Dinge auf dieselbe Weise gemeinsam ändern. Einer steigt (isst mehr), der andere steigt (fühlt sich satt). Dies ist eine positive Korrelation .

Wenn Sie in einem Auto sitzen und es schneller fährt, werden Sie wahrscheinlich schneller an Ihr Ziel gelangen und Ihre Gesamtreisezeit wird kürzer sein. Dies ist ein Fall von zwei Dingen, die sich in die entgegengesetzte Richtung ändern (mehr Geschwindigkeit, aber weniger Zeit). Dies ist eine negative Korrelation .

Es gibt auch eine dritte Möglichkeit, wie sich zwei Dinge "ändern" können. Oder besser gesagt, nicht ändern. Wenn Sie beispielsweise an Gewicht zunehmen und sich ansehen, wie sich Ihre Testergebnisse geändert haben, gibt es wahrscheinlich kein allgemeines Änderungsmuster für Ihre Testergebnisse. Dies bedeutet, dass keine Korrelation besteht.

Zu wissen, wie sich zwei Dinge zusammen ändern, ist der erste Schritt zur Vorhersage

Es ist großartig, beschreiben zu können, was in unseren vorherigen Beispielen vor sich geht. Aber worum geht es? Der Grund ist, dieses Wissen auf sinnvolle Weise anzuwenden, um vorherzusagen, was als nächstes passieren wird.

In unserem Beispiel zum Essen können wir aufzeichnen, wie viel wir eine ganze Woche lang essen, und dann notieren, wie voll wir uns danach fühlen. Wie wir zuvor festgestellt haben, fühlen wir uns umso voller, je mehr wir essen.

Nachdem wir alle diese Informationen gesammelt haben, können wir weitere Fragen dazu stellen, warum dies geschieht, um diese Beziehung besser zu verstehen. Hier fragen wir uns vielleicht, welche Art von Lebensmitteln uns satter macht oder ob die Tageszeit Einfluss darauf hat, wie voll wir uns auch fühlen.

Ähnliches gilt auch für Ihren Job oder Ihr Unternehmen. Wenn Sie feststellen, dass der Umsatz oder andere wichtige Kennzahlen mit anderen Maßstäben Ihres Geschäfts steigen oder fallen (mit anderen Worten, die Dinge sind positiv oder negativ korreliert), kann es sich lohnen, diese Beziehung zu erkunden und mehr darüber zu erfahren, um Ihr Geschäft zu verbessern.

Korrelationen können unterschiedliche Stärken haben

Wir haben auch einige allgemeine Zusammenhänge behandelt

  • positiv,
  • negativ oder
  • nicht existent

Obwohl diese Beschreibungen in Ordnung sind, sind nicht alle positiven und negativen Korrelationen gleich.

Diese Beschreibungen können auch in Zahlen übersetzt werden. Ein Korrelationswert kann einen beliebigen Dezimalwert zwischen dem negativen Wert \ (- 1 \) und dem positiven Wert \ (+ 1 \) annehmen.

Dezimalwerte zwischen \ (- 1 \) und \ (0 \) sind negative Korrelationen wie \ (- 0,32 \).

Dezimalwerte zwischen \ (0 \) und \ (+ 1 \) sind positive Korrelationen wie \ (+ 0,63 \).

Eine perfekte Nullkorrelation bedeutet, dass es keine Korrelation gibt.

Für jede Art von Korrelation gibt es eine Reihe starker und schwacher Korrelationen. Korrelationswerte, die näher an Null liegen , sind schwächere Korrelationen , während Werte, die näher an der positiven oder negativen Eins liegen, eine stärkere Korrelation sind .

Starke Korrelationen zeigen offensichtlichere Trends in den Daten, während schwache unordentlicher aussehen. Zum Beispiel sieht die stärkere hohe positive Korrelation unten eher wie eine Linie aus als die schwächere und niedrigere positive Korrelation.

Beispiele für niedrige, hohe und perfekte positive Korrelationen zwischen x und y

In ähnlicher Weise weisen stark negative Korrelationen einen offensichtlicheren Trend auf als die schwächere und niedrigere negative Korrelation.

Beispiele für niedrige, hohe und perfekte negative Korrelationen zwischen x und y

Woher kommt der r- Wert? Und welche Werte kann es annehmen?

Der " r- Wert" ist ein üblicher Weg, um einen Korrelationswert anzuzeigen. Insbesondere bezieht es sich auf die (Stichproben-) Pearson-Korrelation oder Pearson's r . Der Hinweis "Beispiel" soll betonen, dass Sie nur die Korrelation für die Daten beanspruchen können, über die Sie verfügen, und dass Sie vorsichtig sein müssen, wenn Sie größere Ansprüche über Ihre Daten hinaus geltend machen.

Die folgende Tabelle fasst zusammen, was wir bisher über Korrelationen behandelt haben.

Pearsons r-WertDie Korrelation zwischen zwei Dingen ist ...Beispiel
r = -1Perfekt negativStunde des Tages und Anzahl der verbleibenden Stunden am Tag
r <0NegativSchnellere Fahrzeuggeschwindigkeiten und kürzere Fahrzeiten
r = 0Unabhängig oder unkorreliertGewichtszunahme und Testergebnisse
r> 0PositivMehr Essen gegessen und sich voller fühlen
r = 1Perfekt positivErhöhen Sie in meinem Alter und erhöhen Sie in Ihrem Alter

In den nächsten Abschnitten werden wir

  • Zerlegen Sie die mathematische Gleichung, um Korrelationen zu berechnen
  • Verwenden Sie Beispielnummern, um diese Korrelationsgleichung zu verwenden
  • Codieren Sie die mathematische Gleichung in Python und JavaScript

Zerlegen Sie die Mathematik, um Korrelationen zu berechnen

Zur Erinnerung, Korrelationen können nur zwischen \ (- 1 \) und \ (1 \) bestehen. Warum das?

Die schnelle Antwort lautet, dass wir das Ausmaß der Änderung in beiden Variablen auf eine gemeinsame Skala einstellen. Technischer ausgedrückt normalisieren wir, wie stark sich die beiden Variablen zusammen ändern, um wie viel sich jede der beiden Variablen für sich ändert.

Aus Wikipedia können wir die mathematische Definition des Pearson-Korrelationskoeffizienten abrufen. Es sieht sehr kompliziert aus, aber lassen Sie es uns gemeinsam aufschlüsseln.

\[ \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.
  • And for the deeply curious people out there, take a look at this paper showing 13 ways to look at the correlation coefficient (PDF).

Follow me on Twitter and check out my personal blog where I share some other insights and helpful resources for programming, statistics, and machine learning.

Thanks for reading!