博客内容简介及目录 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

R入门-第一次写了一个完整的时间序列分析代码的更多相关文章

  1. 今天我自己第一次写了一个Windows批处理bat脚本,一起学习一下吧。

    今天我自己第一次写了一个Windows批处理bat脚本,备注一下 事情原由:自己使用Java开发了一个加解密的工具.但是当把工具给别人使用的时候,别人还需要把代码编译打包, 然后还需要看一下代码里面的 ...

  2. 如何写好一个完整的Essay写作论证

    主体段是我们留学生在Essay写作中陈述观点和论述观点的核心段落,那么一个完整的论证应该包含哪些要素呢?我觉得有这么几项:主旨句.解释.例证.小结(非必需) 这些其实也是我们在说服他人接受我们的观点时 ...

  3. Orchard入门:如何创建一个完整Module

    这是一个Orchard-Modules的入门教程.在这个教程里,我们将开发两个功能页面分别用于数据录入与数据展示. 完成上述简单功能开发,我们一共需要6个步骤.分别为: 创建Module 创建Mode ...

  4. nodejs入门学习笔记一——一个完整的http路由服务实现

    开始学习nodejs! 参考书籍:The Node Beginner Book ,所有问题和讨论都围绕本书. 1.学习nodejs需要具备的基础知识: js基本语法,基本上写过前端的都能满足,原生js ...

  5. java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多

    java nio 写一个完整的http服务器  支持文件上传   chunk传输    gzip 压缩      也仿照着 netty处理了NIO的空轮询BUG        本项目并不复杂 代码不多 ...

  6. 和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧。因为,很多PCI的例子都是对S5933,就连微软出版的《Programming the Microsoft Windows Driver Model》都提供了一个完整的S5933的例子。 在这篇有关DDK的开发论文里。

    和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧.因为,很多PCI的例子都是对S5933,就连微软出版的<Programming the Microsoft Wi ...

  7. Scheme语言实例入门--怎样写一个“新型冠状病毒感染风险检测程序”

    小学生都能用的编程语言 2020的春季中小学受疫情影响,一直还没有开学,孩子宅在家说想做一个学校要求的研究项目,我就说你做一个怎么样通过编程来学习数学的小项目吧,用最简单的计算机语言来解决小学数学问题 ...

  8. 《Java从入门到失业》第四章:类和对象(4.3):一个完整的例子带你深入类和对象

    4.3一个完整的例子带你深入类和对象 到此为止,我们基本掌握了类和对象的基础知识,并且还学会了String类的基本使用,下面我想用一个实际的小例子,逐步来讨论类和对象的一些其他知识点. 4.3.1需求 ...

  9. Istio技术与实践04:最佳实践之教你写一个完整的Mixer Adapter

    Istio内置的部分适配器以及相应功能举例如下: circonus:微服务监控分析平台. cloudwatch:针对AWS云资源监控的工具. fluentd:开源的日志采集工具. prometheus ...

随机推荐

  1. ECSHOP Inject PHPCode Into ecs_mail_templates table Via \admin\mail_template.php && \includes\cls_template.php Vul Tag_PHP_Code Execute Getshell

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Ecshop后台模版编辑漏洞,黑客可以在获得了后台管理员的帐号密码之后,可以通过在 ...

  2. 动态库在线更新导致coredump的问题

    最近我们数据中心主机上的第三方管理工具升级,导致数据中心系统coredump,看起来不相关的事情,到底是怎么回事了? 首先,打开core文件看看: core.45259 is truncated: e ...

  3. java里面时间差比较

    currentTime.before(this.getLastActivateTime(time))//返回true 或者false public Date getLastActivateTime(t ...

  4. 判断请求是不是ajax

    public static bool IsAjaxRequest(HttpRequest request) { if (request == null) { throw new ArgumentNul ...

  5. Spring Cache 介绍

    Spring Cache 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 c ...

  6. 如何解决Response.Redirect方法传递汉字丢失或乱码问题?

    为了确保传递的汉字被正确地接收,可以在传值之前使用Server对象的UrlEncode方法对所传递的汉字进行URL编码.代码如下: String name = Server.UrlEncode(&qu ...

  7. ThreadPoolExecutor机制

    一.概述 1.ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务: 2.Execu ...

  8. Linux 问题汇总

    centos主机发现大量的TIME_WAIT  解决方法: vim /etc/sysctl.conf #编辑文件,加入以下内容: net.ipv4.tcp_syncookies = 1 net.ipv ...

  9. Ajax Post 类实例

    以前总是ajax请求是这样的 data:"a=1&b=2&c=3..." 而Controller也总是这样的 Action(int a,int b,int c) 很 ...

  10. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在上一篇中,我们已经初步开始使用Web Api了,但同时出现了一些很多不足之处,本章我们就着 ...