跳转到内容

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

参考文献

[编辑 | 编辑源代码]

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

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

华夏公益教科书