R - Analiza szeregów czasowych
Szeregi czasowe to seria punktów danych, w których każdy punkt danych jest powiązany z sygnaturą czasową. Prostym przykładem jest cena akcji na giełdzie w różnych momentach w danym dniu. Innym przykładem jest ilość opadów w regionie w różnych miesiącach roku. Język R wykorzystuje wiele funkcji do tworzenia, manipulowania i wykreślania danych szeregów czasowych. Dane dla szeregu czasowego są przechowywane w obiekcie R. o nazwietime-series object. Jest to również obiekt danych R, taki jak wektor lub ramka danych.
Obiekt szeregów czasowych jest tworzony przy użyciu ts() funkcjonować.
Składnia
Podstawowa składnia ts() funkcja w analizie szeregów czasowych to -
timeseries.object.name <- ts(data, start, end, frequency)
Poniżej znajduje się opis użytych parametrów -
data jest wektorem lub macierzą zawierającą wartości używane w szeregach czasowych.
start określa czas rozpoczęcia pierwszej obserwacji w szeregu czasowym.
end określa czas zakończenia ostatniej obserwacji w szeregu czasowym.
frequency określa liczbę obserwacji na jednostkę czasu.
Z wyjątkiem parametru „data” wszystkie inne parametry są opcjonalne.
Przykład
Rozważ szczegóły rocznych opadów deszczu w miejscu, począwszy od stycznia 2012 r. Tworzymy obiekt szeregów czasowych R na okres 12 miesięcy i wykreślamy go.
# Get the data points in form of a R vector.
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
# Convert it to a time series object.
rainfall.timeseries <- ts(rainfall,start = c(2012,1),frequency = 12)
# Print the timeseries data.
print(rainfall.timeseries)
# Give the chart file a name.
png(file = "rainfall.png")
# Plot a graph of the time series.
plot(rainfall.timeseries)
# Save the file.
dev.off()
Kiedy wykonujemy powyższy kod, daje on następujący wynik i wykres -
Jan Feb Mar Apr May Jun Jul Aug Sep
2012 799.0 1174.8 865.1 1334.6 635.4 918.5 685.5 998.6 784.2
Oct Nov Dec
2012 985.0 882.8 1071.0
Wykres szeregów czasowych -
Różne przedziały czasowe
Wartość frequencyparametr w funkcji ts () decyduje o odstępach czasu, w których mierzone są punkty danych. Wartość 12 oznacza, że szereg czasowy obejmuje 12 miesięcy. Inne wartości i ich znaczenie są jak poniżej -
frequency = 12 ustala punkty danych dla każdego miesiąca w roku.
frequency = 4 ustala punkty danych dla każdego kwartału roku.
frequency = 6 ustala punkty danych co 10 minut na godzinę.
frequency = 24*6 ustala punkty danych co 10 minut dziennie.
Wiele szeregów czasowych
Możemy wykreślić wiele szeregów czasowych na jednym wykresie, łącząc obie serie w macierz.
# Get the data points in form of a R vector.
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <-
c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)
# Convert them to a matrix.
combined.rainfall <- matrix(c(rainfall1,rainfall2),nrow = 12)
# Convert it to a time series object.
rainfall.timeseries <- ts(combined.rainfall,start = c(2012,1),frequency = 12)
# Print the timeseries data.
print(rainfall.timeseries)
# Give the chart file a name.
png(file = "rainfall_combined.png")
# Plot a graph of the time series.
plot(rainfall.timeseries, main = "Multiple Time Series")
# Save the file.
dev.off()
Kiedy wykonujemy powyższy kod, daje on następujący wynik i wykres -
Series 1 Series 2
Jan 2012 799.0 655.0
Feb 2012 1174.8 1306.9
Mar 2012 865.1 1323.4
Apr 2012 1334.6 1172.2
May 2012 635.4 562.2
Jun 2012 918.5 824.0
Jul 2012 685.5 822.4
Aug 2012 998.6 1265.5
Sep 2012 784.2 799.6
Oct 2012 985.0 1105.6
Nov 2012 882.8 1106.7
Dec 2012 1071.0 1337.8
Wykres wielu szeregów czasowych -