Was bedeutet die lag-Funktion in R zu tun?
Ich bin debugging-R-code, und ich bin ziemlich verwirrt, wie lag
Funktion in R funktioniert. Zum Beispiel
> x=c(0)
> x
[1] 0
> lag(x)
[1] 0
attr(,"tsp")
[1] 0 0 1
Weiteres Beispiel
> x=c(0,0,0,1)
> x
[1] 0 0 0 1
> lag(x)
[1] 0 0 0 1
attr(,"tsp")
[1] 0 3 1
Kann jemand mir erklären, was genau lag
Funktion tut, in einfachem Englisch.
Ich bin insbesondere besorgt darüber, wie die Rückgabewerte berechnet werden.
Halten Sie im Verstand diese Frage ist von einem Programmierer versuchen zu lernen, dass R eher als ein Statistiker.
- haben Sie gelesen
?lag
? was ist unklar??? - "Berechnen Sie eine verzögerte version einer Zeitreihe durch die Verschiebung der Zeitbasis zurück, die von einer bestimmten Anzahl von Beobachtungen." . . Ich dachte, stackoverflow ist gemeint, Klarheit zu schaffen anstatt darauf zu docs
- Es bedeutete, ist zu klären, Dinge, aber wie sollen wir wissen, was Sie sind verwirrt, wenn Sie so vage? "Ich bin verwirrt darüber, wie diese Funktion funktioniert" und "Was macht diese Funktion?" sind nicht sehr spezifisch. Explizit über das, was nicht klar ist oder nicht sinnvoll ist, und die Menschen werden eher zu helfen.
- Kann mir jemand erklären, wie die return-Werte berechnet werden / Punkt-zu-konkretes Beispiel anstatt darauf zu theoretischen Haufen Dokumentation.
- > lag-Funktion (x, ...) UseMethod("lag") < - bytecode: 0x47e4810> <environment: namespace:stats> ich sehe nicht ein, eine 12-Zeile-Funktion hier.
- Die Menschen Fragen stellen, wenn Sie nicht in der Lage, herauszufinden Dinge für sich. Wenn jemand Antworten möchte, bitte Antwort oder lasst andere das tun, sondern als Nachweis, dass die Frage sollte nicht gestellt werden.
- sorry, ich hatte
dplyr
geladen, die hat einen 12-line-Implementierung. - Ja, Menschen Fragen zu stellen, wenn Sie nicht in der Lage zu Abbildung Dinge für sich selbst, aber Sie haben nicht demonstriert, dass Sie versucht haben, alles. Es gibt ein Beispiel in der Dokumentation, und auf der Suche nach
[r] lag
führt einige sehr hilfreiche Ergebnisse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
plain Vektoren
lag
ist eine generische, das heißt, es kann anders handeln, auf Objekte unterschiedlicher Klassen. Hier besprechen wir nur, wie es funktioniert mit einem einfachen Vektor aber in den letzten beiden Abschnitten werden wir diskutieren auch"ts"
,"zoo"
(und"zooreg"
) die Objekte der Klasse sind und wie Sie sind perfekt. Als Beispiel verwenden wir in diesem Vektor, der die Werte:tsp Erkennen, dass eine Zeitreihe ist eine Folge von Zeiten und die Werte zu diesen Zeiten. Hier haben wir nur die Werte, nicht aber die Zeiten, so
lag
konzeptionell fügt in regelmäßigen Abständen Standard-Zeiten von 1, 2, 3, 4, indem eintsp
Attribut, das ist ein dreifach kodiert, dass die start-Zeit, end-Zeit und der Frequenz (D. H. der Kehrwert der Entfernung zwischen den aufeinander folgenden Zeitpunkten). Wir codieren kann das mal 1, 2, 3, 4 alstsp
Attribut c(1, 4, 1). 1 ist die Startzeit. 4 ist das Ende der Zeit. Die Zeit, die Punkte sind alle auf 1 auseinander (weil die Zeit Unterschiede 2-1, 3-2 und 4-3 jeweils gleich 1) und 1/1 = 1 also ist die Frequenz 1. Einer vierteljährlichen Reihe, in deren Zeiten werden in Jahren gemessen hätte eine Frequenz von 4 da jedes Quartal 0.25 auseinander und 1/0.25 = 4. Ähnlich, eine monatliche Serie in Jahren gemessen hätte eine Frequenz von 12.lag
lag
verschiebt das mal einer zurück. Es ändert nicht die Werte, es werden nur die Zeiten. So lag Veränderungen dertsp
Attribut ausc(1, 4, 1)
zuc(0, 3, 1)
. Die Startzeit verschob sich von 1 auf 0, das Ende der Zeit verschoben ist, von 4 auf 3 und da verschiebt sich nicht ändern, die Frequenz, die der Frequenz bleibt 1.Zeit Die
time
Funktion erzeugt ein Objekt, dessen Werte sind die Zeiten in seiner Argumentation und derentsp
Attribut ist die gleiche wie dietsp
- Attribut für das argument (oder die Standard -tsp
Attribut, wenn keine). Zum Beispiel, wie wir schon besprochen den code unten zeigt, dass die Zeiten der einfachen Vektorx
oben gegeben werden, sind 1, 2, 3, 4 und die Zeiten fürlag(x)
sind 0, 1, 2, 3.ts die Meisten Vorgänge auf der Ebene Vektoren ignorieren die
tsp
Attribut, so, wenn Sie etwas tun, damit seine Existenz möglicherweise sinnlos. Auf der anderen Seite, wenn das Objekt eine"ts"
Klasse Objekt, dann die verschiedenen Operationen auf"ts"
Objekte achten Sie auf dietsp
Attribut. Zum Beispiel, beachten Sie, wo diese Grundstücke start:zoo Der Serie oben war, in regelmäßigen Abständen, D. H. die Unterschiede zwischen aufeinander folgenden Zeitpunkten die gleichen waren. Vertreten unregelmäßigen Abständen-Serie kann man die
"zoo"
und"zooreg"
Klassen in den zoo-Paket. Ein zoo-Objekt die Werte mit einemindex
Attribut mit der Zeit. Die Zeiten sind nicht codiert, in einertsp
Attribut. Zum Beispiel, hier sehen wir, dass der zoo-Objekte hat mal 1, 2, 3, 4 gehalten und die Werte 11, 12, 13, 14:Den
"zooreg"
Klasse ist wie"zoo"
für Gegenstände, die in regelmäßigen Abständen außer für einige Male, dass kann weggelassen werden. Intern"zooreg"
Objekte sind die gleichen wie"zoo"
Objekte außer der Frequenz auch gespeichert. Die Werte und der index sind die gleichen wie für zoo-aber wir wissen, Sie haben eine Frequenz-als auch. Da die sukzessive Zeit Punkte 1 neben der Frequenz ist 1.Wenn eine lag ein
"zoo"
Objekt dann jedes mal verschoben, der Vorherige mal und das erste mal fiel. Hier die Zeiten sind 1, 2, 3 und die Werte sind 12, 13, 14. Beachten Sie, dass die verzögerte Serie ist eine Teilmenge der Zeit der original-Serie. Das ist immer dann der Fall, wenn hinterher eine zoo-Serie:Weil
"zooreg"
Objekte haben eine Frequenz Sie können die verzögerten Zeiten, die nicht in der original-Serie. Jedem Zeitpunkt t ist, blieb die t - deltat wo deltat ist 1/Frequenz. Hier 0, 1, 2, 3 sind die verzögerte Zeit, die Punkte und die Werte 11, 12, 13, 14:dplyr Das dplyr-package hat eine
lag
Funktion. Leider wirkt es in die entgegengesetzte Richtung von der Basis Rlag
- Funktionlag(x, k)
bewegt sich jedes Element in der Serie nach vorne anstatt nach hinten. Dies kann tatsächlich mehr intuitiv, sondern verursacht eine Menge Verwirrung aufgrund der Inkompatibilität mit base R. verwenden Sie dplyr sehr vorsichtig sein, dass Sie wissen, ob dplyr geladen wird oder nicht.dplyr ' s
lag
ist besonders nützlich, wenn verwendet mit Daten-frames, da ein Vektor (wie beispielsweise eine Spalte eines data Frames) es gibt immer einen Vektor, der die gleiche Länge. Es hat einedefault=
argument, das sich standardmäßig auf NA, aber können durch den Benutzer festgelegt werden, um zu bestimmen, was der Wert leer(s) an den Anfang des Vektors sind ausgefüllt mit. Negative lags sind nicht erlaubt, aber das dplyrlead
- Funktion verwendet werden.time
Teillag
nimmt ein atomarer Vektor und gibt das gleiche Vektor-mit einem zusätzlichen Attribut der drei zahlen angezeigt werden, die start, Ende und Frequenz der lag der Länge auf den Vektor, den Sie geliefert. Vektoren in R sind indiziert von 1, so dass die start-Wert für eine lag-Länge ist 0, und in Ihrem Fall, das Ende ist 3 (eine kurze Länge des Vektors). Endlich, die Frequenz gibt an, wie viele Elemente zugeschrieben werden sollte zu jedem index.Beispiel (mit freundlicher Genehmigung von @GavinSimpson)
Beachten Sie, wie der Vektor (
[1] 0 0 0 1
) ist unverändert, aber die Start und Ende Eigenschaften der Zeitreihen sind geändert, wie man erwarten würde, für eine Verzögerung. Um dies zu nutzen, benötigen Sie eine Funktion, die versteht, Rts
Objekte. Wenn mit etwas anderem, müssen Sie möglicherweise lag der Vektor selbst.tsp
Attribut des zurückgegebenen Objekts, nicht das Objekt selbst zurückgegeben.x
aus Ihrem Beispiel einets
Objekt zu vergleichen mit dem, den lag erzeugt. Dann ist es klar, dass der Vektor unverändert, und nur die Zeit, die unit t, zu der jeder Beobachtung verknüpft ist, geändert?