Erstellen und visualisieren Sie eine Korrelationsmatrix in R

Jesse John 21 Juni 2023
  1. die cor()-Funktion in R
  2. Bereiten Sie die Daten vor, um eine Korrelationsmatrix in R zu erstellen
  3. Visualisieren Sie eine Korrelationsmatrix in R
  4. Verweise
Erstellen und visualisieren Sie eine Korrelationsmatrix in R

In diesem Artikel erfahren Sie zunächst, wie Sie Daten vorbereiten, um eine Korrelationsmatrix zu erstellen. Anschließend erstellen wir eine Korrelationsmatrix und visualisieren diese.

Unser Beispielcode verwendet die Pakete dplyr, ggplot2 und GGally. Diese Pakete müssen installiert werden, wenn sie nicht verfügbar sind.

Beispielcode:

# Install required packages.

# Uncomment and run the concerned line.
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("GGally")

die cor()-Funktion in R

Base R stellt die Funktion cor() bereit, um den Korrelationskoeffizienten zwischen zwei numerischen Vektoren oder die Korrelationsmatrix für die numerischen Spalten eines Datenrahmens oder einer Matrix zu berechnen.

Die Dokumentation der Funktion enthält Einzelheiten zur Verwendung ihrer Argumente x, y, use und method.

Das Argument x übernimmt die Daten. Das Argument use ist erforderlich, wenn Daten fehlen.

Die Methode ist standardmäßig pearson.

Bereiten Sie die Daten vor, um eine Korrelationsmatrix in R zu erstellen

Der Korrelationskoeffizient kann nur für numerische Daten berechnet werden. Die Daten dürfen nicht nur wie Zahlen aussehen; es muss im numerischen Format vorliegen.

Im folgenden Beispieldatenrahmen gibt es Zwei-Faktor-Spalten, die aus Zahlen und einer Zeichenspalte bestehen.

Die Funktion cor() kann nicht einmal auf die Spalten mit Zahlen angewendet werden, da diese Zahlen nicht als numerische Werte gespeichert werden.

Beispielcode:

# Vectors, data frame.
f1 = as.factor(c(7,7,3,11,7,5,5))
str(f1)
f2 = as.factor(c(6,6,6,12,6,4,2))
str(f2)
s = letters[4:10]

fr = data.frame(s,f1,f2)

# The data frame shows numbers.
fr

# But the numbers are not stored in numeric format.
str(fr)

# Correlation matrix cannot be computed.
cor(fr[2:3])

Ausgang:

> # The data frame shows numbers.
> fr
  s f1 f2
1 d  7  6
2 e  7  6
3 f  3  6
4 g 11 12
5 h  7  6
6 i  5  4
7 j  5  2
> # But the numbers are not stored in numeric format.
> str(fr)
'data.frame':	7 obs. of  3 variables:
 $ s : chr  "d" "e" "f" "g" ...
 $ f1: Factor w/ 4 levels "3","5","7","11": 3 3 1 4 3 2 2
 $ f2: Factor w/ 4 levels "2","4","6","12": 3 3 3 4 3 2 1
> # Correlation matrix cannot be computed.
> cor(fr[2:3])
Error in cor(fr[2:3]) : 'x' must be numeric

Angenommen, die Daten sind numerisch, wurden aber als Faktoren gespeichert. Wir können die betroffenen Spalten in numerische umwandeln.

Dies umfasst zwei Schritte, um die richtigen Zahlen und nicht die Faktorstufen zu erhalten. Zuerst konvertieren wir in das Zeichen und dann in Zahlen.

Im Beispielcode verwenden wir die Funktionen mutate(), across() und all_of() sowie den Pipe-Operator %>% aus dem Paket dplyr. Die eigentliche Konvertierung erfolgt mithilfe einer benutzerdefinierten Funktion.

Beispielcode:

library(dplyr)

# This custom function does the actual conversion.
con_fn = function(k){
  return(as.numeric(as.character(k)))
}

# We will convert specific columns to numeric.
fr2 = fr %>% mutate(across(all_of(c("f1","f2")), con_fn))

# The columns are now numeric.
str(fr2)

# Compute the correlation matrix.
cor(fr2[2:3]) # No error now.

Ausgang:

> # The columns are now numeric.
> str(fr2)
'data.frame':	7 obs. of  3 variables:
 $ s : chr  "d" "e" "f" "g" ...
 $ f1: num  7 7 3 11 7 5 5
 $ f2: num  6 6 6 12 6 4 2
