ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:34.74KB ,
资源ID:683906      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/683906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(R语言时间序列中文教程可编辑.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

R语言时间序列中文教程可编辑.docx

1、R语言时间序列中文教程可编辑R语言时间序列中文教程(可编辑)R语言时间序列中文教程 R语言时间序列中文教程李智 在乔治梅森 2012特别声明:R语言是免费语言,其代码不带任何质量保证,使用R语言所产生的后果由使用者负全责。前言R语言是一种数据分析语言,它是科学的免费的数据分析语言,是凝聚了众多研究人员心血的成熟的使用范围广泛全面的语言,也是学习者能较快受益的语言。 在R语言出现之前,数据分析的编程语言是SAS。当时SAS的功能比较有限。在贝尔实验室里,有一群科学家讨论提到,他们研究过程中需要用到数据分析软件。SAS的局限也限制了他们的研究。于是他们想,我们贝尔实验室的研究历史要比SAS长好几倍

2、,技术力量也比SAS强好几倍,且贝尔实验室里并不缺乏训练有素的专业编程人员,那么,我们贝尔实验室为什么不自己编写数据分析语言,来满足我们应用中所需要的特殊要求呢,于是,贝尔实验室研究出了S-PLUS语言。后来,新西兰奥克兰大学的两位教授非常青睐S-PLUS的广泛性能。他们决定重新编写与S-PLUS相似的语言,并且使之免费,提供给全世界所有相关研究人员使用。于是,在这两位教授努力下,一种叫做R的语言在奥克兰大学诞生了。R基本上是S-PLUS的翻版,但R是免费的语言,所有编程研究人员都可以对R语言做出贡献,且他们已经将大量研究成果写成了R命令或脚本,因而R语言的功能比较强大,比较全面。研究人员可免

3、费使用R语言,可通过阅读R语言脚本源代码,学习其他人的研究成果。笔者曾有幸在奥克兰大学受过几年熏陶,曾经向一位统计系的老师提请教过一个数据模拟方面的问题。那位老师只用一行R语句就解答了。R语言的强大功能非常令人惊讶。 为了进一步推广R语言,为了方便更多研究人员学习使用R语言,我们收集了R语言时间序列分析实例,以供大家了解和学习使用。当然,这是非常简单的模仿练习,具体操作是,用复制粘贴把本材料中R代码放入R的编程环境;材料中蓝色背景的内容是相关代码和相应输出结果。经过反复模仿,学习者便能熟悉和学会。需要提醒学习者的是:建议学习者安装了R语言编程,再继续阅读本材料;执行R命令时,请删除命令的中文注

4、解,没使用过在命令中加入中文;如果学习者是初次接触R或者Splus,建议先阅读 ,如果学习者比较熟悉R语言,还可以阅读优秀时间序列读物Ecomometrics in R,也可以上QuickR 网站。目录R语言时间序列分析1前言1目录21.运用R语言研究JJ数据32.运用R语言研究空气污染193.运用R语言研究自动回归移动平均集成模型224.运用R语言研究全球变暖理论315.运用R语言研究非独立误差与线性回归326.运用R语言研究估计波动的频率367.运用R语言研究厄尔尼诺频率398.运用R语言研究太阳黑子周期频率401.运用R语言研究JJ数据 学习R言语时间序列分析程序操作,需要从最基础、最简

5、单的学起,例如在命令窗口中,输入并执行2+2 等于4的R语言命令。2+2 1 4 执行完2+2 等于4的R语言命令后,我们可以开始时间序列,即学着把玩johnson & Johnson 数据。下载jj.dat或执行下面语句。这个数据已被人上传到因特网中。R所需要做的只是将网址进行扫描就可以将数据读取进入R的编程环境中。 下面有3种不同读取数据的方法:jj scan # read the data读取数据jj - scan # read the data another way第二种方法读取数据scan - jj # and another第三种方法读取数据 使用R语言的人,有的喜欢使用 -,有

6、的喜欢使用- ,大多数医疗系统的工作者喜欢用 ,正因为如此才用了上面种不同读取数据的方法。 读取数据后,键入并执行jj,数据在窗口便会有如下显示:jj 1 0.71 0.63 0.85 0.44 5 0.61 0.69 0.92 0.55 . . . . . . . . . . 77 14.04 12.96 14.85 9.99 81 16.20 14.67 16.02 11.61 jj中有84个数据被称作对象。下面命令可以显示所有对象。objects 如果使用matlab,你会认为jj是一个84行1列的向量,但实际上不是这样。jj有次序,有长度,但没维度,R称这些对象为向量,要小心区别。在R

7、里,矩阵有维度,但向量没维度。这都是程序语言的一些概念。jj1 # the first element列中第一个数据 1 0.71jj84 # the last element列中最后一个数据 1 11.61jj1:4 # the first 4 elements列中第一至第四个数据 1 0.71 0.63 0.85 0.44jj- 1:80 # everything EXCEPT the first 80 elements列中除第80个以外的所有数据 1 16.20 14.67 16.02 11.61length jj # the number of elements 有多少个数据 1 84

8、dim jj # but no dimensions .但没维度 NULLnrow jj # . no rows 没行 NULLncol jj # . and no columns没列 NULL#如果你要把jj转变为一个向量,执行如下操作后,维度为84行1列。jj as.matrix jj dim jj 1 84 1 然后把jj转变为一个时间序列对象。jj ts jj, start 1960, frequency 4 #ts 命令这个数据是从1960年开始,个个季度的收入,frequency 4指四个季度。R语言的优势在于可用一条命令做很多事,即可以把前面的命令放在一起打包执行。其操作如下:j

9、j ts scan , start 1960, frequency 4 在上面命令里,scan可以被read.table替代。用read.table读取数据可生成matrix对象,还可以给每列起名字。 下面学习一下read.table, data frames, 和时间序列对象。输入命令后,窗口会有如下显示:jj ts read.table , start 1960, frequency 4 help read.table help ts help data.frame 需要注意的是,Scan和read.table不一样。Scan 生成的是有维度的向量,read.table生成的则是带有维度的

10、数据架构。 读取jj数据的最后要领。如果这个数据是从1960年第三个季度开始的,所需输入命令则为ts x,start c 1960,3 ,frequency 4 ;如果是一个每月每月的数据,例如数据是从1984年6月开始的,需要输入的命令则为ts x,start c 1984,6 ,frequency 12 。 输入命令后,转变后的时间序列对象为:jj Qtr1 Qtr2 Qtr3 Qtr4 1960 0.71 0.63 0.85 0.44 1961 0.61 0.69 0.92 0.55 . . . . . . . . . . 1979 14.04 12.96 14.85 9.99 1980

11、 16.20 14.67 16.02 11.61 注意到区别了吗,时间信息,也就是4个不同的季度的数据被加载到里面了。 进行时间数据分析后,窗口会有如下显示:time jj Qtr1 Qtr2 Qtr3 Qtr4 1960 1960.00 1960.25 1960.50 1960.75 1961 1961.00 1961.25 1961.50 1961.75 . . . . . . . . . . . . 1979 1979.00 1979.25 1979.50 1979.75 1980 1980.00 1980.25 1980.50 1980.75 接下来输入如下组合命令。 jj ts sc

12、an , start 1960, frequency 4 然后进行对数据绘图:plot jj, ylab Earnings per Share, main J & J 输入以上命令后,可以看到如下结果: 再输入下面的命令,看看区别。plot jj, type o, col blue, lty dashed plot diff log jj , main logged and diffed 下面利用操作两个相关命令,显示区别。x -5:5 # sequence of integers from -5 to 5y 5*cos x # guesspar mfrow c 3,2 # multifigu

13、re setup: 3 rows, 2 cols#- plot:plot x, main plot x plot x, y, main plot x,y #- plot.ts:plot.ts x, main plot.ts x plot.ts x, y, main plot.ts x,y #- ts.plot:ts.plot x, main ts.plot x ts.plot ts x , ts y , col 1:2, main ts.plot x,y # note- x and y are ts objects #- the help files ? and help are the sa

14、me:?plot.tshelp ts.plot ?par # might as well skim the graphical parameters help file while youre here从窗口中的显示可以看出,如果数据是时间序列对象,使用plot 命令就足够了;如果数据是平常序列,使用plot.ts 也可以做时间绘图。 不过,把jj数据放在一张图上,数据会随着时间的变化上上下下跳动,能从整体上反应上升或者下降的趋势。上文中用红色光滑的曲线代表上升的趋势,简单明了。这需要将过滤和光滑的技巧使用在jj数据上。在这里,我们用对称的移动平均值来达到过滤和光滑的目的。下面使用公式:fjj

15、 t ? jj t-2 + ? jj t-1 + ? jj t + ? jj t+1 + ? jj t+2 除此之外,lowess的过滤平滑技巧(蓝色曲线)也要使用在jj数据中。具体操作如下图:k c .5,1,1,1,.5 # k is the vector of weights用于对称移动平均的系数 k k/sum k 1 0.125 0.250 0.250 0.250 0.125fjj filter jj, sides 2, k # ?filter for help but you knew that already使用对称移动平均plot jj lines fjj, col red # adds a line to the existing plot称移动平均的绘图lines lowess jj , col blue, lty dashed #lowess 的绘图 操作后,窗口会显示下面结果:看完jj数据,我们就需要开始具体分析。第一步,我们把所有jj数据都取log值。第二步,我们把log值做差,即使用log值数列中第二值减去第一值,第三值减去第二值,第四值减去第三值等等。如果做差处理前数列里有n个数值,处理后的结果中将有n-1个数值。dljj diff log jj # difference the logged data做log和差的处理plot

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1