Weiter zum Inhalt

R-Korrelation: Das Tutorial

Lerne die Grundlagen der Korrelation in R kennen: Korrelationkoeffizienten, Korrelationsmatrizen, Korrelationen visualisieren und mehr.
Aktualisiert 18. Sept. 2026  · 13 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Korrelation

In diesem Tutorial lernst du verschiedene Methoden der Datenvisualisierung und die zugrunde liegenden Statistiken kennen. Besonders mit Blick darauf, Trends und Zusammenhänge zwischen Variablen in einem Data Frame zu erkennen.

Genau, der Fokus liegt auf Konzepten wie Korrelation und Regression! Zuerst bekommst du eine Einführung in Korrelation in R. Anschließend siehst du, wie du Korrelationsmatrizen in R mit Paketen wie ggplot2 und GGally visualisieren kannst. Zum Schluss lernst du, welche Korrelationsarten es gibt und warum sie für deine weitere Analyse relevant sind.

Wenn du tiefer einsteigen möchtest, schau dir den DataCamp-Kurs Correlation and Regression an.

Hintergrund

In diesem Tutorial arbeitest du mit einem Film-Datensatz von Kaggle, um besser zu verstehen, wie Variablen zusammenhängen.

Ich habe die Daten leicht aufbereitet, damit wir einen echten „Äpfel-mit-Äpfeln“-Vergleich anstellen können, zum Beispiel indem Währungen in denselben Einheiten vorliegen. Ohne diesen Schritt wären statistische Analysen von Variablen wie gross, budget und profit irreführend. Du kannst auf den Originaldatensatz zugreifen.

Daten importieren

Um auf den movies-Datensatz zuzugreifen und ihn zu verwenden, kannst du mit der Funktion read.csv() die Daten in einen Data Frame importieren und in der Variable mit dem äußerst kreativen Namen movies speichern!

movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))

Mehr braucht es zum Start nicht!

Erste Sichtprüfung deiner Daten

Sobald ein Data Frame importiert ist, solltest du dir einen Überblick verschaffen. Prüfe zuerst die Struktur der Daten. Unten siehst du das Ergebnis der supernützlichen Funktion str():

str(movies)
## 'data.frame':    2961 obs. of  11 variables:
##  $ title              : Factor w/ 2907 levels "10 Cloverfield Lane",..: 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
##  $ genre              : Factor w/ 17 levels "Action","Adventure",..: 6 12 5 5 5 3 2 8 3 8 ...
##  $ director           : Factor w/ 1366 levels "Aaron Schneider",..: 474 472 781 828 175 1355 1328 1328 968 747 ...
##  $ year               : int  1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
##  $ duration           : int  110 100 89 81 87 83 102 226 88 144 ...
##  $ gross              : int  3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
##  $ budget             : int  100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
##  $ cast_facebook_likes: int  4 109 995 824 352 229 2509 1862 1178 2037 ...
##  $ votes              : int  5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
##  $ reviews            : int  2 107 162 164 331 349 746 863 252 119 ...
##  $ rating             : num  4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ...

In diesem Data Frame siehst du in der Konsole 2961 Beobachtungen zu 11 Variablen.

Nebenbei bemerkt: Selbst wenn jeder Film nur eine Stunde dauern würde, müsstest du über vier Monate nonstop schauen, um alle zu sehen!

Die Konsole listet außerdem jede Variable mit Namen, Klasse und einigen Beispielwerten auf. So bekommst du ein gutes Gefühl dafür, was im Data Frame steckt – eine wichtige Grundlage für jede Analyse.

Eine weitere hilfreiche Funktion für einen schnellen Überblick ist summary(). Achte auf Gemeinsamkeiten und Unterschiede zur Ausgabe von str().

