为R中每日采样的数据创建时间序列

时间:2016-08-01 16:42:44

标签: r time-series

我不明白如何在R中创建时间序列对象。 我有数据:data = c(101,99,97,95,93,91,89,87,85,83,81)(为简洁起见,较小的数据集)。 从2016-07-052016-07-15,此数据每天进行一次,持续11天。根据{{​​3}},每日采样数据的频率应为7.但我不理解startend参数的值。对于start,文档说: the time of the first observation. Either a single number or a vector of two integers, which specify a natural time unit and a (1-based) number of samples into the time unit.我不明白1-based number of samples的含义。我试图谷歌但它没有帮助。

如果我只使用2016,7作为开始日期和结束日期,我只会:

Time Series:
Start = c(2016, 7) 
End = c(2016, 7) 
Frequency = 7 
[1] 101

如果我使用2016,7,12016,7,11作为开始日期和结束日期,我仍会获得相同的输出。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是切换到xts或者动物园,因为根据另一个问题here,ts()在日常观察中挣扎,因为天数因年而异。

答案 1 :(得分:0)

据我了解,在ts()函数中,单位是年份。因此,此处frequency应设置为365(每年的天数)。因此,startend也应代表天数。但是,(我相信)为了使时机正确,startend应该是从年初开始的所需时间间隔内的差异(在您的具体情况下,分别为186和196) )。可以使用以下方法检查这些数字的适当性:

as.numeric(as.Date("2016-07-05") - as.Date("2016-01-01"))
[1] 186
as.numeric(as.Date("2016-07-15") - as.Date("2016-01-01"))
[1] 196

将这些信息嵌入代码中,ts()的调用应为:

data = c(101,99,97,95,93,91,89,87,85,83,81)
ts(data, start = c(2016, 186), end = c(2016, 196), frequency = 365)
# which yielded
Time Series:
Start = c(2016, 186) 
End = c(2016, 196) 
Frequency = 365 
 [1] 101  99  97  95  93  91  89  87  85  83  81

HTH