Erstellen und interpretieren Sie Dummy-Variablen in R
-
Installieren Sie das Paket
fastDummies
in R -
Verwenden Sie die Funktion
dummy_cols()
, um Dummy-Spalten in R zu erstellen - Dummy-Variablen interpretieren
In diesem Artikel erfahren Sie, wie Sie mit der Funktion dummy_cols()
des Pakets fastDummies
in R Dummy-Variablen erstellen. Die Wörter Dummy-Variable und Dummy-Spalte werden synonym verwendet.
Installieren Sie das Paket fastDummies
in R
Wir müssen das Paket fastDummies
installieren und laden.
Beispielcode:
# Install the fastDummies package.
install.packages("fastDummies")
# Load the fastDummies package.
library(fastDummies)
Wir erstellen nun einen kleinen Datenrahmen mit einer kategorialen Variablen.
Beispielcode:
# Vectors.
cv = c("Bd", "Ba", "F", NA, "F", "F", "Ba")
nv = seq(1:7)
# Data Frame
orig_datf = data.frame(Num_V = nv,Cat_V=as.factor(cv))
# View the data frame.
orig_datf
str(orig_datf)
Ausgang:
> str(orig_datf)
'data.frame': 7 obs. of 2 variables:
$ Num_V: int 1 2 3 4 5 6 7
$ Cat_V: Factor w/ 3 levels "Ba","Bd","F": 2 1 3 NA 3 3 1
Wie gezeigt, hat unser Datenrahmen eine kategoriale Variable mit 3-Faktor-Ebenen.
R weist Faktorstufen basierend auf alphabetischer Reihenfolge zu. Dieses Detail ist wichtig, wenn wir Dummy-Variablen erstellen.
Verwenden Sie die Funktion dummy_cols()
, um Dummy-Spalten in R zu erstellen
Wenn wir die Spalten nicht angeben, aus denen Dummy-Variablen erstellt werden sollen, erstellt die Funktion Dummy-Spalten aus allen Faktor- oder Zeichentypspalten.
Beispielcode:
new_datf_default_all = dummy_cols(orig_datf)
new_datf_default_all
names(new_datf_default_all)
Ausgang:
> names(new_datf_default_all)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd" "Cat_V_F" "Cat_V_NA"
Beachten Sie Folgendes in der Liste der Spalten.
- Da die kategoriale Variable 3 Kategorien hatte, sehen wir 3 neue Spalten.
- Da unsere kategoriale Spalte fehlende Werte (NA) hatte, haben wir auch eine Spalte, die NAs mit dem Wert 1 anzeigt. Alle anderen Dummy-Spalten haben NA, während die ursprüngliche Spalte NA hatte.
Erstellen Sie Dummy-Variablen aus ausgewählten Spalten in R
Um Dummy-Variablen nur aus ausgewählten Spalten zu erstellen, können wir das Argument select_columns
verwenden. Wir können einen einzelnen Spaltennamen als Zeichenfolge und mehrere Spalten in einem Vektor übergeben.
Beispielcode:
# Pass a single column.
new_datf_select_cols = dummy_cols(orig_datf, select_columns = "Cat_V")
# Pass multiple columns using a vector.
new_datf_select_cols = dummy_cols(orig_datf, select_columns = c("Cat_V"))
Entfernen Sie eine Spalte, um Multikollinearität in R zu vermeiden
Wenn wir Dummy-Variablen mit allen Ebenen einer Faktorspalte erstellen, sind die neuen Spalten linear abhängig. Mit anderen Worten, für jede Zeile können wir anhand der Werte aller anderen Spalten den Wert der letzten Spalte vorhersagen.
Dies wirkt sich auf die Ergebnisse der statistischen Analyse (z. B. lineare Regression) aus. Daher müssen wir für jede Originalspalte, aus der wir Dummy-Variablen erstellen, eine der Dummy-Spalten entfernen.
Die Funktion dummy_cols()
gibt uns zwei Möglichkeiten. Wir können entweder remove_first_dummy = TRUE
oder remove_most_frequent_dummy = TRUE
setzen.
Der folgende Code untersucht beide Optionen.
Beispielcode:
# Remove first.
new_datf_remove_first = dummy_cols(orig_datf, remove_first_dummy = TRUE)
# After removing first.
names(new_datf_remove_first)
# Remove most frequent.
new_datf_remove_most_frequent = dummy_cols(orig_datf, remove_most_frequent_dummy = TRUE)
# After removing most frequent
names(new_datf_remove_most_frequent)
Ausgang:
> # After removing first.
> names(new_datf_remove_first)
[1] "Num_V" "Cat_V" "Cat_V_Bd" "Cat_V_F" "Cat_V_NA"
> # After removing most frequent
> names(new_datf_remove_most_frequent)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd"
Beachten Sie Folgendes in der Ausgabe der beiden Befehle.
-
Das Argument
remove_first_dummy = TRUE
entfernte die Spalte, die der ersten Stufe des Faktors entspricht. -
Das Argument
remove_most_frequent_dummy = TRUE
löschte die Spalte, die der Ebene entspricht, die in der ursprünglichen Spalte am häufigsten vorkam.Es hatte jedoch auch den Effekt, dass die Spalte, die anzeigte, wo sich die NAs befanden, gelöscht wurde. Auch die Einstellung
ignore_na = FALSE
hatte keinen Einfluss auf die Ausgabe.
Wir können die folgende Problemumgehung verwenden, wenn wir die NA-Spalte beibehalten und den häufigsten Faktor löschen möchten.
releveln
Sie zuerst die Faktorspalte mit der Funktionrelevel()
. Machen Sie den häufigsten Wert zur ersten Ebene.- Verwenden Sie dann
remove_first_dummy = TRUE
.
Beispielcode:
releveled_datf = orig_datf
# Relevel the desired column manually.
releveled_datf$Cat_V = relevel(releveled_datf$Cat_V, ref = "F")
# View the new levels.
levels(releveled_datf$Cat_V)
# NOW, remove first.
releveled_datf_remove_first = dummy_cols(releveled_datf, remove_first_dummy = TRUE)
# After removing first.
names(releveled_datf_remove_first)
Ausgang:
> levels(releveled_datf$Cat_V)
[1] "F" "Ba" "Bd"
> # After removing first.
> names(releveled_datf_remove_first)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd" "Cat_V_NA"
Dummy-Variablen interpretieren
In der linearen Regressionseinstellung soll der Intercept-Koeffizient den Effekt des Basisniveaus (oder des entfernten Niveaus) der ursprünglichen Spalte enthalten. Denken Sie daran, dass wir beim Erstellen der Dummy-Spalten eine Spalte entfernt haben.
Der entfernte Faktor wird für alle Dummy-Spalten, die aus derselben Originalspalte erstellt wurden, so interpretiert, dass er den Wert 0 hat. Daher ist seine Wirkung in dem Schnittpunkt enthalten.
Der Koeffizient für jede Dummy-Spalte entspricht der Differenz, die durch diese Faktorstufe im Vergleich zur Basisstufe verursacht wird. Je nach Wert dieses Koeffizienten kann dies ein positiver oder negativer Effekt im Vergleich zum Ausgangswert sein.
Aufgrund dieser Interpretation ist es sinnvoll, die dem häufigsten Faktor entsprechende Spalte wegzulassen.