我不明白如何在R中创建时间序列对象。
我有数据:data = c(101,99,97,95,93,91,89,87,85,83,81)
(为简洁起见,较小的数据集)。
从2016-07-05
到2016-07-15
,此数据每天进行一次,持续11天。根据{{3}},每日采样数据的频率应为7.但我不理解start
和end
参数的值。对于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,1
和2016,7,11
作为开始日期和结束日期,我仍会获得相同的输出。
我做错了什么?
答案 0 :(得分:1)
我认为最好的方法是切换到xts或者动物园,因为根据另一个问题here,ts()在日常观察中挣扎,因为天数因年而异。
答案 1 :(得分:0)
据我了解,在ts()
函数中,单位是年份。因此,此处frequency
应设置为365(每年的天数)。因此,start
和end
也应代表天数。但是,(我相信)为了使时机正确,start
和end
应该是从年初开始的所需时间间隔内的差异(在您的具体情况下,分别为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