Ich habe Probleme, die folgenden Dummy-Variablen in R zu erzeugen:
Ich analysiere jährliche Zeitreihendaten (Zeitspanne 1948-2009). Ich habe zwei Fragen:
Wie erstelle ich eine Dummy-Variable für die Beobachtung Nr. 10, d. h. für das Jahr 1957 (Wert = 1 bei 1957 und sonst Null)?
Wie generiere ich eine Dummy-Variable, die vor 1957 Null ist und ab 1957 und bis 2009 den Wert 1 annimmt?
Eine andere Option, die besser funktioniert, wenn Sie viele Variablen haben, ist Faktor
und Modell.Matrix
.
> year.f = factor(year)
> dummies = model.matrix(~year.f)
Dies enthält eine Intercept-Spalte (alle Einsen) und eine Spalte für jedes Jahr in Ihrem Datensatz, mit Ausnahme von einem Jahr, das der "Standard" oder Intercept-Wert ist.
Sie können die Art und Weise, wie der Standardwert ausgewählt wird, ändern, indem Sie die Option "contrasts.arg" in "model.matrix" ändern.
Wenn Sie den Intercept weglassen wollen, können Sie die erste Spalte weglassen oder am Ende der Formel "+0" hinzufügen.
Ich hoffe, dies ist nützlich.
Die einfachste Art, diese Dummy-Variablen zu erstellen, ist etwa die folgende:
> print(year)
[1] 1956 1957 1957 1958 1958 1959
> dummy <- as.numeric(year == 1957)
> print(dummy)
[1] 0 1 1 0 0 0
> dummy2 <- as.numeric(year >= 1957)
> print(dummy2)
[1] 0 1 1 1 1 1
Ganz allgemein können Sie ifelse
verwenden, um zwischen zwei Werten in Abhängigkeit von einer Bedingung zu wählen. Wenn Sie also anstelle einer 0-1 Dummy-Variable aus irgendeinem Grund z.B. 4 und 7 verwenden wollen, können Sie ifelse(Jahr == 1957, 4, 7)
verwenden.
Normalerweise gehe ich bei der Arbeit mit dieser Art von Dummy-Variablen folgendermaßen vor:
(1) Wie erzeuge ich eine Dummy-Variable für die Beobachtung Nr. 10, d. h. für das Jahr 1957 (Wert = 1 im Jahr 1957 und ansonsten Null)?
data$factor_year_1 <- factor ( with ( data, ifelse ( ( year == 1957 ), 1 , 0 ) ) )
(2) wie erzeuge ich eine Dummy-Variable, die vor 1957 Null ist und ab 1957 und bis 2009 den Wert 1 annimmt?
data$factor_year_2 <- factor ( with ( data, ifelse ( ( year < 1957 ), 0 , 1 ) ) )
Dann kann ich diesen Faktor als Dummy-Variable in meine Modelle einführen. Zum Beispiel, um zu sehen, ob es einen langfristigen Trend in einer Variable y
gibt:
summary ( lm ( y ~ t, data = data ) )
Ich hoffe, das hilft Ihnen!