在R中对年度时间序列进行decompose()分解

5

我正在尝试对从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"))

我在这里遇到了一个错误:

Error in decompose(stock, type = "additive") : 时间序列没有两个或以上的周期

为什么会这样呢?我最初认为这可能与频率有关,但由于数据是年度的,频率必须是1对吧?如果是1,那么数据中肯定有超过2个周期,不是吗?

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

非常感谢您提前的帮助!


1
请提供一个可重现的示例。 - akrun
2
我对时间序列没有太多经验,但是decompose可以将时间序列分解为季节、趋势和不规则成分。在频率为1的情况下,你没有季节周期。因此你不能这样使用它,但也许只需获取趋势及其误差。 - lukeA
2
问题在于频率。该函数针对每个季节进行分解。你只有一个季节。 - Pierre L
例如 decompose(ts(stock1$Inflation.percentage,start=c(6, 1), end=c(11, 6), frequency=10)) - lukeA
1
该函数并不会尝试为您“查找”季节长度,您需要自己提供。如果您想要十年的话,请将10作为您的频率。 - Pierre L
显示剩余2条评论
1个回答

0
请尝试使用frequency=2,因为频率需要大于1。由于此操作将更改您的模型,对我来说更好的方法是加载包含月份列的数据,这样频率将为12。

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