summary(movies)
##                          title            genre    
##  Home                       :   3   Comedy   :848  
##  A Nightmare on Elm Street  :   2   Action   :738  
##  Across the Universe        :   2   Drama    :498  
##  Alice in Wonderland        :   2   Adventure:288  
##  Aloha                      :   2   Crime    :202  
##  Around the World in 80 Days:   2   Biography:135  
##  (Other)                    :2948   (Other)  :252  
##               director         year         duration    
##  Steven Spielberg :  23   Min.   :1920   Min.   : 37.0  
##  Clint Eastwood   :  19   1st Qu.:1999   1st Qu.: 95.0  
##  Martin Scorsese  :  16   Median :2004   Median :106.0  
##  Tim Burton       :  16   Mean   :2003   Mean   :109.6  
##  Spike Lee        :  15   3rd Qu.:2010   3rd Qu.:119.0  
##  Steven Soderbergh:  15   Max.   :2016   Max.   :330.0  
##  (Other)          :2857                                 
##      gross               budget          cast_facebook_likes
##  Min.   :      703   Min.   :      218   Min.   :     0     
##  1st Qu.: 12276810   1st Qu.: 11000000   1st Qu.:  2241     
##  Median : 34703228   Median : 26000000   Median :  4604     
##  Mean   : 58090401   Mean   : 40619384   Mean   : 12394     
##  3rd Qu.: 75590286   3rd Qu.: 55000000   3rd Qu.: 16926     
##  Max.   :760505847   Max.   :300000000   Max.   :656730     
##                                                             
##      votes            reviews           rating     
##  Min.   :      5   Min.   :   2.0   Min.   :1.600  
##  1st Qu.:  19918   1st Qu.: 199.0   1st Qu.:5.800  
##  Median :  55749   Median : 364.0   Median :6.500  
##  Mean   : 109308   Mean   : 503.3   Mean   :6.389  
##  3rd Qu.: 133348   3rd Qu.: 631.0   3rd Qu.:7.100  
##  Max.   :1689764   Max.   :5312.0   Max.   :9.300  
## 

Mit einem Befehl liefert dir R zentrale statistische Kennzahlen für jede Variable im Data Frame. Jetzt, wo du weißt, womit du arbeitest, lass uns tiefer eintauchen!

Feature Engineering: Profit berechnen

Beim Blick auf die verfügbaren Variablen fällt auf, dass sich einige numerische Variablen kombinieren lassen, um neue Erkenntnisse zu gewinnen.

Du hast zum Beispiel gross und budget. Warum also nicht per Subsetting den Profit für jeden Film berechnen?

Den Profit berechnest du mit der Formel profit = gross - budget. Probier es im DataCamp-Light-Block unten aus!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKSIsInNhbXBsZSI6IiMgRmlsbCBpbiB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGUgbmFtZXMgdG8gc3Vic2V0IVxucHJvZml0IDwtIG1vdmllcyQuLi4uLiAtIG1vdmllcyQuLi4uLlxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNvbHV0aW9uIjoiIyBGaWxsIGluIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZSBuYW1lcyB0byBzdWJzZXQhXG5wcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNjdCI6InRlc3Rfb2JqZWN0KFwicHJvZml0XCIsIHVuZGVmaW5lZF9tc2c9XCJEaWQgeW91IGNvcnJlY3RseSBkZWZpbmUgdGhlIHZhcmlhYmxlIGBwcm9maXRgP1wiLCBpbmNvcnJlY3RfbXNnID0gXCJOb3QgcXVpdGUhXCIpXG50ZXN0X2Vycm9yKClcbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IVwiKSJ9

Top!

Du siehst: In unserem Data Frame gibt es einige Kassenschlager – und einige teure Flops.

Der profit lässt sich sicher später noch für spannende Analysen nutzen. Also fügen wir profit direkt als neue Spalte dem Data Frame hinzu.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikiLCJzYW1wbGUiOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2AgXG5tb3ZpZXMkLi4uLi4gPC0gbW92aWVzJC4uLi4uIC0gbW92aWVzJC4uLi4uIiwic29sdXRpb24iOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2Bcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldCJ9

Korrelation

Jetzt, wo profit als neue Spalte im Data Frame steht, ist es Zeit, die Beziehungen zwischen den Variablen genauer zu betrachten.

Schauen wir uns an, wie profit im Verhältnis zur rating jeder einzelnen Produktion schwankt.

