R学习资料汇总

知乎上有一篇非常好的关于学习R的文章,作者禁止转载,在这里给出连接,想学习的同学请移步:

http://www.zhihu.com/question/22960102

R语言学习由浅入深路线图

现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言。

对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来。当然,这不是最好的学习方式,最好的方式是——看书。目前,市面上介绍R语言的书籍很多,中文英文都有。那么,众多书籍中,一个生手应该从哪一本着手呢?入门之后如何才能把自己练就成某个方面的高手呢?相信这是很多人心中的疑问。有这种疑问的人有福了,因为笔者将根据自己的经历总结一下R语言书籍的学习路线图以使Ruser少走些弯路。

本文分为6个部分,分别介绍初级入门,高级入门,绘图与可视化,计量经济学,时间序列分析,金融等。

1.初级入门

《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》,本人没有看过,因此不便评论。

最后推荐,《R in a Nutshell》。对,“果壳里面的R”!当然,是开玩笑的,in a Nutshell是俚语,意思大致是“简单的说”。目前,我们正在翻译这本书的中文版,大概明年三月份交稿!这本书很不错,大家可以从现在开始期待,并广而告知一下!

2.高级入门

读了上述书籍之后,你就可以去高级入门阶段了。这时候要读的书有两本很经典的。《Statistics with R》和《The R book》。之所以说这两本书高级,是因为这两本书已经不再限于R基础了,而是结合了数据分析的各种常见方法来写就的,比较系统的介绍了R在线性回归、方差分析、多元统计、R绘图、时间序列分析、数据挖掘等各方面的内容,看完之后你会发现,哇,原来R能做的事情这么多,而且做起来是那么简洁。读到这里已经差不多了,剩下的估计就是你要专门攻读的某个方面内容了。下面大致说一说。

3.绘图与可视化

亚里斯多德说,“较其他感觉而言,人类更喜欢观看”。因此,绘图和可视化得到很多人的关注和重视。那么,如何学习R画图和数据可视化呢?再简单些,如何画直方图?如何往直方图上添加密度曲线呢?我想读完下面这几本书你就大致会明白了。

首先,画图入门可以读《R Graphics》,个人认为这本是比较经典的,全面介绍了R中绘图系统。该书对应的有一个网站,google之就可以了。更深入的可以读《Lattice:Multivariate Data Visualization with R》。上面这些都是比较普通的。当然,有比较文艺和优雅的——ggplot2系统,看《ggplot2:Elegant Graphics for Data Analysis》。还有数据挖掘方面的书:《Data Mining with Rattle and R》,主要是用Rattle软件,个人比较喜欢Rattle!当然,Rattle不是最好的,Rweka也很棒!再有就是交互图形的书了,著名的交互系统是ggobi,这个我已经喜欢两年多了,关于ggobi的书有《Interactive and Dynamic Graphics for Data Analysis With R and GGobi》,不过,也只是适宜入门,更多更全面的还是去ggobi的主页吧,上面有各种资料以及包的更新信息!

特别推荐一下,中文版绘图书籍有谢益辉的《现代统计图形》。

4.计量经济学

关于计量经济学,首先推荐一本很薄的小册子:《Econometrics In R》,做入门用。然后,是《Applied Econometrics with R》,该书对应的R包是AER,可以安装之后配合使用,效果甚佳。计量经济学中很大一部分是关于时间序列分析的,这一块内容在下面的地方说。

5.时间序列分析

时间序列书籍的书籍分两类,一种是比较普适的书籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。该书介绍了各种时间序列分析的经典方法及实现各种经典方法的R代码,该书有中文版。如果不想买的话,建议去作者主页直接下载,英文版其实读起来很简单。时间序列分析中有一大块儿是关于金融时间序列分析的。这方面比较流行的书有两本《Analysis of financial time series》,这本书的最初是用的S-plus代码,不过新版已经以R代码为主了。这本书适合有时间序列分析基础和金融基础的人来看,因为书中关于时间序列分析的理论以及各种金融知识讲解的不是特别清楚,将极值理论计算VaR的部分就比较难看懂。另外一个比较有意思的是Rmetrics推出的《TimeSeriesFAQ》,这本书是金融时间序列入门的东西,讲的很基础,但是很难懂。对应的中文版有《金融时间序列分析常见问题集》,当然,目前还没有发出来。经济领域的时间序列有一种特殊的情况叫协整,很多人很关注这方面的理论,关心这个的可以看《Analysis of Integrated and Cointegrated Time Series with R》。最后,比较高级的一本书是关于小波分析的,看《Wavelet Methods in Statistics with R》。附加一点,关于时间序列聚类的书籍目前比较少见,是一个处女地,有志之士可以开垦之!

