【问题标题】:decompose() for yearly time series in Rdecompose() 用于 R 中的年度时间序列
【发布时间】:2016-10-20 06:04:03
【问题描述】:

我正在尝试对从 1960 年到 2015 年的通货膨胀率时间序列数据进行分析。该数据集是 56 年的年度时间序列,每年有 1 个实际值,如下所示:

Year    Inflation percentage
1960    1.783264746
1961    1.752021563
1962    3.57615894
1963    2.941176471
1964    13.35403727
1965    9.479452055
1966    10.81081081
1967    13.0532972
1968    2.996404315
1969    0.574712644
1970    5.095238095
1971    3.081105573
1972    6.461538462
1973    16.92815855
1974    28.60169492
1975    5.738605162
1976    -7.63438068
1977    8.321619342
1978    2.517518817
1979    6.253164557
1980    11.3652609
1981    13.11510484
1982    7.887270664
1983    11.86886396
1984    8.32157969
1985    5.555555556
1986    8.730811404
1987    8.798689021
1988    9.384775808
1989    3.26256011
1990    8.971233545
1991    13.87024609
1992    11.78781925
1993    6.362038664
1994    10.21150033
1995    10.22488756
1996    8.977149075
1997    7.16425362
1998    13.2308409
1999    4.669821024
2000    4.009433962
2001    3.684807256
2002    4.392199745
2003    3.805865922
2004    3.76723848
2005    4.246353323
2006    6.145522388
2007    6.369996746
2008    8.351816444
2009    10.87739112
2010    11.99229692
2011    8.857845297
2012    9.312445605
2013    10.90764331
2014    6.353194544
2015    5.872426595

'stock1' 包含我的数据,其中第一列代表年份,第二列代表 'Inflation.percentage',如下所示:

stock1<-read.csv("India-Inflation time series.csv", header=TRUE, stringsAsFactors=FALSE, as.is=TRUE)

以下是我创建时间序列对象的代码:

stock <- ts(stock1$Inflation.percentage,start=(1960), end=(2015),frequency=1)

在此之后,我尝试使用以下代码行分解时间序列对象“股票”:

decom_add <- (decompose(stock, type ="additive"))

这里出现错误:

分解错误(stock, type = "additive"):时间序列没有 或少于 2 个周期

为什么会这样?我最初认为这与频率有关,但由于数据是年度数据,因此频率必须为 1 对吗?如果是1,那么数据中的句点不是肯定多于2个吗?

为什么decompose() 不工作?我做错了什么?

提前非常感谢!

【问题讨论】:

  • 请展示一个可重现的例子。
  • 我对时间序列没有太多经验,但是decompose 将时间序列分解为季节性、趋势和不规则部分。频率为 1 时,您没有季节性周期。所以你不能以这种方式使用它,但也许只是了解趋势及其错误。
  • 问题在于频率。该函数对每个季节进行细分。你只有一个季节。
  • 但是,季节性不能也是每年一次吗?例如,在每个十年结束时,可能会有重复的模式,对吗?鉴于我每年只有一个条目,我如何捕捉到这一点?我也将数据添加到问题中。
  • 例如decompose(ts(stock1$Inflation.percentage,start=c(6, 1), end=c(11, 6), frequency=10))?

标签: r time-series


【解决方案1】:

请尝试frequency=2,因为频率需要大于1。因为这个动作会改变你的模型,对我来说更好的方法是加载包含月份列的数据,所以频率将是12。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2021-05-16
    • 1970-01-01
    • 2016-09-12
    • 2019-03-04
    相关资源
    最近更新 更多