Dafür kannst du die eingebauten R-Funktionen plot und abline nutzen. plot erzeugt ein Streudiagramm, und abline zeichnet – dank des linearen Modells im Argument, wie du gleich siehst – die Regressionsgerade bzw. „Line of Best Fit“.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKVxubW92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5vcHRpb25zKHNjaXBlbiA9IDk5OSkiLCJzYW1wbGUiOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJC4uLi4sIG1vdmllcyQuLi4uKVxuXG4jIEFkZCBhIHJlZ3Jlc3Npb24gbGluZXdpdGggdGhlIGZvcm0gYGFibGluZShsbSh5IH4geCkpYFxuXG5hYmxpbmUobG0obW92aWVzJC4uLi4gfiBtb3ZpZXMkLi4uLikpIiwic29sdXRpb24iOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJHJhdGluZywgbW92aWVzJHByb2ZpdClcblxuIyBBZGQgYSByZWdyZXNzaW9uIGxpbmUgd2l0aCB0aGUgZm9ybSBgYWJsaW5lKGxtKHkgfiB4KSlgIFxuYWJsaW5lKGxtKG1vdmllcyRwcm9maXQgfiBtb3ZpZXMkcmF0aW5nKSkifQ==

Entsprach die Ausgabe in etwa deinen Erwartungen?

R-Regression

Im Allgemeinen scheinen Filme mit höherer rating auch höheren profit zu erzielen. Anders gesagt: Zwischen rating und profit besteht eine positive Korrelation – zumindest in unserem Data Frame.

Allerdings zeigt schon der flüchtige Blick auf den Plot: Es gibt einige hoch bewertete Filme ohne großen kommerziellen Erfolg – und sehr profitable Filme mit eher mäßigen Bewertungen.

Korrelation ist NICHT gleich Kausalität!

Eine kleine Anekdote zur Verdeutlichung: Ich betreibe einen Eistand am Strand. Die durchschnittliche Zahl an Rotlichtsündern in der Stadt steigt, wenn mein Eisverkauf steigt. Verführt mein Eis die Leute dazu, Verkehrsregeln zu brechen – oder wirkt ein dritter Faktor? Mein Eis ist zwar großartig, aber die Sonne hat vermutlich mehr Einfluss: Sie sorgt dafür, dass Menschen Eis wollen und keine Lust haben, an der Ampel in der Hitze zu stehen. Es gibt also einen Zusammenhang (Korrelation) zwischen Eisverkauf und Zahl der Rotlichtsünder, aber daraus folgt keine Kausalität.

Behalte diese Unterscheidung im Hinterkopf, während du das Tutorial durcharbeitest!

Korrelation in R berechnen

Welche Beziehungen bestehen zwischen den Variablen in movies – und wie bewertest du sie quantitativ?

Ein erster Schritt sind Korrelationen und Korrelationsmatrizen mit cor():

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIilcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxub3B0aW9ucyhzY2lwZW4gPSA5OTkpIiwic2FtcGxlIjoiIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb25cbmNvcihtb3ZpZXMkcmF0aW5nLCBtb3ZpZXMkcHJvZml0KVxuXG4jIENvcnJlbGF0aW9uIE1hdHJpeFxuY29yKG1vdmllc1ssNDoxMF0pIn0=

Hinweis: Du kannst auch die Methode angeben, also welchen Korrelationskoeffizienten du berechnen willst. Achtung: Diese Methoden machen Annahmen. Kendall und Spearman setzen geordnete Eingaben voraus. Das heißt, du musst deine Daten vor der Berechnung entsprechend ordnen.

Außerdem setzt die Standardmethode, die Pearson-Korrelation, voraus, dass deine Variablen normalverteilt sind, zwischen ihnen eine lineare Beziehung besteht und die Werte um die Regressionsgerade herum normalverteilt sind.

Außerdem kannst du mit rcorr() aus dem Paket Hmisc Signifikanzen für Pearson- und Spearman-Korrelationen berechnen.

Die Korrelationsmatrix ist im Grunde eine Tabelle mit Korrelationskoeffizienten zwischen Variablenpaaren. Das ist ein sehr guter erster Schritt, um ein Gefühl für die Beziehungen im Datensatz zu bekommen – und genau das vertiefen wir im nächsten Abschnitt.

Korrelation visuell erkunden: Die R-Korrelationsmatrix

Als Nächstes zeichnest du eine Korrelationsmatrix mit den Variablen in deinem movies-Data-Frame. Dieser einfache Plot zeigt dir schnell, welche Variablen negativ, positiv, schwach oder stark mit anderen korrelieren.

