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
降雨量的時間序列圖 -
不同的時間間隔
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
多時間系列圖 -