> # Compute the correlation matrix.
> cor(fr2[2:3]) # No error now.
          f1        f2
f1 1.0000000 0.7833495
f2 0.7833495 1.0000000

Wir haben erfolgreich eine Korrelationsmatrix für die beiden numerischen Variablen erstellt.

Visualisieren Sie eine Korrelationsmatrix in R

Bevor wir die Visualisierung erstellen, fügen wir einige weitere Spalten hinzu. Die letzte Spalte ist vom Typ int, ebenfalls numerisch.

Beispielcode:

# Reproducible vectors.
set.seed(555)
n1 = round(rnorm(7)+2,1)
set.seed(222)
n2 = sample(22:42, 7, replace=TRUE)

# Join the columns to the data frame.
fr3 = cbind(fr2, n1, n2)

# Check the structure.
str(fr3)

# Compute the correlation matrix.
cor(fr3[2:5])

Ausgang:

> # Check the structure.
> str(fr3)
'data.frame':	7 obs. of  5 variables:
 $ s : chr  "d" "e" "f" "g" ...
 $ f1: num  7 7 3 11 7 5 5
 $ f2: num  6 6 6 12 6 4 2
 $ n1: num  1.7 2.5 2.4 3.9 0.2 2.9 1.8
 $ n2: int  36 39 41 30 31 30 39
> # Compute the correlation matrix.
> cor(fr3[2:5])
           f1         f2         n1         n2
f1  1.0000000  0.7833495  0.3124483 -0.5809116
f2  0.7833495  1.0000000  0.4938292 -0.4142586
n1  0.3124483  0.4938292  1.0000000 -0.1132145
n2 -0.5809116 -0.4142586 -0.1132145  1.0000000

Wir werden die Funktion ggcorr() aus dem Paket GGally verwenden, um die Korrelationsmatrix zu visualisieren. Dieses Paket hängt vom Paket ggplot2 ab.

Es ist wichtig zu beachten, dass diese Funktion zwei Dinge tut. Es berechnet die Korrelationsmatrix und zeichnet sie dann.

Standardmäßig verwendet die Funktion ggcorr() paarweise Beobachtungen (falls es fehlende Werte gibt) und berechnet den pearson-Korrelationskoeffizienten. Es verwendet auch ColorBrewer-Paletten.

  1. Obwohl die Farbe kontinuierlich abgestuft werden kann, verwenden wir 6 diskrete Werte. Das Argument nbreaks=6 erreicht dieses Ergebnis.

    Die Funktion teilt den Bereich -1 bis 1 in 6 gleiche Intervalle.

  2. Eine abweichende Farbpalette ist erforderlich, da die Werte der Korrelationskoeffizienten von negativ bis positiv reichen können.

  3. Wir verwenden eine farbenblinde freundliche Palette. Diese Palette kann bis zu 11 unterschiedliche Farbwerte bereitstellen.

  4. Das Argument label=TRUE trägt die Korrelationswerte auf die Farbkacheln ein.

Beispielcode:

# Load the GGally library.
# This loads ggplot2 also.
library(GGally)

# Visualize the correlation matrix.
ggcorr(fr3[2:5], nbreaks=6, palette="PuOr", label=TRUE, label_size=5, size=8, legend.size=10)

Ein Diagramm der Korrelationsmatrix. Die dunkleren Schattierungen repräsentieren eine höhere Korrelation.

Die Korrelation reicht von -1 (dargestellt durch Orange) bis 1 (dargestellt durch Lila).

Diagramm der Korrelationsmatrix

Angenommen, wir haben eine Korrelationsmatrix und möchten sie darstellen. Wir können die Funktion ggcorr() verwenden, indem wir data=NULL angeben und mit cor_matrix eine Korrelationsmatrix liefern.

Beispielcode:

# Just three columns, for illustration.
fr4 = cor(fr3[2:4])
fr4

# Only visualize with given correlation matrix.
ggcorr(data = NULL, cor_matrix= fr4, nbreaks=7, label=TRUE, label_size=5, size=8, legend.size=10)

Der Plot einer gegebenen Korrelationsmatrix.

Diagramm einer gegebenen Korrelationsmatrix

Verweise

  1. Informationen zu den dplyr-Funktionen finden Sie im Paket Dokumentation.
  2. Die CRAN-Seite des GGally-Pakets verlinkt auf dessen Handbuch.
Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Verwandter Artikel - R Matrix