传媒有限公司免费网站,家政服务网站建设,怎么做新的网站,百度域名对应的ip地址本文最新版已更新至http://thinkinside.tk/2013/05/03/r_notes_1_what.html 在学习量化投资的时候#xff0c;我发现了R#xff08;www.r-project.org#xff09;。R到底是什么呢#xff1f;在开始之前#xff0c;先看看R的神奇之处。 1. R初窥 从CRAN#xff08;The Co… 本文最新版已更新至http://thinkinside.tk/2013/05/03/r_notes_1_what.html 在学习量化投资的时候我发现了Rwww.r-project.org。R到底是什么呢在开始之前先看看R的神奇之处。 1. R初窥 从CRANThe Comprehensive R Archive Networkcran.r-project.org—mirrors.html中选择一个镜像然后下载合适的安装包R支持Linux、Mac OS X和Windows。 安装并运行R后可以看到R的控制台我的操作系统是Mac OS 在R的控制台输入如下命令 install.packages(quantmod) # 安装quantmod包require(quantmod) #引用quantmod包getSymbols(GOOG,srcyahoo,from2013-01-01, to2013-04-24) #从雅虎财经获取google的股票数据chartSeries(GOOG,up.colred,dn.colgreen) #显示K线图addMACD() #增加MACD图 就能够看到下图的效果了 最后退出R q()#Terminate an R Session 2. R是什么 是不是很神奇反正当时我完全被Hold住了。 那么R到底是什么或者说R到底是做什么用的从不同的角度出发对R会有不同的描述。 从使用角度R是一个有着统计分析功能及强大作图功能的软件在GNU协议General Public Licence4下免费发行。从编程角度R语言是面向对象的统计编程语言是由ATT贝尔实验室所创的S语言发展出的一种方言。从计算角度R 是一种为统计计算和图形显示而设计的语言及环境。从开发角度R 是一组开源的数据操作计算和图形显示工具的整合包有各种方式可以进行编程调用。从架构角度R 是为统计计算和图形展示而设计的一个系统。它包括一种编程语言高级别图形展示函数和其它语言的接口以及调试工具。如果一定要找到一个与R类似的软件那就是商业软件Matlab。R和Matlab都是基于编程进行数据分析的工具Matlab适用的领域更广而R更擅长统计分析领域。 与Matlab相比R更具备开放性 R是自由软件Matlab是商业软件R可以方便的通过“包”进行扩展R的核心只有25个包但是有几千个外部包可以调用当然你也可以开发自己的R语言比Matlab的要强大R和其他编程语言/数据库之间有很好的接口其他语言也可以很方便的调用R的API和结果对象。 R常用于金融和统计领域。大多数人使用R就是因为它的统计功能R的内部实现了很多经典的or时髦的统计技术。 3. R的核心概念 3.1 对象 R语言是一种面向对象的语言所有的对象都有两个内在属性元素类型和长度。 元素类型是对象内元素的基本类型包括数值(numeric),字符型(character),复数型(complex)、逻辑型logical、函数function等通过mode()函数可以查看一个对象的类型。 长度是对象中元素的数目通过函数length()可以查看对象的长度。 除了元素类型外对象本身也有不同的“类型”表示不同的数据结构struct)。R中的对象类型主要包括 向量(vector): 由一系列有序元素构成。 因子(factor对同长的其他向量元素进行分类分组的向量对象。R 同时提供有序ordered和无序unordered因子。 数组(array)带有多个下标的类型相同的元素的集合 矩阵(matrix)矩阵仅仅是一个双下标的数组。R提供了一下函数专门处理二维数组矩阵。 数据框(data frame)和矩阵类似的一种结构。在数据框中列可以是不同的对象。 时间序列(time series)包含一些额外的属性,如频率和时间. 列表list:是一种泛化general form的向量。它没有要求所有元素是同一类型许多时候就是向量和列表类型。列表为统计计算的结果返回提供了一种便利的方法。 3.2 常量 R中还定义了一些常量比如 NA表示不可用 Inf: 无穷 -Inf: 负无穷 TRUE真 FALSE假 4. R的基本使用 4.1 命令 R是一种语法非常简单的表达式语言(expression language)。使用者通过命令command与R进行交互。 基本命令要么是表达式(expressions)要么就是赋值(assignments)。如果一条命令是表达式,那么它将会被解析(evaluate),并将结果显示在屏幕上,同时清空该命令所占内存。赋值同样会解析表达式并且把值传给变量但结果不会自动显示在屏幕上。 基于命令可以用交互的方式或者批处理/脚本文件的方式使用R。 4.2 交互式使用 R 交互式shell是一种很方便的环境可以进行各种尝试随时调整过程。与Python、Ruby等语言一样R也提供了shell环境。本文开始的例子就是以交互的方式使用R。当打开R控制台时R会显示命令提示符此时可以输入命令。 下面是交互式使用R的几个例子 例一 help.start() #启动在线帮助会打开浏览器。x - rnorm(50); y - rnorm(x) #产生两个随机向量x和yplot(x,y) #使用x,y画二维散点图, 会打开一个图形窗口ls() #查看当前工作空间里面的 R 对象rm(x,y) #清除x,y对象
x - 1:20 # 相当于x(1,2,…,20) 例二 x - 1:20#等价于 x (1, 2, ..., 20)。 w - 1 sqrt(x)/2#标准差的权重向量。 dummy - data.frame(xx, y x rnorm(x)*w)#创建一个由x 和 y构成的双列数据框dummy #查看dummy对象中的数据。 fm - lm(y ~ x, datadummy)#拟合 y 对 x 的简单线性回归summary(fm)#查看分析结果。 fm1 - lm(y ~ x, datadummy, weight1/w^2)#加权回归summary(fm1)#查看分析结果。
attach(dummy)#让数据框中的列项可以像一般的变量那样使用。 lrf - lowess(x, y)#做一个非参局部回归。 plot(x, y)#标准散点图。 lines(x, lrf$y)#增加局部回归曲线。 abline(0, 1, lty3)#真正的回归曲线(截距 0斜率 1)。 abline(coef(fm))#无权重回归曲线。 abline(coef(fm1), col red)#加权回归曲线。 detach()#将数据框从搜索路径中去除。 plot(fitted(fm), resid(fm),xlabFitted values,ylabResiduals,mainResiduals vs Fitted)一个检验异方差性heteroscedasticity的标准回归诊断图。 qqnorm(resid(fm), mainResiduals Rankit Plot)#用正态分值图检验数据的偏度skewness峰度kurtosis和异常值outlier。rm(fm, fm1, lrf, x, dummy)#再次清空。 例三 Michaelson 和 Morley 测量光速的经典实验 filepath - system.file(data, morley.tab , packagedatasets)#从对象 morley 中得到实验数据的文件路径filepath#查看文件路径file.show(filepath)#查看文件内容mm - read.table(filepath)#以数据框的形式读取数据mm$Expt - factor(mm$Expt)mm$Run - factor(mm$Run)#将 Expt 和 Run 改为因子。 attach(mm)#让数据在位置 3 (默认) 可见即可以直接访问。 plot(Expt, Speed, mainSpeed of Light Data, xlabExperiment No.)#用简单的盒状图比较五次实验。 fm - aov(Speed ~ Run Expt, datamm)#分析随机区组runs 和 experiments 作为因子。 summary(fm)fm0 - update(fm, . ~ . - Run)anova(fm0, fm)#拟合忽略 runs 的子模型并且对模型更改前后进行方差分析。 detach()rm(fm, fm0)#在进行下面工作前清空数据。#下面是等高线和影像显示的示例x - seq(-pi, pi, len50)#x 是一个在区间 [-pi\, pi] 内等间距的50个元素的向量y - xf - outer(x, y, function(x, y) cos(y)/(1 x^2))#f 是一个方阵行列分别被 x 和 y 索引对应的值是函数 cos(y)/(1 x^2) 的结果。 oldpar - par(no.readonly TRUE)par(ptys)#保存图形参数设定图形区域为“正方形”。 contour(x, y, f)contour(x, y, f, nlevels15, addTRUE)#绘制 f 的等高线增加一些曲线显示细节。 fa - (f-t(f))/2#fa 是 f 的“非对称部分”(t() 是转置函数)。 contour(x, y, fa, nlevels15)#画等高线par(oldpar)# 恢复原始的图形参数image(x, y, f)image(x, y, fa)#绘制一些高密度的影像显示objects(); rm(x, y, f, fa)#在继续下一步前清空数据。
th - seq(-pi, pi, len100)z - exp(1i*th)#1i 表示复数 i
par(ptys)plot(z, typel)#图形参数是复数时表示虚部对实部画图。这可能是一个圆。 w - rnorm(100) rnorm(100)*1i#假定我们想在这个圆里面随机抽样。一种方法将让复数的虚部和实部值是标准正态随机数 ... w - ifelse(Mod(w) 1, 1/w, w)#将圆外的点映射成它们的倒数。 plot(w, xlimc(-1,1), ylimc(-1,1), pch,xlabx, ylaby)lines(z)#所有的点都在圆中但分布不是均匀的。 #下面采用均匀分布。现在圆盘中的点看上去均匀多了。 w - sqrt(runif(100))*exp(2*pi*runif(100)*1i)plot(w, xlimc(-1,1), ylimc(-1,1), pch, xlabx, ylaby)lines(z)rm(th, w, z)#再次清空。 q()#离开 R 程序 4.3 工作空间(workspace) R shell 可以任意地保存一个完整的环境,称为工作空间workspace)。前面的例子中运行q()命令退出R时会被询问是否要保存工作空间 工作空间workspace)保存了一些环境信息。每次与R的会话(session)可以从一个全新的环境开始也可以在原来的基础上继续这些运行信息就保存在工作空间中。 如果在UNIX系统以命令行的方式启动R则当前目录就是本次会话的工作空间 $ mkdir r_test $ cd r_test/ $ R 看看R能为工作空间保存些什么内容 x - rnorm(50); y - rnorm(x) #产生两个随机向量x和y q() Save workspace image? [y/n/c]: y $ ls -Al 会发现R保存了两个隐藏文件.RData和.Rhistory。其中.RData以二进制的方式保存了会话中的变量值.Rhistory以文本文件的方式保存了会话中的所有命令。 如果在一个已有的工作空间中启动R会提示 [原来保存的工作空间已还原] 此时可以用函数ls()和history()看到之前保存的数据和命令。 使用rm()/remove()可以删除工作空间中的变量。 在R控制台也可以使用函数getwd()和setwd()来获取/设置工作空间目录使用list.files()查看当前目录下的文件。 如果以GUI方式运行R控制台可以通过菜单来加载或保存工作空间。 4.4 脚本/批处理 前面提到R可以在工作空间中保存历史命令。其实这就是一个工作空间中的默认脚本当加载工作空间时自动执行。 我们完全可以写自己的脚本指定R批量执行一些命令。通常自己的脚本会以“.R”作为扩展名。一个最简单的例子test.R x - rnorm(50); y - rnorm(x) #产生两个随机向量x和y plot(x,y) #使用x,y画二维散点图, 会打开一个图形窗口 并保存到工作空间然后在R控制台使用命令 source(test.R) 就可以执行该脚本。 source(test.R, echoTRUE)可以让脚本执行时输出更详细的信息。 编写脚本自动执行一些任务时sink()函数会比较有用 sink(record.lis) 会把所有后续的输出结果从控制台重定向到外部文件 record.lis 中此时控制台中看不到命令输出的结果。使用命令 sink() 可以让输出流重新定向到控制台。 5. 帮助系统 GNU软件通常都会有非常好的帮助系统无论对于初学者还是熟练者都能带来很大的帮助。R当然也不例外。R中提供的帮助主要有以下几种 5.1 文档和搜索 help.start() 命令会打开浏览器显示帮助文档。包括一些入门的文档以及搜索功能链接Search Engine Keywords。 5.2 演示 demo()会按照包分组列出所有可用的演示 按照名称可以开始演示如 demo(is.things) 5.3 函数帮助 如果已经知道一个函数的名称(比如solve)需要了解其所属的包、用途、用法、参数说明、返回值、参考文献、相关函数以及范例等可以使用命令 help(solve)或 ?solve 该命令会弹出一个窗口 5.4 函数示例 对于函数还可以使用example()执行示例比如 example(solve) 5.5 关键字和运算符 与函数的帮助类似但是需要加上引号如 ? [[ # 等价于 help([[) ? #等价于 help() ?if #等价于 help(if) 5.6 搜索 如果不知道函数名称还可以进行搜索比如 ??analysis #等价于 search(analysis) 5.7 官方搜索 前面的帮助都受限于本地环境已经安装的包。如果要搜索R中所有的资源包函数、数学方法等需要在R的官方网站搜索 www.r-project.org—search.html 6. 学习资料 www.R-project.org R官方网站 cran.r-project.org—manuals.html 官方网站上的一些手册和文档必看 staff.washington.edu—Rcourse 华盛顿大学的一个R教程 转载于:https://www.cnblogs.com/holbrook/archive/2013/05/03/3056211.html