R語言時間序列分析

時間序列是一系列數據點,其每個數據點與時間戳相關聯。 一個簡單的例子就是股票在某一天不同時間點的股票價格。另一個例子是一年中不同月份某個地區的降雨量。R語言使用許多功能來創建,操縱和繪製時間序列數據。時間序列的數據存儲在稱爲時間序列對象的R對象中。 它也是一個R數據對象,如向量或數據幀。

時間序列對象是通過使用ts()函數創建的。

語法

時間序列分析所使用的ts()函數的基本語法是 -

timeseries.object.name <-  ts(data, start, end, frequency)

以下是使用的參數的描述 -

  • data - 是包含時間序列中使用的值的向量或矩陣。
  • start - 以時間序列指定第一次觀察的開始時間。
  • end - 指定時間序列中最後觀察的結束時間。
  • frequency - 指定每單位時間的觀測次數。

除參數「data」外,所有其他參數均爲可選項。

示例

假設從2012年1月開始,要表述某地的年降雨統計信息。我們創建一個R時間序列對象,爲期12個月,並繪製。

setwd("F:/worksp/R")

# 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()

當我們執行上面的代碼,它產生以下結果和圖表 -

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

降雨量的時間序列圖 -

R語言時間序列分析

不同的時間間隔

ts()函數中的頻率(frequency)參數的值決定了測量數據點的時間間隔。 值爲12表示時間序列爲12個月。其他值及其含義如下 -

  • frequency= 12 - 每一個月的數據點。
  • frequency= 4 - 每年四分之一的數據點。
  • frequency= 6 - 每一小時10分鐘的數據點。
  • frequency= 24 6* - 每天10分鐘的數據點。

多時間系列

我們可以在一個圖表中繪製多個時間序列,將這兩個系列組合成一個矩陣。

setwd("F:/worksp/R")
# 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 = "多時間系列圖")

# Save the file.
dev.off()

當我們執行上面的代碼,它產生以下結果和圖表 -

           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

多時間系列圖 -

R語言時間序列分析