6.金融

金融的领域很广泛,如果是大金融的话,保险也要被纳入此间。用R做金融更多地需要掌握的是金融知识,只会数据分析技术意义寥寥。我觉得这些书对于懂金融、不同数据分析技术的人比较有用,只懂数据分析技术而不动金融知识的人看起来肯定如雾里看花,甚至有人会觉得金融分析比较低级。这方面比较经典的书籍有:《Advanced Topics in Analysis of Economic and Financial Data Using R》以及《Modelling Financial Time Series With S-plus》。金融产品定价之类的常常要用到随机微分方程,有一本叫《Simulation Inference Stochastic Differential Equations:with R examples》的书是关于这方面的内容的,有实例,内容还算详实!此外,是风险度量与管理类。比较经典的有《Simulation Techniques in Financial Risk Management》、《Modern Actuarial Risk Theory Using R》和《Quantitative Risk Management:Concepts, Techniques and Tools》。投资组合分析类和期权定价类可以分别看《Portfolio Optimization with R》和《Option Pricing and Estimation of Financial Models with R》。

7.数据挖掘

这方面的书不多,只有《Data Mining with R:learing with case studies》。不过,R中数据挖掘方面的包已经足够多了,参考包中的帮助文档就足够了。

8.附注

出于版权等事宜的考虑,我无法告知你说在“新浪爱问”等地方可以直接免费下载到上面提到的这些书,但是,我想你可以发挥自己的聪明才智去体悟!

格物堂

 

R语言常用函数参考

基本
一、数据管理
vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 seq,from:to,sequence:等差序列 rep:重复 NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性 mode,typeof:对象存储模式与类型 names:对象的名字属性
二、字符串处理
character:字符型向量 nchar:字符数 substr:取子串 format,formatC:把对象用格式转换为字符串 paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换
三、复数
complex,Re,Im,Mod,Arg,Conj:复数函数
四、因子
factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子 table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数
数学
一、计算
+, -, *, /, ^, %%, %/%:四则运算 ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值 range:最大值和最小值 sum,prod:向量元素和,积 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符号函数
二、数学函数
abs,sqrt:绝对值,平方根 log, exp, log10, log2:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数 sinh,cosh,tanh,asinh,acosh,atanh:双曲函数
beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数
fft,mvfft,convolve:富利叶变换及卷积 polyroot:多项式求根 poly:正交多项式 spline,splinefun:样条差值 besselI,besselK,besselJ,besselY,gammaCody:Bessel函数 deriv:简单表达式的符号微分或算法微分