Dafür nutzt du das praktische Paket GGally und die Funktion ggcorr().

Der Aufruf hat die Form ggcorr(df), wobei df der Name des Data Frames ist. Die Ausgabe ist eine dreieckige, farbcodierte Matrix mit Variablennamen. Die Korrelationskoeffizienten liest du je nach Position in der Matrix zeilen- und/oder spaltenweise ab.

Klingt kompliziert, ist in der Praxis aber ganz einfach. Probier es im nächsten Codeblock aus!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgUmVwbGFjZSB0aGUgXCIuLi4uLlwiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGRhdGEgZnJhbWUgXG5nZ2NvcnIoLi4uLi4pIiwic29sdXRpb24iOiIjIFJlcGxhY2UgdGhlIFwiLi4uLi5cIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXRhIGZyYW1lIFxuZ2djb3JyKG1vdmllcykifQ==

Korrelationskoeffizient

In der soeben erstellten Matrix (stark!) kannst du zur Zeile oder Spalte einer Variablen wie year gehen und ihren Korrelationskoeffizienten anhand der Zellfarbe zur jeweils anderen Variablen ablesen.

Beim year siehst du zum Beispiel eine schwach positive Korrelation mit budget und eine ähnlich schwach negative mit rating.

Korrelationskoeffizienten liegen immer zwischen -1 und 1 (inklusive). -1 steht für einen perfekten negativen Zusammenhang, bei dem die y-Werte im selben Maß abnehmen, wie die x-Werte zunehmen. 1 steht für einen perfekten positiven Zusammenhang, bei dem die y-Werte im selben Maß zunehmen wie die x-Werte.

Meistens – so wie im year-Beispiel – liegt der Wert irgendwo dazwischen.

Ist dir etwas aufgefallen?

Nicht alle movies-Variablen sind enthalten!

Das liegt daran, dass nicht alle Variablen numerisch sind. ggcorr ignoriert nicht-numerische Variablen automatisch. Das spart dir das vorherige „Heraussubsetten“ dieser Variablen.

Wenn deine Matrix stärker „knallen“ soll (oder du wie ich leicht farbenblind bist), kannst du ein paar einfache Tweaks nutzen, um visuell aussagekräftigere Matrizen zu erzeugen.

Im folgenden Codeblock ist das Argument label enthalten, das du auf TRUE oder FALSE setzen kannst. Standard ist FALSE. Mit label = TRUE wird der Korrelationskoeffizient direkt in der jeweiligen Zelle angezeigt – so musst du ihn nicht mehr aus der Farbskala abschätzen.

Mit label_alpha passt du die Deckkraft der Labels an die Stärke des Korrelationskoeffizienten an. Das macht die visuelle Analyse noch schneller.

Probier es selbst aus!

Jetzt zeichnen wir eine bessere Korrelationsmatrix:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgRmlsbCBpbiBcIlRSVUVcIiBvciBcIkZBTFNFXCIgdG8gc2VlIGhvdyB0aGUgY29ycmVsYXRpb24gbWF0cml4IGNoYW5nZXNcbmdnY29ycihtb3ZpZXMsIFxuICAgICAgIGxhYmVsID0gLi4uLi4sIFxuICAgICAgIGxhYmVsX2FscGhhID0gLi4uLi4pIiwic29sdXRpb24iOiIjIEZpbGwgaW4gXCJUUlVFXCIgb3IgXCJGQUxTRVwiIHRvIHNlZSBob3cgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBjaGFuZ2VzXG5nZ2NvcnIobW92aWVzLCBcbiAgICAgICBsYWJlbCA9IFRSVUUsIFxuICAgICAgIGxhYmVsX2FscGhhID0gVFJVRSkifQ==

Korrelationskoeffizient

In den folgenden Plots siehst du: Bei „starker“ Korrelation liegt die Steigung der Regressionsgeraden (x/y) näher an 1/1 oder -1/1. Bei „schwacher“ Korrelation ist die Gerade nahezu flach. Eine Steigung nahe 1/1 oder -1/1 deutet auf einen engen Zusammenhang hin.

Im Fall unseres movies-Data-Frames liefert eine solche Regressionsgerade wertvolle Einsichten in die Natur deiner Variablen und kann auf deren Wechselwirkung hindeuten.

