2016-04-20 7 views
3

Ich habe stündlich Daten wie die Probe unter dem ich versuche, eine Zeitreihe aus und verwenden Sie die Fensterfunktion mit zu erstellen. Mein Endziel ist es, ein Arima-Modell zu trainieren. Es fällt mir schwer, ts() oder window() zu verwenden, um mit meinem Datumsformat zu arbeiten. Ich habe auch versucht, msts() zu verwenden, konnte es aber nicht mit dem Datum Uhrzeitformat arbeiten. Ich habe xts() bekommen zu arbeiten, aber es scheint nicht richtig mit dem window() oder Arima() zu arbeiten.Verwenden Stundendaten in ts und Fensterfunktion

Kann dieses Datumsformat mit ts() und der window() Funktion verwendet werden? Irgendwelche Tipps werden sehr geschätzt.

Code:

tsData <- ts(SampleData$MedTime[1:24],start='2015-01-01 00:00', frequency=168) 

train <- window(tsData,end='2015-01-01 15:00') 

Notiz bearbeiten Die Daten für dieses Problem wurde von den anfänglichen 525 vorgesehen, um nur 24 Beobachtungen abgeschnitten. Als Ergebnis wurde der Aufruf window() zu einer Zeit innerhalb des abgeschnittenen Bereichs geändert.

Daten:

dput(SampleData[1:24,c("DateTime","MedTime")]) 

Sample = Struktur (Liste (Datetime = c ("2015.01.01 00:00", "2015.01.01 01.00", „2015 -01-01 02:00 "," 2015-01-01 03:00 "," 2015-01-01 04:00 "," 2015-01-01 05:00 ", " 2015-01-01 06 : 00 "," 2015-01-01 07:00 "", "2015-01-01 08:00", "2015-01-01 09:00", "2015-01-01 10:00", " 2015-01-01 11:00 "," 2015-01-01 12:00 "," 2015-01-01 13:00 ", " 2015-01-01 14:00 "," 2015-01-01 15:00 "," 2015-01-01 16:00 "," 2015-01-01 17:00 ", " 20 15-01-01 18:00 "," 2015-01-01 19:00 "," 2015-01-01 20:00 "," 2015-01-01 21:00 ", " 2015-01-01 22.00" , "2015.01.01 23.00 Uhr"), MedTime = c (11, 14, 17, 5, 5, 5,5, 8, NA, 5,5, 6,5, 8,5, 4, 5, 9, 10, 11, 7, 6, 7, 7, 5, 6, 9, 9)), .Names = c ("DateTime", "MedTime"), row.names = c (NA, 24L), Klasse = "data.frame")

+1

Ich glaube nicht, wir brauchen 525 Beispielfälle. Können Sie es bitte etwas verkleinern? – thelatemail

Antwort

4

Time Series in R

Das ts() Objekt hat ein paar Einschränkungen. Vor allem akzeptiert es keine Zeitstempel pro Beobachtung. Stattdessen fordert er einen start und freq (die end ist optional). Darüber hinaus sind die Funktionen freq auf das Anzeigen von Daten in Bezug auf Jahreszeiten beschränkt.

Type  Frequency 
Annual  1 
Quarterly 4 
Monthly 12 
Weekly 52 

Damit die richtige "Saison" zu erzeugen, würden wir wo freq=1440 (= 24 * 60) mit einer täglich Saisonalität zu berechnen haben. Es wird ein bisschen komplizierter danach.

Als Ergebnis würde ich sehr empfehlen, die Zeitreihe mit einem xts oder zoo Objekt zu erstellen.

Erstellen einer Datetime-Stempel

Weiter oben, einer der Gründe für die Windowing-Ausgaben ist das Datum, das Sie liefern werden, ist ein String und kein POSIXct oder POSIXlt Objekt. Der Prior davon ist bevorzugt.

Eine vollständige Aufschlüsselung gefunden werden kann:

Difference between as.POSIXct/as.POSIXlt and strptime for converting character vectors to POSIXct/POSIXlt

Dealing with timestamps in R

Damit wird gesagt, einer der ersten Schritte ist Ihre Daten von Charakter Form POSIXct

zu konvertieren
# Convert to POSXICT 
SampleData$DateTime = as.POSIXct(strptime(SampleData$DateTime, format ="%Y-%m-%d %H:%M")) 

Windowing

Von dort wird das Windowing Problem trivial, wenn wir ein xts() Objekt erstellen.

# install.packages("xts") 
require(xts) 

# Create an XTS object to hold the time series 
sdts = xts(SampleData$MedTime, order.by = SampleData$DateTime) 

# Subset training 
train = window(sdts,end= as.POSIXct('2015-01-21 23:00', format ="%Y-%m-%d %H:%M")) 
+0

Warum hast du gesagt, dass 24 * 60 die tägliche Frequenz ist? Wenn die monatlichen, wöchentlichen Frequenzen 12 bzw. 52 sind, sollte nicht die tägliche Häufigkeit 365 sein? – Ahmedov

+0

24 * 60 ist die tägliche Minutenfrequenz. 24 * 2 ist die halbe Stunde Frequenz. 24 * 3600 ist die tägliche zweite Frequenz und so weiter. Die 365 wäre in diesem Fall die tägliche jährliche Saisonalität. Die richtige Saisonalität sollte in der Tat 24 sein und wenn Daten für ein Jahr existieren, dann 8766 (365,25 * 24). – coatless

Verwandte Themen