使用R中的ts分析每日/每周数据

时间:2011-12-08 20:59:40

标签: r time-series

我刚刚开始使用ts课来分析我的一些时间序列数据。

我感觉ts类不适合分析每日或每周数据。我在网上或Cowpertwait和Metcalfe的“带R的入门时间序列”中看到的几乎所有例子都使用月度或年度数据。

我想使用ts来分析每周数据,这是不可取的吗?

5 个答案:

答案 0 :(得分:11)

主要问题是,大多数想要分析每日或每周数据的人想要做一些事情,例如每年使用365天或每年52周,但一年中的天数或周数不是365或52甚至不变。如果您在每日数据的情况下在闰年中丢弃一天,或者说,或者在一年中的每周使用7天,除非在每周数据的情况下有8天或9天,比如说,那么您可以捏造它。可能有各种各样的方案。

阅读this thread以获取示例。

答案 1 :(得分:9)

ts类适用于在观察之间具有严格的节拍间隔的任何类型的数据。该间隔是否为年,月,日,分钟没有任何区别。这使得它非常适用于大量科学数据,例如天气观测。

但是,大量与时间相关的数据存在差距。以周末天不存在的股票收盘价为例。对于这种类型的数据,最好使用包xts(可扩展时间序列)或zoo(Z的有序观察值 - 其中Z是其中一个包作者的首字母)。

CRAN的链接:

答案 2 :(得分:5)

动物园适用于日常数据。例如,如果您在向量Q中有每日一系列的流,并且具有相应的日期戳D(例如,使用as.Date()创建)。

Q.z< - zoo(Q,order.by = D)

将创建一个可以很好地绘制的对象,并且可以使用诸如window()之类的函数来提取单个年份,例如

窗口(Q.z,start = as.Date('2000-01-01'),end = as.Date('2000-31-12')

查看Zoo包以获取更多信息。

答案 3 :(得分:3)

时间单位不起作用;只有每个单位的数据点数(频率)。至于ts及其功能关心,一天是一年是十年是一个什么。在任何时候你都没有告诉它,它处理的时间是一周或一天。没关系!

答案 4 :(得分:1)

我认为每日/每周数据的问题是两者都有跳跃单位。每四年有一个额外的366天,每四年有53个星期。或者从1900年开始。所以“频率”要么不是常数,要么是分数。否则ts应该可以正常工作。

数周最简单的方法是使用一周开始的日期。在unixlike系统上,你也可以使用ISO周,还有一个实现它们的包。当然,如果您的数据已经存在数周,那么您只需要这些数据来标记图表等。