【问题标题】:R - Analysis of time series with semi-annual data?R - 使用半年度数据分析时间序列?
【发布时间】:2018-03-06 10:47:33
【问题描述】:

我有一个包含半年(半年)数据点的时间序列。

ts() 函数似乎无法处理,因为“频率 = 2”返回一个非常奇怪的时间序列对象,该对象远远超出实际时间段。

有没有办法在R中对这种时间序列对象进行时间序列分析?

编辑:这是一个例子:

dat <- seq(1, 17, by = 1)
> semi <- ts(dat, start = c(2008,12), frequency = 2)
> semi
Time Series:
Start = c(2013, 2) 
End = c(2021, 2) 
Frequency = 2 
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17

我期待:

> semi
      s1     s2
2008          1
2009   2      3
2010   4      5
2011   6      7
2012   8      9
2013  10     11
2014  12     13 
2015  14     15
2016  16     17

【问题讨论】:

  • 我用deltat = 1/2 尝试过,似乎有效。 semi &lt;- c(1:12)semi_ts &lt;- ts(semi, start = 2000, deltat = 1/2)。 .... 抱歉,我只是比较了frequency = 2,结果相同:&gt; semi_ts Time Series: Start = c(2000, 1) End = c(2005, 2) Frequency = 2 [1] 1 2 3 4 5 6 7 8 9 10 11 12
  • 您是否提供了正确的 start= ?这可能会导致ts 以意想不到的方式改变时间。
  • @wolf_wue 如果您设置frequency = 2: semi_ts &lt;- ts(semi, start = 2000, frequency = 2) 导致START = c(2000,1)END = c(2005,2),您的示例也可以正常工作(并给出相同的答案)
  • @Eumenedies,我在两种情况下都收到相同的结果
  • 请给我们reproducible example您的问题。不需要真实数据。

标签: r time-series periodicity


【解决方案1】:

首先让我解释一下为什么第一个 ts 元素从 2013 年而不是 2008 年开始。函数 start 和 end 使用周期/频率。如果您的频率为 2,则您选择了 2008 年之后的第 12 个周期,即 2013 年的第二个周期。

这应该在这段时间内有效:

semi <- ts(dat, start = c(2008,2), frequency = 2)

仍然 semi 给出正确的时间序列,但是,它不知道频率为 2 的名称。如果您绘制时间序列,将显示正确的半年图。

plot.ts(semi) 

In this problem 有人解释了 ts() 知道的标准频率。

【讨论】:

  • 谢谢!有意义的是,开始应该是 2(下半年)而不是 12 月的 12。
猜你喜欢
  • 2015-11-26
  • 2021-08-22
  • 2013-09-08
  • 2019-07-03
  • 2016-10-20
  • 2017-05-02
  • 2019-07-15
  • 2012-12-09
  • 1970-01-01
相关资源
最近更新 更多