时间序列分析:ts/mts基础数据类型

本文介绍了R语言中ts和mts数据类型,包括ts对象的构造、属性获取、时间窗口截取、数据合并、时间序列操作及绘图。重点讲解了ts数据类型的参数、辅助函数tsp和time,以及window()、cbind()、lag()和diff()函数的使用。
摘要由CSDN通过智能技术生成

时间序列是以时间为索引的数据。时间索引为等间距递增的时间序列称为规则时间序列,其他为不规则时间序列。由于R语言核心组件的构建坚持以通用性为原则,因此R的基础包中只定义了规则时间序列,而不规则时间序列的定义和处理则留给开发人员做扩展。

本文先介绍规则时间序列。

1 ts数据类型

R语言中基本的时间序列对象为ts,在stats基本包中定义,由同名构造函数ts()产生。使用前先看看它的参数:

args(ts)
## function (data = NA, start = 1, end = numeric(), frequency = 1, 
##     deltat = 1, ts.eps = getOption("ts.eps"), class = if (nseries > 
##         1) c("mts", "ts", "matrix") else "ts", names = if (!is.null(dimnames(data))) colnames(data) else paste("Series", 
##         seq(nseries))) 
## NULL


参数中最重要的是data、frequency、start和end。

  • data 即时间序列中的观测值,可以是向量或矩阵,或者转换为向量或矩阵的数据类型(如data.frame)。默认为NA。
  • frequency 是一个时间周期中的间隔频率。如果设为12,那么时间序列将自动识别为12个自然月;如果设置为4,识别为4个季度。ts另外一个参数deltat=1/frequency,两者只能设置其中一个。
  • start和end 开始时间和结束时间,长度为1或2。如果长度为2则第二个值设定的是周期中的具体值,从1开始,不大于frequency。
dt <- sample(1:100, 24)
ts(dt, freq = 12, start = 2010)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2010  28  80  85  29  96  45  30  69  70  93  60  42
## 2011  63  16  82  81  27  57  10  78  97  51  36  13
ts(dt, freq = 4, start = 2010)
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2010   28   80   85   29
## 2011   96   45   30   69
## 2012   70   93   60   42
## 2013   63   16   82   81
## 2014   27   57   10   78
## 2015   97   51   36   13
ts(dt, freq = 1, start = 2010)
## Time Series:
## Start = 2010 
## End = 2033 
## Frequency = 1 
##  [1] 28 80 85 29 96 45 30 69 70 93 60 42 63 16 82 81 27 57 10 78 97 51 36
## [24] 13
ts(dt, freq = 7, start = 1)
## Time Series:
## Start = c(1, 1) 
## End = c(4, 3) 
## Frequency = 7 
##  [1] 28 80 85 29 96 45 30 69 70 93 60 42 63 16 82 81 27 57 10 78 97 51 36
## [24] 13
ts(dt, freq = 12, start = c(2010, 3))
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2010          28  80  85  29  96  45  30  69  70  93
## 2011  60  42  63  16  82  81  27  57  10  78  97  51
## 2012  36  13


frequency=1/4/12时ts显示形式比较合理,但其他周期数据不甚理想。这是因为ts的本意就是用来存储规则时间序列数据,而年度、季度和月度数据是最常用的。以7天为周期的统计数据相对少见,要想获得一个日历表要费点周折:

dd <- weekdays(as.Date("2016-10-17") + 0:6)
nn <- which(weekdays(as.Date("2016-10-01")) == dd)
print(ts(1:30, freq = 7, start = c(1, nn)), calendar = T)
##   p1 p2 p3 p4 p5 p6 p7
## 1                 1  2
## 2  3  4  5  6  7  8  9
## 3 10 11 12 13 14 15 16
## 4 17 18 19 20 21 22 23
## 5 24 25 26 27 28 29 30


data如果是向量,时间序列的class属性为“ts”;如果是matrix,则对象还具有mts(具有相同时间索引的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值