自动化预测r中的图形

时间:2012-08-03 14:45:23

标签: r forecasting

我正在处理一堆不同的文件集,这些文件集的数据是每月一次,但它们都是不同的月份。其中一些包括过去2年的月度数据,其中一些包含几个月的月度数据。

我喜欢使用这些数据来创建预测图。如果所有数据都是一致的,那将是直截了当的。但是数据是按月计算的,每个文件的开始和结束时间都不同。

z输出:

    Month   Value
1 2010-01-01 100
2 2010-02-01 200
3 2010-03-01 600
4 2010-04-01 400
5 2010-05-01 300
6 2010-06-01 700

我试图将start设置为s对象,但是没有工作

s <- head(z,1)$Month
s <- sub("-", "," s)
t.ser <- ts(z$Value, start=s,freq=12)

由于我所处理的数据各不相同,因此我不知道开始日期。

这样可行,但是,由于我不知道数据集的开始日期,我可以在变量中加入变量吗?

t.ser <- ts(z$Value, start=c(2010,1),freq=12)
t.ets <- ets(t.ser) 
t.fc <- forecast(t.ets,h=12)
plot(t.fc, xaxt="n")

我想格式化x轴以显示实际数据的日期和预测值的日期。由于我不知道开始日期,我也不能这样做。无论数据如何,我都想预测12个月。

如果我知道开始时间,这是有效的。

a = seq(as.Date("2011-01-01"), by="month", length=36)
axis(1, at = decimal_date(a), labels = format(a, "%Y %b %d"), cex.axis=0.6) 

当我这样做时:

 t.ser <- ts(z$Value/1000000, start(z[1,1]),freq=12) 

我得到了

t.ser
  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1  45  51  56  56  59  60  60  60  64  65  75  73
2  74  80  87  91  92  96 109 108 123 129 133 143
3 127 127 123 121 130        

但是当我这样做时:

t.ser <- ts(z$Value/1000000, start=c(2010,1),freq=12) 

我得到了这个,这是我在开始时使用变量时想要的结果,而不是显式地设置日期。任何人都有任何想法,我将如何做到这一点?

t.ser
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2010  45  51  56  56  59  60  60  60  64  65  75  73
2011  74  80  87  91  92  96 109 108 123 129 133 143
2012 127 127 123 121 130             

1 个答案:

答案 0 :(得分:1)

尝试此操作(如果您的数据来自文件,请指定类似file = "mydata.dat"的内容代替text=Lines,如果数据不是您的数据格式,请进行适当修改):

Lines <- "Month   Value
1 2010-01-01 100
2 2010-02-01 200
3 2010-03-01 600
4 2010-04-01 400
5 2010-05-01 300
6 2010-06-01 700"

library(zoo)
z <- read.zoo(text = Lines, header = TRUE, FUN = as.yearmon)
t.ser <- as.ts(z)

这给出了:

> t.ser
     Jan Feb Mar Apr May Jun
2010 100 200 600 400 300 700