• R入门-第一次写了一个完整的时间序列分析代码


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

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

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

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

     1 rawdata<-read.table("file.csv",header=TRUE,sep=",")
     2 library(forecast)
     3   
    4 5 Rawdata_Grand.Total=rawdata$Grand.Total 6 TS_Grand.Total=ts(Rawdata_Grand.Total,start=2011,frequency=12) 7 Arima_Grand.Total<-auto.arima(TS_Grand.Total,trace=T) 8 Forecast_Grand.Total<-forecast(Arima_Grand.Total,h=12,fan=T) 9 Forecast_Grand.Total$Mean 10 Mean_Grand.Total<-Forecast_Grand.Total$mean[3-14] 11 Lower_Grand.Total<-Forecast_Grand.Total$lower 12 Lower_Grand.Total_96=Lower_Grand.Total[3-14,16] 13 Upper_Grand.Total<-Forecast_Grand.Total$upper 14 Upper_Grand.Total_96=Upper_Grand.Total[3-14,16] 15 Result_Grand.Total<-data.frame(Mean_Grand.Total,Lower_Grand.Total_96,Upper_Grand.Total_96) 16 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

  • 相关阅读:
    【iHMI43 液晶模块】【USB Mass storage 大容量存储设备 / 虚拟U盘代码包】
    [iBoard 电子学堂][第二卷 C程序设计语言 ]第二篇 数据类型与运算符
    【IAR EW STM8 1401】 破解方法
    [iBoard 电子学堂][第八卷 设计任意波发生器]第三篇 直接数字合成(DDS)原理
    发布《iCore》ARM + FPGA 双核心板
    [iBoard 电子学堂][第〇卷 电子基础 ]第三篇 单片微控制器、微处理器
    [iBoard 电子学堂][第二卷 C程序设计语言 ]第一篇 C语言简介
    【iCore双核心组合是开发板例程】【uCGUI 例程及代码包下载】
    发布《iBoard 电子学堂》基础例程之 8051 例程代码!
    【iBoard 电子学堂教程】【uCGUI 例程及代码包下载】
  • 原文地址:https://www.cnblogs.com/weibaar/p/3995681.html
Copyright © 2020-2023  润新知