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

18

我刚开始尝试使用ts类来分析一些时间序列数据。

我有一种感觉,ts类不太适合分析日常或每周的数据。几乎所有我在网上看到的例子或者在Cowpertwait和Metcalfe的"使用R进行时间序列初步分析"中看到的例子都是使用月度或年度数据。

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

5个回答

12

主要问题在于大多数想要分析每日或每周数据的人希望使用一年365天或52周的频率,但是一年中的天数或周数不是恒定的甚至不是365或52。如果在每日数据的情况下在闰年中减少一天,或者在每周数据的情况下使用一年中除了有8或9天之外的7天作为每周的天数,则可以虚假处理它。有无尽的方案可行。

请阅读这个线程以获得一个示例。


10

ts类适用于具有严格的节奏间隔的任何类型的数据。无论这个间隔是年、月、日、分钟都没有关系。这使得它非常适合于许多科学数据,例如天气观测。

然而,一大类与时间相关的数据存在间隙。以股票收盘价为例,周末没有交易日。对于这种类型的数据,最好使用xts(可扩展时间序列)或zoo(Z有序观测-其中Z是一个包作者的首字母缩写)。

CRAN链接:


我同意在观测间隔时间变化的情况下,ts并不是一个很好的选择。然而,以每日收盘价为例(在我看来)相对较差。交易不会在周末和节假日进行,因此通常不需要对这些天进行建模。在金融行业中,将每日股票数据视为没有任何中间(缺失)天数是完全标准的。对于这种情况,ts通常是一个很好的选择。 - pmcs

5

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 包以获取更多信息。


4

时间单位并不重要,只有每个单位内的数据点数量(频率)才重要。对于 ts 及其函数而言,一天、一年、十年或其他时间单位都没有区别。你无需告诉它正在处理一周或一天的时间段。这并不重要!


1

我认为每日/每周数据的问题在于它们都有闰年单位。每四年有额外的366天和53个星期。或者自1900年以来一直如此。因此,“频率”要么不是恒定的,要么是一个分数。否则,ts应该可以正常工作。

解决星期的最简单方法是使用星期开始的日期。在类Unix系统上,您还可以使用ISO星期,并且还有一个实现它们的软件包。当然,如果您的数据已经按周计算,则只需要将其用于标记图表等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接