Beispielsweise hattest du beim Plot profit gegen rating eine moderat positive Steigung. In der Korrelationsmatrix siehst du dazu passend einen Korrelationskoeffizienten von 0,3.

Klingt stimmig, oder?

Arten von Korrelation

Schauen wir uns nun zusätzliche Plots an, die die verschiedenen Korrelationsarten aus dem letzten Abschnitt illustrieren!

Starke Korrelation: Votes versus Reviews

Starten wir mit zwei Variablen, die stark positiv korrelieren.

In der Matrix erfüllen votes und reviews dieses Kriterium mit einem Wert von 0,8. Das bedeutet, die Steigung sollte relativ nahe an 1/1 liegen.

In dieser und den folgenden Aufgaben verwendest du das Paket ggplot2. ggplot2 ist ein vielseitiges Toolkit für aussagekräftige Datenvisualisierungen.

Hier nutzen wir die Funktion qplot aus ggplot2, die je nach an geom übergebenem Typ unterschiedliche Plots erzeugt.

Im folgenden Code ist geom ein Vektor mit zwei Geometrien: point erzeugt ein Streudiagramm, smooth eine Trendlinie. Außerdem ist method auf lm gesetzt – die Trendlinie ist also die bekannte lineare Regressionsgerade wie zuvor bei profit gegen years.

Kurz: Du siehst gleich, wie schnell sich starke Visualisierungen erzeugen lassen!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB2b3RlcyB2cyByZXZpZXdzXG5xcGxvdChtb3ZpZXMkLi4uLi4sIFxuICAgICAgbW92aWVzJC4uLi4uLCBcbiAgICAgIGRhdGEgPSAuLi4uLiwgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIiwic29sdXRpb24iOiIjIFBsb3Qgdm90ZXMgdnMgcmV2aWV3c1xucXBsb3QobW92aWVzJHZvdGVzLCBcbiAgICAgIG1vdmllcyRyZXZpZXdzLCBcbiAgICAgIGRhdGEgPSBtb3ZpZXMsIFxuICAgICAgZ2VvbSA9IGMoXCJwb2ludFwiLCBcInNtb290aFwiKSwgXG4gICAgICBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSwgXG4gICAgICBzZSA9IEZBTFNFKSJ9

Positive R-Korrelation

Vielleicht ist dir das Argument alpha in qplot aufgefallen. Es steuert – ähnlich wie die Deckkraft der Labels in ggcorr – die Transparenz der Punkte im Streudiagramm.

In der hier genutzten Einstellung wird ein Punkt erst völlig deckend, wenn er von fünf anderen Punkten überlagert wird. Erhöht oder senkt man den Nenner von alpha, ändert sich die Zahl der Überlagerungen, die für vollständige Deckkraft nötig sind. Das hilft, Ballungen von Datenpunkten schnell zu erkennen – und so neue Einsichten mit einem Blick zu gewinnen.

Spiel ruhig mit dem Code und schau, wie es wirkt!

Schwache Korrelation: Profit über die Jahre

Als Nächstes schauen wir uns eine „schwache“, negative Korrelation an: profit versus years. Dieses Mal ist kein method angegeben, die Trendlinie folgt daher standardmäßig einer glatten Kurve (Fitted Curve). Du siehst entlang der Linie einen hellgrauen Bereich, dessen Breite je nach Konfidenzintervall variiert.

Falls dir Konfidenzintervalle neu sind: Kein Stress. R übernimmt die Arbeit – und wir erklären das Konzept nach der Übung noch kurz.

Fülle jetzt einfach die Lücken im Code und beobachte das Ergebnis!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkiLCJzb2x1dGlvbiI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkifQ==

Schwache Korrelation

Welche Beobachtungen kannst du zu Konfidenzintervall und Glättungskurve machen?

  • Erstens: Zu Beginn scheint der profit mit jedem year zu steigen.
  • Zweitens: Der graue Bereich um die Kurve ist anfangs recht breit und es gibt nur wenige Datenpunkte (Beobachtungen).
  • Drittens: In Bereichen mit mehr Beobachtungen wird der graue Bereich schmaler und „klebt“ förmlich an der Kurve, die in späteren years fällt.

