我列出了从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.")
我做错了什么?据我所知,这与我过去构建时间序列对象的方式相同......
答案 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)
可以轻松检查这一点。