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 -