Fazit: Das Konfidenzintervall zusammen mit der Glättungskurve zeigt die Unsicherheit rund um unsere Regressionslinie. Mit weniger Beobachtungen steigt die Unsicherheit, mit mehr sinkt sie.

Das hilft sehr, um zu sehen, wie sich der Zusammenhang der Variablen über den Data Frame hinweg verändert und wie Datenballungen die Kurve beeinflussen.

Aber Vorsicht: Der Plot kann etwas irreführen, weil schwer zu erkennen ist, ob der Zusammenhang insgesamt positiv oder negativ ist.

Zeichnen wir daher profit gegen year noch einmal wie votes gegen reviews: Ersetze die „…..“ so, dass year auf der x-Achse und profit auf der y-Achse liegt. Gib auch den Data Frame bei „data“ an!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyQuLi4uLiwgXG4gICAgICBtb3ZpZXMkLi4uLi4sIFxuICAgICAgZGF0YSA9IC4uLi4uLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgbWV0aG9kID0gXCJsbVwiLCBcbiAgICAgIGFscGhhID0gSSgxIC8gNSksIFxuICAgICAgc2UgPSBGQUxTRSkiLCJzb2x1dGlvbiI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyR5ZWFyLCBcbiAgICAgIG1vdmllcyRwcm9maXQsIFxuICAgICAgZGF0YSA9IG1vdmllcywgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIn0=

Negative Korrelation

In der Korrelationsmatrix siehst du für profit und year einen Wert von -0,1. Das lässt sich im Plot mit Regressionsgerade deutlicher erkennen als im Plot mit Glättungskurve.

Alles zusammenführen

Zum Schluss werfen wir einen Blick auf eine weitere starke Funktion aus GGally: ggpairs. Damit erstellst du eine Matrix, die Korrelationskoeffizienten mehrerer Variablen zusammen mit einem Streudiagramm (inklusive Line of Best Fit und Konfidenzintervall) sowie einer Dichtekurve zeigt.

Mit dieser einen Funktion kombinierst du alles Wichtige aus diesem Tutorial kompakt und gut verständlich.

Wähle im nächsten Codeblock einfach drei Lieblingsvariablen aus dem Data Frame (ohne Subsetting), setze sie ein und leg los!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KFwiR0dhbGx5XCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGx1ZyBpbiB5b3VyIHRocmVlIGZhdm9yaXRlIHZhcmlhYmxlcyBhbmQgdGlua2VyIGF3YXkhXG5nZ3BhaXJzKG1vdmllcywgXG4gICAgICAgIGNvbHVtbnMgPSBjKFwiLi4uLi5cIiwgXCIuLi4uLlwiLCBcIi4uLi4uXCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSIsInNvbHV0aW9uIjoiIyBQbHVnIGluIHlvdXIgdGhyZWUgZmF2b3JpdGUgdmFyaWFibGVzIGFuZCB0aW5rZXIgYXdheSFcbmdncGFpcnMobW92aWVzLCBcbiAgICAgICAgY29sdW1ucyA9IGMoXCJjYXN0X2ZhY2Vib29rX2xpa2VzXCIsIFwiYnVkZ2V0XCIsIFwicHJvZml0XCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSJ9

R-Korrelationsmatrix

Wie du dir denken kannst, gibt es viele Szenarien, in denen jeweils ein bestimmter Plot ideal ist. Entscheidend ist, die verfügbaren Visualisierungstechniken zu kennen, sie anwenden zu können und die Ergebnisse richtig zu interpretieren.

Wie geht es weiter?

Du hast in diesem Tutorial viel geschafft – Glückwunsch bis hierher!

Ich hoffe, du kannst die Konzepte in deinen eigenen Analysen nutzen. Das sind die Grundlagen der Datenexploration in R, und es gibt noch viel mehr zu entdecken, um ein gutes Verständnis deiner Daten zu entwickeln, bevor du sie analysierst und modellierst. Wie wäre es mit dem DataCamp-Kurs Exploratory Data Analysis?

Bis dahin: Stöbere auf Kaggle nach einem spannenden Datensatz, den du erkunden möchtest – falls du nicht mit dem movies-Datensatz weitermachen willst!

Themen
R