三、数组
array:建立数组 matrix:生成矩阵 data.matrix:把数据框转换为数值型矩阵 lower.tri:矩阵的下三角部分 mat.or.vec:生成矩阵或向量 t:矩阵转置 cbind:把列合并为矩阵 rbind:把行合并为矩阵 diag:矩阵对角元素向量或生成对角矩阵 aperm:数组转置 nrow, ncol:计算数组的行数和列数 dim:对象的维向量 dimnames:对象的维名 row/colnames:行名或列名 %*%:矩阵乘法 crossprod:矩阵交叉乘积(内积) outer:数组外积 kronecker:数组的Kronecker积 apply:对数组的某些维应用函数 tapply:对“不规则”数组应用函数 sweep:计算数组的概括统计量 aggregate:计算数据子集的概括统计量 scale:矩阵标准化 matplot:对矩阵各列绘图 cor:相关阵或协差阵 Contrast:对照矩阵 row:矩阵的行下标集 col:求列下标集
四、线性代数
solve:解线性方程组或求逆 eigen:矩阵的特征值分解 svd:矩阵的奇异值分解 backsolve:解上三角或下三角方程组 chol:Choleski分解 qr:矩阵的QR分解 chol2inv:由Choleski分解求逆
五、逻辑运算
<,>,<=,>=,==,!=:比较运算符 !,&,&&,|,||,xor():逻辑运算符 logical:生成逻辑向量 all,any:逻辑向量都为真或存在真 ifelse():二者择一 match,%in%:查找 unique:找出互不相同的元素 which:找到真值下标集合 duplicated:找到重复元素
六、优化及求根
optimize,uniroot,polyroot:一维优化与求根
程序设计
一、控制结构
if,else,ifelse,switch:分支 for,while,repeat,break,next:循环 apply,lapply,sapply,tapply,sweep:替代循环的函数。
二、函数
function:函数定义 source:调用文件 call:函数调用 .C,.Fortran:调用C或者Fortran子程序的动态链接库。 Recall:递归调用 browser,debug,trace,traceback:程序调试 options:指定系统参数 missing:判断虚参是否有对应实参 nargs:参数个数 stop:终止函数执行 on.exit:指定退出时执行 eval,expression:表达式计算 system.time:表达式计算计时 invisible:使变量不显示 menu:选择菜单(字符列表菜单)
其它与函数有关的还有:delay,delete.response,deparse,do.call,dput,environment ,,formals,format.info,interactive,is.finite,is.function,is.language,is.recursive ,match.arg,match.call,match.fun,model.extract,name,parse,substitute,sys.parent ,warning,machine。

三、输入输出
cat,print:显示对象 sink:输出转向到指定文件 dump,save,dput,write:输出对象 scan,read.table,load,dget:读入
四、工作环境
ls,objects:显示对象列表 rm, remove:删除对象 q,quit:退出系统 .First,.Last:初始运行函数与退出运行函数。 options:系统选项 ?,help,help.start,apropos:帮助功能 data:列出数据集
统计计算
一、统计分布
每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数,r――随机数函数。比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就构成函数名:
norm:正态,t:t分布,f:F分布,chisq:卡方(包括非中心) unif:均匀,exp:指数,weibull:威布尔,gamma:伽玛,beta:贝塔 lnorm:对数正态,logis:逻辑分布,cauchy:柯西, binom:二项分布,geom:几何分布,hyper:超几何,nbinom:负二项,pois:泊松 signrank:符号秩,wilcox:秩和,tukey:学生化极差
二、简单统计量
sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量,sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等。

三、统计检验
R中已实现的有chisq.test,prop.test,t.test。
四、多元分析
cor,cov.wt,var:协方差阵及相关阵计算 biplot,biplot.princomp:多元数据biplot图 cancor:典则相关 princomp:主成分分析 hclust:谱系聚类 kmeans:k-均值聚类 cmdscale:经典多维标度 其它有dist,mahalanobis,cov.rob。
五、时间序列
ts:时间序列对象 diff:计算差分 time:时间序列的采样时间 window:时间窗
六、统计模型
lm,glm,aov:线性模型、广义线性模型、方差分析

玉米营养品质的快速鉴定的R实现(直接调用pls包)

setwd(“E:/R_data/近红外测玉米三种物质含量”)
library(pls)
### 一.读取波普数据
###数据在EXCEL表内转置, 每行代表一个样本
data=read.csv(‘光谱数据和生化检测数据.csv’,
header=TRUE,
row.names=1)

#建模数据有100个
dat=data[1:100,]
head(dat)

#随机挑选75个训练集
set.seed(28)
train=sample(1:100, 75)
#检验集
test=(-train)
####
###方法一. 主成分分析–蛋白质含量预测
set.seed(123)
pcr.fit=pcr(蛋白含量 ~ . , data=dat[,1:391], subset=train,
validation=”CV”)

