【发布时间】:2012-01-16 06:44:30
【问题描述】:
我刚刚开始使用ts 类来分析我拥有的一些时间序列数据。
我感觉ts 类不太适合分析每日或每周数据。我在网上或 Cowpertwait 和 Metcalfe 的“R 的介绍性时间序列”中看到的几乎所有示例都使用月度或年度数据。
我想用ts来分析周数据,不建议吗?
【问题讨论】:
标签: r time-series
我刚刚开始使用ts 类来分析我拥有的一些时间序列数据。
我感觉ts 类不太适合分析每日或每周数据。我在网上或 Cowpertwait 和 Metcalfe 的“R 的介绍性时间序列”中看到的几乎所有示例都使用月度或年度数据。
我想用ts来分析周数据,不建议吗?
【问题讨论】:
标签: r time-series
主要问题是大多数想要分析每日或每周数据的人都想做一些事情,比如使用每年 365 天或每年 52 周的频率,但一年中的天数或周数不是 365 或52 甚至恒定。如果您在每日数据的情况下在闰年中减少一天,或者在一年中的每个星期使用 7 天,但在每周数据的情况下有 8 天或 9 天除外,那么您可以捏造它。各种各样的方案都是可能的。
请阅读 this thread 以获取示例。
【讨论】:
【讨论】:
zoo 可以很好地处理每日数据。例如,如果您在向量 Q 和相应的日期戳 D(例如,使用 as.Date() 创建)中有一系列每日流量。
Q.z <- zoo(Q, order.by=D)
将创建一个可以很好地绘制的对象,您可以使用诸如window() 之类的函数来提取单个年份,例如
window(Q.z, start = as.Date('2000-01-01'), end=as.Date('2000-31-12')
查看zoo 包了解更多信息。
【讨论】:
时间单位不起作用;只有每单位的数据点数(频率)才可以。就ts 及其功能而言,一天是一年是十年是什么。你从来没有告诉它它处理的时间是一周或一天。没关系!
【讨论】:
我认为每日/每周数据的问题在于两者都有闰单位。每四年有一个额外的 366 天,每四年有 53 周。或者自 1900 年以来一直如此。所以“频率”不是恒定的,也不是一小部分。否则 ts 应该可以正常工作。
每周最简单的方法是使用一周的开始日期。在 unixlike 系统上,您还可以使用 ISO 周,并且还有一个实现它们的包。当然,如果您的数据已经在几周内,您只需要这些来标记图表等。
【讨论】: