遇到R的时间序列对象有问题

时间:2015-01-13 21:16:49

标签: r csv time-series forecasting

我列出了从2004年1月到2010年12月的84个月支出,在Excel中看起来像......

12247815.55
11812697.14
13741176.13
21372260.37
27412419.28
42447077.96
55563235.3
45130678.8
54579583.53
43406197.32
34318334.64
25321371.4
...(74 more entries)

我正在尝试从此系列的预测包中运行stl(),因此我加载了数据:

d <- ts(read.csv("deseason_vVectForTS.csv",
header = TRUE),
start=c(2004,1),
end=c(2010,12),
frequency = 12)

(如果我做标题= FALSE它会吸收第一个条目 - 122 ...-作为第二列的标题,并命名第一列标题&#39; X&#39;)< / p>

但是,我的环境中没有填充Time Series Object from 2004 to 2011(如前所述),而是简单地说ts[1:84, 1]

可能相关的事实是,

fit <- stl(d) 

抛出

Error in stl(d) : only univariate series are allowed.

尽管

head(d)
[1] 12247816 11812697 13741176 21372260 27412419 42447078

d
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug      Sep      Oct
2004 12247816 11812697 13741176 21372260 27412419 42447078 55563235 45130679 54579584 43406197
("years 2005-2010 look exactly the same, and all rows have columns for Jan-Dec; it just doesn't fit on here neatly - just trying to show the object has taken the ts labeling structure.")

我做错了什么?据我所知,这与我过去构建时间序列对象的方式相同......

1 个答案:

答案 0 :(得分:1)

read.csv读入矩阵。如果它只有一列,它仍然是一个矩阵。要使其成为矢量,请使用

d <- ts(read.csv("deseason_vVectForTS.csv",
header = TRUE)[,1],
start=c(2004,1),
end=c(2010,12),
frequency = 12)

另外,请检查您的事实。 stl包含在stats包中,而不在forecast包中。使用help(stl)可以轻松检查这一点。