2017-05-29 4 views
0

Ich möchte die Wavelet-Transformation eines multivariaten Zeitreihen-Datensatzes berechnen. Ich plane, das wavethresh Paket und spezifisch die modwt() Funktion zu verwenden. Die Hilfedatei für diese Funktion gibt an, dass das Objekt entweder "Eine univariate oder multivariate Zeitreihe sein soll. Numerische Vektoren, Matrizen und Datenrahmen werden ebenfalls akzeptiert."Konvertieren von multivariaten XTS zu TS in R

Momentan ist mein Datensatz im xts-Zoo-Format, wo die Zeit in 15-Minuten-Intervallen ist und ich es in ts konvertieren möchte, aber ich habe große Schwierigkeiten.

I haben die versucht folgende:

modwtCoeff <- modwt(as.ts(wideRawXTS, 
+       start = head(index(wideRawXTS), 1), 
+       end = tail(index(wideRawXTS), 1), 
+       frequency = 1), 
+      filter = "la8", 
+      n.levels = "10", 
+      boundary = "periodic", 
+      fast = TRUE) 

> class(wideRawXTS) 
[1] "xts" "zoo" 

wo head(index(wideRawXTS,1),1) kehrt "2017-01-20 16:30:00 GMT" und tail(index(wideRawXTS,1),1) kehrt "2017-02-03 16:00:00 GMT"

I wird folgende Fehler als Ergebnis der Linien oben:

Error in ts(coredata(x), frequency = frequency(x), ...) : 
    formal argument "frequency" matched by multiple actual arguments 

The Fehler liegt in der Konvertierung von xts zu ts, als ich die modwt-Wrapper-Funktion und I st entfernt habe krank bekomme den gleichen Fehler. Nach weiterem Googeln bin ich auf diesen Artikel https://www.r-bloggers.com/preventing-argument-use-in-r/ gestoßen, aber ich verstehe es nicht ganz. Meine Vermutung ist, dass ich die Umwandlung möglicherweise in einzelne Schritte zerlegen muss, um zu vermeiden, dass einige Argumente in der as.ts-Funktion verwendet werden.

Kann mir jemand ein paar Anweisungen geben, wo ich bei der Konvertierung falsch liege? Um hier ein reproduzierbares Beispiel zu geben, gibt eine link eine Ausgabe des wideRawXTS-Objekts.

Antwort

1

Die allgemeine Funktion einer Frequenz zu berechnen ist:

Frequenz = number_of_events/TIME_INTERVAL

Wie Ihre Daten 1343 Zeilen für ein Zeitintervall von 14 Tagen haben, auf der Frequenz abhängen, was ist deine Zeiteinheit.

Zeiteinheit: Tag

In diesem Fall wird die Frequenz:

1343/14 = 95.93 => 96 

das bedeutet ist, Sie 96 measurments pro Tag.

Zeiteinheit: Stunden

In diesem Fall wird die Frequenz:

1343/(14*24) = 3.99 => 4 

das bedeutet ist, Sie 4 measurments pro Stunde machen.

Zeiteinheit: 15 Minute

In diesem Fall wird die Frequenz:

1343/(14*24*4) = 0.999 => 1 

das bedeutet ist, können Sie eine Messung machen alle 15 Minuten.

Verwandte Themen