我熟悉stats packcage中的stl函数 试图从Brockwell& amp;戴维斯2002年的“导言” 时间序列和预测“。具体来说,我正在使用他的一部分 红酒销售数据。这是对stl材料的绕道而行 http://www.stat.pitt.edu/stoffer/tsa3/R_toot.htm(在某些时候,我 必须停止简单跟随并尝试使其与新数据一起工作)。
我需要至少36个葡萄酒销售数据点,因为stl 否则抱怨数据少于2个周期。数据 在〜/ tmp / wine.txt:
464
675
703
887
1139
1077
1318
1260
1120
963
996
960
530
883
894
1045
1199
1287
1565
1577
1076
918
1008
1063
544
635
804
980
1018
1064
1404
1286
1104
999
996
1015
我的源代码测试代码隐藏在重复循环中,以便我可以使用 break命令绕过我最后导致错误的语句 想弄明白:
repeat{
# Clear variables (from stackexchange)
rm( list=setdiff( ls( all.names=TRUE ), lsf.str(all.names=TRUE ) ) )
ls()
head( wine <- read.table("~/tmp/wine.txt") )
( x <- ts(wine[[1]],frequency=12) )
( y <- ts(wine,frequency=12) )
( a=stl(x,"per") )
#break
( b=stl(y,"per") )
}
最终语句导致错误'stl(y,“per”)中的错误:仅 允许单变量系列'。我找到了一个解释 Time series and stl in R: Error only univariate series are allowed。 这就是我用葡萄酒[[1]]想出x赋值的方法。一世 找到了需要的解释 双方括号 http://www.r-tutor.com/r-introduction/list/named-list-members
我的问题是,内部发生的事情并不十分清楚 结构x和y。如果我只是打印它们,它们看起来完全相同:
> x
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 464 675 703 887 1139 1077 1318 1260 1120 963 996 960
2 530 883 894 1045 1199 1287 1565 1577 1076 918 1008 1063
3 544 635 804 980 1018 1064 1404 1286 1104 999 996 1015
> y
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 464 675 703 887 1139 1077 1318 1260 1120 963 996 960
2 530 883 894 1045 1199 1287 1565 1577 1076 918 1008 1063
3 544 635 804 980 1018 1064 1404 1286 1104 999 996 1015
无论他们的差异如何,都不会导致R误解 数据;也就是说,它们看起来都像是一系列数值数据。
任何人都可以阐明ts数据中数据的差异 结构?与stl的潜在不兼容性只是一个 症状。现在,“解决方案”对我来说是黑魔法,我愿意 想要获得更清晰的图片,以便我知道何时(以及如何) 注意这一点。
我已将此内容发布到R帮助邮件列表中 http://thread.gmane.org/gmane.comp.lang.r.general/319626和。{ stackoverflow at How numerical data is stored inside ts time series objects