【问题标题】:Analyzing Daily/Weekly data using ts in R在 R 中使用 ts 分析每日/每周数据
【发布时间】:2012-01-16 06:44:30
【问题描述】:

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

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

我想用ts来分析周数据,不建议吗?

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    主要问题是大多数想要分析每日或每周数据的人都想做一些事情,比如使用每年 365 天或每年 52 周的频率,但一年中的天数或周数不是 365 或52 甚至恒定。如果您在每日数据的情况下在闰年中减少一天,或者在一年中的每个星期使用 7 天,但在每周数据的情况下有 8 天或 9 天除外,那么您可以捏造它。各种各样的方案都是可能的。

    请阅读 this thread 以获取示例。

    【讨论】:

      【解决方案2】:

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

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

      CRAN 的链接:

      【讨论】:

      • 我同意 ts 对于观察间隔变化的情况不是一个很好的选择。然而,每日收盘价的例子(在我看来)是一个相对较差的例子。周末和节假日不进行交易,因此这些天通常不需要建模。在金融行业中,将每日股票数据视为没有中间(缺失)日期是完全标准的。对于这样的情况,ts 通常是一个不错的选择。
      【解决方案3】:

      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 及其功能而言,一天是一年是十年是什么。你从来没有告诉它它处理的时间是一周或一天。没关系!

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2013-05-02
            • 2021-04-28
            • 2020-06-13
            • 2016-12-22
            • 1970-01-01
            • 2017-11-10
            • 2021-02-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多