博客内容简介及目录 http://www.cnblogs.com/weibaar/p/6644261.html

纪念一下,在心心念念想从会计本科转为数据分析师快两年后,近期终于迈出了使用R的第一步,在参考他人的例子前提下,成功写了几行代码。用成本的角度来说,省去了部门去买昂贵的数据分析软件的金钱和时间,而对自己来说,则是在数据分析又迈出了一步,往经济宽裕又迈出了一步,往财务自由又迈出了一步,不得不写个随笔纪念一下。

以及,有时候,入门真的没有想象中困难,关键是要找到入门的方法,一窍通,百窍通。

以下为代码。简而言之就是写了一个时间序列预测的代码,包括完整的数据导入,数据处理和数据输出过程。加载了forecast包,应用了auto.arima函数。

 rawdata<-read.table("file.csv",header=TRUE,sep=",")
library(forecast)

4
Rawdata_Grand.Total=rawdata$Grand.Total
TS_Grand.Total=ts(Rawdata_Grand.Total,start=2011,frequency=12)
Arima_Grand.Total<-auto.arima(TS_Grand.Total,trace=T)
Forecast_Grand.Total<-forecast(Arima_Grand.Total,h=12,fan=T)
Forecast_Grand.Total$Mean
Mean_Grand.Total<-Forecast_Grand.Total$mean[3-14]
Lower_Grand.Total<-Forecast_Grand.Total$lower
Lower_Grand.Total_96=Lower_Grand.Total[3-14,16]
Upper_Grand.Total<-Forecast_Grand.Total$upper
Upper_Grand.Total_96=Upper_Grand.Total[3-14,16]
Result_Grand.Total<-data.frame(Mean_Grand.Total,Lower_Grand.Total_96,Upper_Grand.Total_96)
write.csv(Result_Grand.Total,'result.csv')

解决问题中学会几点:

1)有的R没有forecast的包,这一般是因为R版本太低导致的,可以到CRAN上去具体搜这个包的名字,看看版本要求。一般升级R既可以解决(吐槽:R的升级竟然要重新安装包!太不智能了!不过R在一个系统里可以安装N个版本,也很神奇)

2)关于数据载入,最方便的还是read.table引入csv格式,这里空格会变成.,注意标题清理。以及R对大小写的要求超级高……

3)时间序列转换,用ts(data,start=xxxx,frequency=12)可以自动生成月度数据,超级方便。

4)forecast包很万能,有auto.arima可以自动拟合函数,然后forecast可生成观测值,这里我选的是12.然后fan=T(生成一堆预测值),fan=F,生成80%,95%置信区间预测值。

5)forecast生出的那个结果包,表面上生成的是各个置信区间的值,实际上……实际上生成了一个对象,当使用attributes查看时,出来了以下

> attributes(Forecast_Grand.Total)
$names [1] "method" "model" "level" "mean" "lower" "upper" [7] "x" "xname" "fitted" "residuals"
$class [1] "Forecast_Grand.Total"

所以之前我花了很大精力,想直接调用forecast生成的那个预测值以及96置信区间,最后都失败了。最后使用attributes查看后,再用$引用即可了,然后取1-12,第16列等,不知道是否有更简便的方法。

6)r直接输出为csv实在太爽!就是不知道有没有R合并各个文件的好方法,不然太糟心。

随文附上数据,已经做模糊化处理,不要太讲究数据质量

20900,18100,21100,21100,24800,24000,27200,29600,30100,33800,37900,36500,34900,34300,34700,36400,44300,37800,47100,45900,47800,51500,56300,52500,60600,54000,55900,52500,54500,51700,56400,62700,63400,65000,73500,72600

05-11 20:08