跳轉到內容

R 程式設計/時間序列

來自華夏公益教科書,開放書籍,構建開放世界

在下面的示例中,我們將使用資料集 Mpyr,該資料集包含在 R 包 Ecdat 中,可以透過以下程式碼載入到 R 中並在 R 中檢視。

#Installs the package Ecdat.
install.packages("Ecdat")
#Loads the packages Ecdat.
library(Ecdat)
#Attached the dataset Mpyr.
data(Mpyr)
#Shows the dataset Mpyr.
Mpyr
Time Series:
Start = 1900 
End = 1989 
Frequency = 1 
            m        p         y         r
1900 1.718774 2.092641 0.9030195  4.380000
1901 1.856318 2.086574 1.0131038  4.280000
1902 1.936512 2.120476 1.0114817  4.920000

建立時間序列物件

[編輯 | 編輯原始碼]
  • 函式ts()用於建立時間序列物件。
  • 函式as.ts()將物件強制轉換為時間序列。
  • 函式is.ts()測試物件是否為時間序列。

示例

> data.a<-seq(1,24,by=1)
> is.ts(data.a)
[1] FALSE
> ts(data.a, start=c(2005,1), frequency=12) 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2005   1   2   3   4   5   6   7   8   9  10  11  12
2006  13  14  15  16  17  18  19  20  21  22  23  24
> data.b<-seq(1,24,by=1)
> is.ts(data.b)
[1] FALSE
> is.ts(as.ts(data.b))
[1] TRUE

建立滯後和差分變數

[編輯 | 編輯原始碼]
  • 函式lag()建立滯後變數。
  • 函式diff()建立差分變數。

示例

> data.a<-seq(1,12,by=1)
> ts.a<-ts(data.a, start=c(2005,1), frequency=4)
> lag.a<-lag(ts.a,k=1)
> diff.a<-diff(ts.a,lag=1,difference=1)
> ts.a
     Qtr1 Qtr2 Qtr3 Qtr4
2005    1    2    3    4
2006    5    6    7    8
2007    9   10   11   12
> lag.a
     Qtr1 Qtr2 Qtr3 Qtr4
2004                   1
2005    2    3    4    5
2006    6    7    8    9
2007   10   11   12     
> diff.a
     Qtr1 Qtr2 Qtr3 Qtr4
2005         1    1    1
2006    1    1    1    1
2007    1    1    1    1


繪製時間序列物件

[編輯 | 編輯原始碼]
  • 函式plot.ts()用於繪製時間序列物件。

使用OLS擬合時間序列的自迴歸模型

[編輯 | 編輯原始碼]

為了使用普通最小二乘法將自迴歸時間序列模型擬合到資料,可以使用函式ar.ols(),該函式是“stats”包的一部分。

自相關函式

[編輯 | 編輯原始碼]

函式acf()計算(預設情況下還會繪製)自協方差或自相關函式的估計值。函式pacf()是用於偏自相關的函式。函式ccf()計算兩個單變數序列的互相關或互協方差。[1]

有用的R包

[編輯 | 編輯原始碼]
  • fBasics, tis, zoo, tseries, xts, urca, forecast

參考文獻

[編輯 | 編輯原始碼]

http://cran.r-project.org/web/views/TimeSeries.html

http://cran.r-project.org/doc/contrib/Ricci-refcard-ts.pdf

華夏公益教科書