Dummy Variablen in R erstellen

von | Mrz 17, 2021 | Dummy, R, Regressionsanalyse | 0 Kommentare

Nominale bzw. kategoriale Variablen können nicht ohne weiteres in eine (multiple) lineare Regression aufgenommen werden. Hierzu bedarf es einer Dummykodierung. Dieser Beitrag beantwortet die Frage: Wie erstelle ich Dummyvariablen im Rahmen einer Regression in R?

Hat die kategoriale Variable nur zwei Ausprägungen, ist sie also dichotom/binär, braucht man keine Kodierung von Dummyvariablen vorzunehmen. Dies ist implizit nämlich bereits geschehen. In einem solchen Fall kann direkt eine lineare Regression gerechnet und interpretiert werden. Die Besonderheiten hierbei erkläre ich im demnächst erscheinenden Artikel Lineare Regression mit binären Variablen (Dummies) rechnen.

 

Voraussetzungen der Dummykodierung

Die Variable, die als Dummy kodiert werden soll, muss lediglich nominal bzw. kategorial skaliert sein. Das sind z.B. Farben, Länder oder wie im Beispiel des Artikels die Wohnsituation der Probanden.
 

Dieses Video ansehen auf YouTube.

Fragen können unter dem verlinkten Video gerne auf YouTube gestellt werden.

 

Prinzip der Dummykodierung kurz erklärt

Für eine kurze Erklärung des Prinzips nehme ich das Beispiel der Wohnsituation. Vereinfacht nehme ich drei Ausprägungen der Wohnsituation der Probanden an. Sie wohnen entweder in (1) einer Wohnung, (2) einem Reihenhaus oder (3) einem Einfamilienhaus.

Dummykodierung

Aus der einen Variable „Wohnsituation“ erstelle ich im Rahmen der Dummykodierung drei separate Variablen: (1) Dummy_Wohnung, (2) Dummy_Reihenhaus, (3) Dummy_Einfamilienhaus. Diese haben jeweils immer dann die Ausprägung 1, wenn in der Ausgangsvariable das in den Dummy umgewandelte Merkmal auftritt. Beispiel: Dummy_Wohnung hat den Wert „1“, wenn die Wohnsituation „Wohnung“ ist. Der Dummy_Einfamilienhaus ist „1“ wenn die Wohnsituation „Einfamilienhaus“ ist.

Das sieht dann wie folgt aus:

Dummy_Wohnung Dummy_Reihenhaus Dummy_Einfamilienhaus
Wohnung 1 0 0
Reihenhaus 0 1 0
Einfamilienhaus 0 0 1

 

ACHTUNG: Man kann n Ausprägungen der Ausgangsvariable bereits mit n-1 binären Variablen darstellen. Im Beispiel reichen demzufolge bereits zwei Dummyvariablen. Das würde dann wie folgt aussehen:

Dummy_Reihenhaus Dummy_Einfamilienhaus
Wohnung 0 0
Reihenhaus 1 0
Einfamilienhaus 0 1

 
Hier ist erkennbar, dass der Proband immer dann in einer Wohnung wohnen muss, wenn „Dummy_Reihenhaus“ und „Dummy_Einfamilienhaus“ jeweils 0 sind.

HINWEIS: Beim Durchführen der Regression ist es häufig sehr empfehlenswert, wie oben gezeigt, alle Ausprägungen der Originalvariable als separaten Dummy vorliegen zu haben. Dies ermöglicht den Austausch der Referenzkategorie beim Rechnen der Regression und ist meiner Meinung nach aufschlussreicher.

 

Durchführung der Dummykodierung in R

Kurz zum Kontext: Die Variable befinden sich im Dataframe „data_xls“, nachdem ich sie aus einer .xlsx-Datei importiert habe. Die umzukodierende Variable heißt „Wohnsituation“ und hat die 3 Ausprägungen 1 (Wohnung), 2 (Reihenhaus) und 3 (Einfamilienhaus).
 

Nutzen des „car“-Paktes (Manuelle Methode)

Ich erstelle nun aus den drei Ausprägungen jeweils neue Variablen: DWohnung, DRHaus und DEHaus.
Zunächst muss das Paket „car“ über die Funktion install.packages() installiert und über die library()-Funktion geladen werden:


install.packages("DescTools")
library(DescTools)

Das von mir genutzte Schema ist Folgendes:

  • Wohnsituation = 1 -> DWohnung = 1, sonst 0
  • Wohnsituation = 2 -> DRHaus = 1, sonst 0
  • Wohnsituation = 3 -> DEHaus = 1, sonst 0

Im Code sieht das dann wie foglt aus.


data_xls$DWohnung <- recode(data_xls$Wohnsituation, "1=1; 2:3=0")
data_xls$DRHaus <- recode(data_xls$Wohnsituation, "2=1; 1=0; 3=0")
data_xls$DEHaus <- recode(data_xls$Wohnsituation, "3=1; 1:2=0")

Der Dummy DWohnung wird immer dann 1, wenn die Wohnsituation 1 ist. Die Ausprägungen 2 (Reihenhaus) und 3 (Einfamilienhaus) der Variable Wohnsituation werden zu 0. Der Dummy DRHaus wird immer dann 1, wenn die Wohnsituation 2 ist. Die beiden anderen Ausprägungen 1 (Wohnung) und 3 (Einfamilienhaus) der Variable Wohnsituation werden zu 0. Analog ist das für die letzte Ausprägung von Wohnsituation.

 
Im Ergebnis erhalte ich nun drei Variablen, die dichotom sind und immer dann die Ausprägung 1 annehmen, wenn in der Ausgangsvariable Wohnsituation die jeweilige Ausprägung steht.

 

Nutzen des "psych"-Paktes (Automatische Methode)

Die automatische Kodierung funktioniert in R über das "psych"-Paket recht komfortabel. Installation und Laden des Pakets müssen der Kodierung vorangestellt werden:


install.packages("DescTools")
library(DescTools)

Nun sind drei Schritte auszuführen.

1) Erstellen der Dummyvariablen mit der dummy.code()-Funktion und speichern in einem separaten Dataframe.


dummies <- dummy.code(data_xls$Wohnsituation)

2) Benennen der Variablen, also der Spaltenköpfe. ACHTUNG: Hier wird immer die höchste Ausprägung der Ausgangsvariable als erste Spalte auftauchen. Im Falle des Beispiels hat das Einfamilienhaus die höchste Ausprägung (3) und ist daher in der Benennung mit der "colnames()"-Funktion auch die erste Variable. Die Wohnung mit der niedrigsten Ausprägung (1) ist entsprechend die letzte Variable.


colnames(dummies) <- c("DEHaus2", "DRHaus2", "DWohnung2")

3) Zusammenführen der beiden Dataframes.


data_xls <- cbind(data_xls, dummies)

Schließlich wird der erstellte und in den Spaltenköpfen benannte Dataframe "dummies" nun einfach an den bestehenden Dataframe angehängt. Wenn ihr nicht mit Dataframes arbeitet sondern Daten attached habt, könnt ihr diesen Schritt überspringen.

 
Zu guter Letzt kann es nicht schaden, die Variable zu faktorisieren:


data_xls$Wohnsituation <- as.factor(data_xls$Wohnsituation)

Wie man eine Regression mit Dummies rechnet und interpretiert, seht ihr in diesem Artikel.

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Excel- und SPSS-Experte

YouTube-Kanal

Excel Online-Kurs

YouTube-Kanal