Erstellen und interpretieren Sie Dummy-Variablen in R

Jesse John 21 Juni 2023
  1. Installieren Sie das Paket fastDummies in R
  2. Verwenden Sie die Funktion dummy_cols(), um Dummy-Spalten in R zu erstellen
  3. Dummy-Variablen interpretieren
Erstellen und interpretieren Sie Dummy-Variablen in R

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.

  1. Da die kategoriale Variable 3 Kategorien hatte, sehen wir 3 neue Spalten.
  2. 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.

  1. Das Argument remove_first_dummy = TRUE entfernte die Spalte, die der ersten Stufe des Faktors entspricht.

  2. 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.

  1. releveln Sie zuerst die Faktorspalte mit der Funktion relevel(). Machen Sie den häufigsten Wert zur ersten Ebene.
  2. 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.

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 Variable