ts() 适用于两个时间单位。两者中较长的一个包含较短的一个样本,由下面给出 frequency 论证 ts() 。
ts()
frequency
在您的情况下,较长的时间单位是分钟,其中包含60个较短的样本,即秒。时间序列中的任何时刻都可以用两个数字标记,表示两个单位。同样,在您的情况下,10分钟,35秒的测量值将被标记为 c(10, 35) 。
c(10, 35)
当你指出里面的开始和结束时 ts() ,你也可以给他们两个数字。你的第一次测量是0分1秒,也就是说 c(0, 1) 最后一个是60分0秒,也就是说 c(60, 0) 。因此,这给出了预期的结果(我为示例创建了一些虚拟值):
c(0, 1)
c(60, 0)
data <- rnorm(3600) ts_data <- ts(data, start = c(0, 1), end = c(60, 0), frequency = 60) length(ts_data) ## [1] 3600
为了解释您的方法的问题,我需要介绍另外两个函数: start() 和 end() 分别返回第一个和最后一个测量的两个值标签。所以,对于上面的例子:
start()
end()
start(ts_data) ## [1] 0 1 end(ts_data) ## [1] 59 60
在这里,您已经可以看到一些细节: ts() 确实开始将样本编号为1,这样60分0秒被理解为59分60秒。
现在举个例子:
ts_data2 <- ts(data, start = 0, end = 60, frequency = 60) start(ts_data2) ## [1] 0 1 end(ts_data2) ## [1] 60 1
如您所见,如果只传递一个整数 start 和 end ,这被解释为属于较短单元中的第一个样本。所以,你实际创建了一个时间序列,从0分1秒到60分钟一秒,比你想要的多一秒。的长度 ts_data2 因此 3601 。
start
end
ts_data2
3601
一点点说完:我主要讲几分钟,因为这符合你的榜样。但重要的是要注意到这一点 ts() 只是使用更长和更短的时间单位,而不知道它们实际上是什么。所以, c(4, 6) 不仅可以指4分6秒,还可以指第4年的第6个月或第4周的第6个月。
c(4, 6)