Erstellen und visualisieren Sie eine Korrelationsmatrix in R
-
die
cor()
-Funktion in R - Bereiten Sie die Daten vor, um eine Korrelationsmatrix in R zu erstellen
- Visualisieren Sie eine Korrelationsmatrix in R
- Verweise
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.
-
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.
-
Eine abweichende Farbpalette ist erforderlich, da die Werte der Korrelationskoeffizienten von negativ bis positiv reichen können.
-
Wir verwenden eine farbenblinde freundliche Palette. Diese Palette kann bis zu 11 unterschiedliche Farbwerte bereitstellen.
-
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).
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.
Verweise
- Informationen zu den
dplyr
-Funktionen finden Sie im Paket Dokumentation. - Die CRAN-Seite des
GGally
-Pakets verlinkt auf dessen Handbuch.