Dies ist eine sehr einfache Frage, aber ich konnte keine definitive Antwort finden, also dachte ich, ich würde sie fragen. Ich verwende das Paket plm
für den Umgang mit Panel-Daten. Ich versuche, die Funktion lag
zu verwenden, um eine Variable FORWARD rechtzeitig zu verzögern (der Standardwert ist, den Wert aus der vorherigen Periode abzurufen, und ich möchte den Wert von NEXT). Ich fand eine Reihe alter Artikel / Fragen (ca. 2009), die nahelegen, dass dies möglich ist, indem k=-1
als Argument verwendet wird. Wenn ich dies jedoch versuche, bekomme ich einen Fehler.
Beispielcode:
%Vor%Verzögerung:
%Vor% Ich habe auch gelesen, dass plm.data
pdata.frame
für einige Anwendungen in plm
ersetzt hat. % Co_de% scheint jedoch mit der Funktion plm.data
überhaupt nicht zu funktionieren:
Ich würde jede Hilfe schätzen. Wenn irgendjemand einen anderen Vorschlag für ein Paket hat, das für die Verzögerung verwendet wird, bin ich ganz Ohr. Allerdings liebe ich lag
, weil es sich automatisch mit dem Rückstand auf mehrere Individuen befasst und Lücken in der Zeitreihe überspringt.
EDIT2 : Nacheilung (= Leitwerte) wird in plm
CRAN releases & gt; = 1,6-4 implementiert.
Funktionen sind entweder lead()
oder lag()
(letzteres mit einer negativen Ganzzahl für führende Werte).
Achten Sie auf alle anderen angehängten Pakete, die dieselben Funktionsnamen verwenden. Um sicher zu sein, können Sie auf die Funktion nach dem vollständigen Namespace verweisen, z. B. plm::lead
.
Beispiele aus ?plm::lead
:
Ich hatte das gleiche Problem und konnte keine gute Lösung in plm
oder einem anderen Paket finden. ddply
war verlockend (z. B. s5 = ddply(df, .(country,year), transform, lag=lag(df[, "value-to-lag"], lag=3))
), aber ich konnte die NAs in meiner verzögerten Spalte nicht so ausrichten, dass sie für andere Verzögerungen als eins richtig ausgerichtet sind.
Ich habe eine Brute-Force-Lösung geschrieben, die Zeile für Zeile über den Datenrahmen iteriert und die verzögerte Spalte mit dem entsprechenden Wert füllt. Es ist schrecklich langsam (437,33s für meinen 13000x130 Datenrahmen vs. 0,012s für die Umwandlung in ein pdata.frame
und die Verwendung von lag
), aber es hat den Job für mich erledigt. Ich dachte, ich würde es hier teilen, weil ich anderswo im Internet nicht viele Informationen finden konnte.
In der folgenden Funktion:
df
ist Ihr Datenrahmen. Die Funktion gibt df
mit einer neuen Spalte zurück, die die forward-Werte enthält. group
ist der Spaltenname der Gruppierungsvariablen für Ihre Panel-Daten. Zum Beispiel hatte ich longitudinale Daten über mehrere Länder, und ich verwendete hier "Country.Name". x
ist die Spalte, aus der verzögerte Werte generiert werden sollen, z. "BIP" forwardx
ist die (neue) Spalte, die die Vorwärtsverzögerungen enthält, z. "GDP.next.year". lag
ist die Anzahl der Perioden in die Zukunft. Wenn Ihre Daten beispielsweise in jährlichen Intervallen erstellt wurden, wurde mit lag=5
forwardx
fünf Jahre später auf den Wert von x
gesetzt. .
%Vor% Siehe Beispielausgabe mit dem integrierten DNase
-Dataset. Dies ist im Kontext des Datasets nicht sinnvoll, aber Sie können sehen, was die Spalten tun.
Gegeben, wie lange dies dauert, möchten Sie vielleicht einen anderen Ansatz verwenden: Zurück-Lag all Ihre anderen Variablen.