summary(pcr.fit)
#选取最佳主成分个数
validationplot(pcr.fit, val.type=’MSEP’)
#最佳主成分个数选为14
#检验蛋白质含量预测效果
pcr.pred=predict(pcr.fit, newdata=dat[,1:390][test,], ncomp=14)
#预测效果–均方误差
mean((dat[’蛋白含量’][test]-pcr.pred)^2)
range=range(dat[’蛋白含量’][test],pcr.pred)
plot(dat[’蛋白含量’][test],pcr.pred,
xlim=range, ylim=range,
xlab=’蛋白含量实际值’,ylab=’预测值’,
main=’蛋白质含量预测\n主成分回归’)
abline(a=0,b=1,col=’red’)

#####
###方法二. 偏最小二乘法–蛋白质含量预测
set.seed(123)
pls.fit=plsr(蛋白含量 ~ . , data=dat[,1:391],subset=train,
validation=”CV”)
summary(pls.fit)
validationplot(pls.fit, val.type=’MSEP’)
#最佳主成分为5或9
pls.pred1=predict(pls.fit, newdata=dat[,1:390][test,], ncomp=5)
#预测效果–均方误差
d1=mean((dat[’蛋白含量’][test]-pls.pred1)^2)
##结果和主成分回归差不多, 但是主成分的个数明显减少.
range=range(dat[’蛋白含量’][test],pls.pred)
plot(dat[’蛋白含量’][test],pls.pred,
xlim=range,ylim=range,
xlab=’蛋白含量实际值’,ylab=’预测值’,
main=’蛋白质含量预测\n偏最小二乘法’)
abline(a=0,b=1,col=’red’)

#####
###偏最小二乘法–脂肪含量预测
pls.fit=plsr(脂肪含量 ~ . , data=dat[,c(1:390,393)],
subset=train, validation=”CV”)
summary(pls.fit)
validationplot(pls.fit, val.type=’MSEP’)
#最佳主成分为5或9
pls.pred2=predict(pls.fit, newdata=dat[,1:390][test,], ncomp=13)
#预测效果–均方误差
d2=mean((dat[’脂肪含量’][test]-pls.pred2)^2)
##结果和主成分回归差不多, 但是主成分的个数明显减少.
range=range(dat[’脂肪含量’][test],pls.pred)
plot(dat[’脂肪含量’][test],pls.pred,
xlim=range, ylim=range,
xlab=’脂肪含量实际值’,ylab=’预测值’,
main=’脂肪含量量预测\n偏最小二乘法’)
abline(a=0,b=1,col=’red’)

#####
###偏最小二乘法–纤维素含量预测
pls.fit=plsr(纤维素含量 ~ . , data=dat[,c(1:390,392)],subset=train,
validation=”CV”)
summary(pls.fit)
validationplot(pls.fit, val.type=’MSEP’)
#最佳主成分个数是5
pls.pred3=predict(pls.fit, newdata=dat[,1:390][test,], ncomp=5)
#预测效果–均方误差
d3=mean((dat[’纤维素含量’][test]-pls.pred3)^2)
##结果和主成分回归差不多, 但是主成分的个数明显减少.
range=range(dat[’纤维素含量’][test],pls.pred)
plot(dat[’纤维素含量’][test],pls.pred,
xlim=range,ylim=range,
xlab=’纤维素含量实际值’,ylab=’预测值’,
main=’纤维素含量预测\n偏最小二乘法’)
abline(a=0,b=1,col=’red’)
####多元偏最小二乘法
###同时预测三种物质的含量
#数据归类整理
dat2=dat
dat2$y=as.matrix(dat[,391:393])
dat2=dat2[,-(391:393)]

pls.fit3=plsr(y ~ ., data=dat2, subset=train, validation=”CV”)
summary(pls.fit3)
validationplot(pls.fit3, val.type=’MSEP’)
##the best ncomp=7
pls.pred=predict(pls.fit3, newdata=dat2[test,], ncomp=7)
# 3种物质的预测效果–均方误差
apply(((dat2$y)[test,] – as.data.frame(pls.pred))^2,2,mean)

#单个预测的效果–均方误差
c(d1,d2,d3)

 

资源下载:

R 语言资料大全@17bigdata @数据分析招聘  链接:http://pan.baidu.com/s/1eQi46CM 密码:ztbk

r

内容多来自网络,如有侵权,请联系QQ:23683716,谢谢。:一起大数据 » R学习资料汇总

赞 (18)
分享到:更多 ()