R实战学习笔记(共69页).docx

上传人:飞****2 文档编号:8534464 上传时间:2022-03-19 格式:DOCX 页数:69 大小:2.96MB
返回 下载 相关 举报
R实战学习笔记(共69页).docx_第1页
第1页 / 共69页
R实战学习笔记(共69页).docx_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《R实战学习笔记(共69页).docx》由会员分享,可在线阅读,更多相关《R实战学习笔记(共69页).docx(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上内置数据结构:元组:元组由不同元素构成,每个元素可以存储不同类型的数据,如字符串、数值、元组。元组是写保护的,元组创建后不能再做任何修改。reload()函数将以前导入过的模块再加载一次。重新加载(reload)包括最初导入模块时应用的分析过程和初始化过程。这样就允许在不退出解释器的情况下重新加载已更改的Python模块。Pow(n,2)对某数求平方 pow(4.5-4,2)记 (4.5-4)2Sqrt()求平方根 欧几里得距离sqrt(pow(4.5-4)+pow(2-1,2)Deepcopy()深拷贝,能拷贝对象内部所有数据和引用。若A深拷贝数据B,则A变,B不变

2、。Copy()浅拷贝,只是复制数据。若A浅拷贝数据B,则A变,B也变。+表示连接%系统R语言一、 入门R区分大小写字母1 获取帮助help.start()help(foo) 或者 ?fooexample(foo)data() 列出加载包中所有可用示例数据集2 工作空间工作空间是R用来读取文件和保存结果的默认目录。getwd()setwd(“D:/rworkspace”) D:/rworkspace必须存或者用dir.create()创建新目录load()从上一次会话结束地方开始3 输入source(”myscript.R”) 将执行包含在文件myscript.R中的R语句集合4 输出sink(

3、“myoutput”,append=TRUE,split=TRUE) 默认情况下,有一样名字文件,会被覆盖原文件。append将文本追加到文件后,而不是覆盖,split将文件发送至屏幕并且输出文件。不加参数的sink()仅向屏幕输出结果。图形输出Pdf(“mygraphs.pdf”)输出结果作为输入5 包包是函数、数据、预编译代码以一种定义完善的格式组成的集合。存包的目录称为库函数.libpath()显示库所在位置library()显示库位置以及有哪些包第一次安装一个包用:install.packages(“gclus”)包(引号是必须的)gclus提供了创建增强型散点图的函数。包只需安装一次

4、,但作者可能更新它update.packages(“包名”)查看已经安装的包installed.packages()列出安装包的版本和依赖关系包的载入:包安装时从cran镜像站点下载它加入库的过程需用到时还得library(gclus)包带有示例,help(package=”包名”)可以输出包的简短描述以及包中函数和数据集名称的列表。选中全部代码再按run 否则编译器只会运行最后一行代码二、 数据集对象是可以赋值给变量的任何事物。x-mtcarsorder(mpg),不加,系统分不清向量矩阵数组数据框data.frame() patientid$age 用来选取一个给定数据框中的某个特定变量a

5、ttach(mtcars)/可以将数据框添加到R的搜索路径,plot(disp,mpg)/此时若有其他名称相同对象,比如也叫disp则原始对象取得优先权。若长度不匹配则报错 ,要注意detach(mtcars) 否则得plot(mtcars$disp,mtcars$mpg)with (只写半边括号,r中命令就能按enter后自动换行命令 dose drugA drugB plot(dose,drugA,type=b)复制当前图形参数opar par(opar) plot(dose,drugA,type=b)#图片又变回原来参数了 plot(dose,drugA,type=b,lty=2,pch

6、=17)#仅应用于该图像绘制点的符号R中查看已经安装的包路径和包名library()pchAxis坐标轴font字体类型:1 常规 2 粗体 3 斜体 4 粗斜体图形前景色与背景色图形尺寸:代码应该提前,不要等到图已经做出来了再写该代码Par(pin=c(4,3),m,mar=c(1,.5,1,.2)pin长宽Mar 指边界大小par(mar=(5,4,4,8)+0.1)下开始,逆时针转注意:某些高级绘图函数已经包含了默认的标题和标签。你可以通过在plot()语句或者单独的par()中添加ann=FALSE来移除它们 announcement通告坐标轴yaxt=n xaxt=”n”将分别禁用x

7、轴、y轴 (会留下框架,只是禁用了刻度)参考线Abline图例Legend文本标注Text mtexttext(wt,mpg,row.names(mtcars),cex=.6,pos=4,col=red)直接点的位置,再加上标注向量text(3,3,”exzample”)单独点加标注图形组合 Par(mfrow=c(2,2) 2行2列 按行填充4个图layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths=c(3,1),heights=c(1,2)c()为矩阵元素 2,2 为2行2列 layout(matrix(c(1,2,3,0,2,3,0,0,3),n

8、r=3) matrix有9个元素,具有这样的形式: ,1 ,2 ,31, 1 0 02, 2 2 03, 3 3 3把这个矩阵传入layout函数,我们就能得到这样的output devicepar(fig=c(0,0.8,0,0.8) plot(wt,mpg,xlab=mile,ylab=weight)par(fig=c(0,0.8,0.55,1),new=TRUE)boxplot(wt,horizontal=TRUE,axes=FALSE)opar-par(no.readonly=TRUE)par(fig=c(0,0.8,0,0.8)plot(wt,mpg,xlab=mile,ylab=w

9、eight)par(fig=c(0,0.8,0.55,1),new=TRUE)boxplot(wt,horizontal=TRUE,axes=FALSE)六、基本图形:条形图 barplot() 一个数值堆砌条形图分组条形图均值条形图可以使用数据整合函数并将结果传递给barplot()条形图的微调棘状图棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段高度表示比例。library(vcd)attach(Arthritis)counts-table(Treatment,Improved)spine(counts,main=Spinogram Example)#spine属于vcd包

10、中detach(Arthritis)饼图opar - par(no.readonly=TRUE)par(mfrow=c(2,2)x - c(10, 12.9, 4, 16, 8)lbls - c(US, France, Germany, Australia, UK)pie(x, lbls, main=简单饼图)lbls - paste(lbls, , round(x/sum(x)*100,2), %, sep=)#paste()实现字符串连接pie(x, lbls, main=使用百分比标签的饼图, col=rainbow(length(lbls)install.packages(plotri

11、x)library(plotrix)pie3D(x, labels=lbls, explode=0.1, main=3D饼图)mytable - table(state.region)lbls - paste(names(mytable), n, mytable, sep=)pie(mytable, labels=lbls, main=列表数据饼图n (一个简单的)扇形图比较各个部分大小par(mfrow=c(1,1)lbls-c(US,France,Germany,Australia,UK)#lbls label listfan.plot(x,labels=lbls,main=扇形图)直方图

12、histogrambreaks=12, 表示分组数hist(x)hist(mtcars$mpg,breaks=12,col=red,xlab=miles per gallon,main=colored histogram with 12 bins)分成12组# 根据概率密度画图# 增加轴须图hist(mpg, freq=FALSE,# fre=FALSE表示根据概率密度而不是频数绘制图形 breaks=12,# #breaks用于控制组的数量 col=red, main=直方图、轴须图、概率密度曲线, xlab=Miles Per Gallon, ylab=概率密度)rug(jitter(mp

13、g)增加轴须图# rug(jitter(mpg, amount=0.01)如果数据中有许多结(数据中相同的值),可以使用该代码将轴须图的数据打散lines(density(mpg), col=blue, lwd=2)#概率密度曲线 核密度曲线轴须图:是实际数据值的一种一维呈现方式x - mpgh - hist(x, breaks=12, col=red, main=添加正态密度曲线和外框的直方图, xlab=Miles Per Gallon, ylab=频数)xfit - seq(min(x), max(x), length=40)#生成一个序列,最小最大值为长度为40个yfit - dnor

14、m(xfit, mean=mean(x), sd=sd(x)#生成一个yfit - yfit*diff(h$mids1:2)*length(x) 不理解lines(xfit, yfit, col=blue, lwd=2)box()# 外框detach(mtcars)par(opar)核密度图核密度估计是用于估计随机变量概率密度函数的一种非参数方法。Plot(density(x)可比较核密度图箱线图attach(mtcars)boxplot(mpg,main=Box plot,ylab=miles per gallon)并列箱线图跨组比较boxplot(formula,data=data.fra

15、me)formula为一个公式,YA 为类别型变量A每个值并列生成数值型变量y 的箱线图YA*B 为类别型变量A和B 所有水平的两两组合生成数值型变量y的箱线图varWidth=TRUE 箱线图宽度与样本大小的平方根成正比。boxplot(mpgcyl,data=mtcars,main=Box plot,xlab=number of cylinder,ylab=miles per gallon)boxplot(mpgcyl,data=mtcars,notch=TRUE,varwidth=TRUE,main=Box plot,xlab=number of cylinder,ylab=miles

16、per gallon)notch=TRUE得到含凹槽的箱线图,若两个箱的凹槽互不重叠则表明他们的中位数显著差异。两个交叉因子的箱线图cyl.f气缸4 6 8am.f, 自动 与 标准型号cyl.f am.f boxplot(mpgcyl.f*am.f,data=mtcars,varwidth=TRUE,col=c(gold,darkgreen),main=Box plot,xlab=number of cylinder,ylab=miles per gallon)am.f* cyl.f 这个顺序影响排序小提起图 是箱线图和核密度图的合体散点图Plot()点图dotchart()attach(m

17、tcars)x-mtcarsorder(mpg),x$cyl-factor(x$cyl)hex$colorx$cyl=4-redx$colorx$cyl=6-bluex$colorx$cyl=8-darkgreendotchart(x$mpg,labels=row.names(x),cex=.7,groups=x$cyl,gcolor=black,color=x$color,pch=19,main=gas mileage for car modelsngrouped by cylinder,xlab=miles per gallon)groups=x$cyl,分组x$color字符型向量col

18、or被添加到数据框中创建分组因子factor(x = character(), levels, labels = levels, exclude = NA, ordered = is.ordered(x), nmax = NA)七、描述性统计分析总体描述library(psych)attach(mtcars)vars-c(mpg,hp,wt)describe(mtcarsvars)detach(mtcars)结果分组描述性统计量library(reshape)dstats - function(x)(c(n=length(x), mean=mean(x), sd=sd(x)dfm mytabl

19、e mytableImproved None Some Marked 42 14 28二维install.packages(gtools)install.packages(gdata)install.packages(gmodels)library(gmodels)with(Arthritis, CrossTable(Treatment, Improved)Help(crosstable)可以计算小数位数、卡方等独立性检验、计算期望 皮尔逊残差等。三维其他prop.table()计算比例Margin.table()计算频数独立性、相关性考察数据分析一文件 八、回归1 0LS(ordinary

20、least square)普通最小二乘法的回归1.1 简单线性回归残差标准误可以理解为:模型用身高预测体重的平均误差。R平方:=0.991表明模型可以解释99.1%的方差,它也是实际与预测值之间的相关系数。F统计量: 等同于身高回归系数的t检验分析所以 可以用一个弯曲曲线来提高预测的精度。1.2 多项式回归P0.001 水平下,回归系数均非常显著。模型方差解释率达到99.9%。二次项显著性(t=13.891,p states cor(states) Murder Population Illiteracy Income FrostMurder 1. 0. 0. -0. -0.Populatio

21、n 0. 1. 0. 0. -0.Illiteracy 0. 0. 1. -0. -0.Income -0. 0. -0. 1. 0.Frost -0. -0. -0. 0. 1.(2) 做散点图矩阵 library(car)scatterplotMatrix(states,spread=FALSE,lty.smooth=2,main=scatter plot matrix)从图中可以看出谋杀率是双峰曲线,谋杀率随着人口文盲率增加而增加,随着收入水平和结霜天数增加而下降。越冷地方文盲率越低,收入水平越高。(3) 多元线性回归参数查看DF degree of freedom 自由度1.4 有交互

22、项的多元线性回归许多有趣的研究都会涉及交互的预测变量。见书 R实战170页用图形展示上图蓝色文字含义2 回归诊断对模型的信赖程度依赖于它在多大程度上满足OLS模型的统计假设。OLS回归的统计假设(1) 正态性:QQ图(2) 独立性:因变量是否独立。例如Weightheight。一位女性体重会影响另一位女性体重?如果来自同一个家庭 有可能(3) 线性(4) 同方差性模型在多大程度上满足统计假设的任何信息。2.1 标准方法#8.3.1回归诊断标准方法fit-lm(weightheight,data=women)par(mfrow=c(2,2)plot(fit)上图没有显示因变量是否独立的图2.2

23、改进的方法进行回归诊断Car包提供了大量函数,增强了对拟合回归模型评价的能力。(1) 正态性方法一:检验正态性par(mfrow=c(1,1)library(car)states-as.data.frame(state.x77,c(Murder,Population,Illiteracy,Income, Frost)fit-lm(MurderPopulation+Illiteracy+Income+Frost,data=states)qqPlot(fit,labels=row.names(states),id.method=identify,simulate=TRUE,main=Q-Q Plo

24、t)#id.method=identify能够交互式绘图,鼠标单击图形内的点,将会标注函数中label选项的设定值。#simulate=TRUE 95%的置信区间将会用参数自助法关注下离群点方法二:残差图residplot - function(fit, nbreaks=10) z - rstudent(fit) hist(z, breaks=nbreaks, freq=FALSE, xlab=Studentized Residual, main=Distribution of Errors) rug(jitter(z), col=brown) curve(dnorm(x, mean=mean

25、(z), sd=sd(z), add=TRUE, col=blue, lwd=2) lines(density(z)$x, density(z)$y,不好理解 col=red, lwd=2, lty=2) legend(topright, legend=c(Normal Curve, Kernel Density Curve), lty=1:2, col=c(blue, red), cex=.7)residplot(fit)方法三:标准方法中的QQ图,看是否在一条45度直线上。(2) 误差的独立性因变量值(或残差)是否相互独立,最好依据收集数据方式的先验知识。比如:时间序列呈现自相关性,相隔时

26、间越近的观测相关性大于相隔越远的观测。Car包中Durbin-Watson函数作 Durbin-Watson检验(3) 线性通过成分残差图即偏残差图,可以看看因变量与自变量之间是否线性相关。library(car)crPlots(fit)绿色线为 平滑拟合曲线。(4) 同方差性Car包中提供了ncvTest()和spreadLevelPlot()函数判断方差是否恒定。ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性,即误差方差不恒定。spreadLevelPlot()创建一个添加了最佳拟合曲线的散点图。展

27、示标准化残差绝对值与拟合值的关系。spreadLevelPlot(fit)2.3 线性模型假设的综合验证library(gvlma)gvmodel-gvlma(fit)summary(gvmodel)2.4 多重共线性回归系数测量的是 当其他预测变量不变时,某个预测变量 对响应变量的影响。比如:假定年龄不变,测量握力与年龄的关系?。这种问题称为多重共线性。在回归模型牵涉到多个自变量的时候,自变量之间可能会相互关联,即他们之间存在有多重共线性。它会导致模型参数的置信区间过大,使得单个系数解释起来很困难。方差膨胀因子:VIF(variance inflation factor)VIF的平方根表示变

28、量回归参数的置信区间能膨胀为与模型无关的预测变量的程度。3 异常观测值全面回归分析需要包含对异常值的分析。3.1 离群点模型预测效果不佳的观测点,残差比较大的点。判断:1:QQ图中 落在置信区间以外的点被认为是离群点2:标准化残差值大于2或者小于-2 可能是离群点Car包中outlierTest()函数可以求得最大标准化残差绝对值Bonferroni调整后的P值。P=0.048该函数只是根据单个最大残差值得显著性判断是否有离群点。若不显著则没有离群点,若显著则需要删除离群点,再检验是否有其他离群点存在3.2 高杠杆值点?与响应变量值没有关系,由许多异常的预测变量值组合起来的。通过帽子统计量判断

29、。hat.plot - function(fit) p - length(coefficients(fit)包括截距项若四个预测变量则为5 n - length(fitted(fit)观测数量,比如有50个样本值 plot(hatvalues(fit), main=Index Plot of Hat Values) abline(h=c(2,3)*p/n, col=red, lty=2) #水平线为帽子均值2倍和3倍的位置。 identify(1:n, hatvalues(fit), names(hatvalues(fit)hat.plot(fit)p/n即为帽子均值。lm(MurderPop

30、ulation+Illiteracy+Income+Frost,data=states)谋杀率大小由4个预测变量与一个截距(常数项)分别贡献。3.3 强影响点对模型参数估计值影响有些比例失衡的点。比如若移除模型的一个观测点时,模型会发生巨大的变化,则需要检测数据中是否存在强影响点。方法:cook 距离(D统计量)、Cook D值大于4/(n-k-1)则表明她是强影响点。N为样本量大小,k为预测变量的数目。cutoff2)(2) 岭回归多元回归的变体4.4 使用其他回归模型(1) 如果存在离群点或者强影响点可以使用稳健回归模型替代OLS回归模型。(2) 如果违背正态性假设可以用非参数回归模型。(

31、3) 如果存在显著非线性,尝试用非线性回归模型。(4) 如果违背了误差独立性准则,尝试用专门研究误差结构的模型,如:时间序列模型,或者多层次回归模型,或者广义线性模型。5 选择“最佳”回归模型预测精度与模型简洁度的调和问题。最佳是一种权衡,没有绝对最佳模型。5.1 模型比较比较两个嵌套模型的拟合优度。嵌套式指该模型的一些项,完全包含在另一个模型中。在States多元回归模型中可以发现Income和frost回归系数不显著,检验不含这两个变量的模型预测效果是否更好。方法一:anova()函数方法二:AIC赤池信息准则ANOVA需要嵌套模型,而AIC方法不需要5.2 变量选择从大量变量中选择最终的

32、预测变量5.3 逐步回归模型会一次添加或者删除一个变量,直到达到某个判停准则为止。向前逐步回归:每次添加一个变量向后逐步回归:每次删除一个变量向前向后逐步回归(简称逐步回归):变量每次进入一个,对贡献不大变量再删除。逐步回归也许找到个好模型,但是不能保证模型就是最佳模型,因为不是每一个模型都被评价了,故有了全子集回归法。Intercept 截距项疑问:AIC怎么计算的?5.4 全子集回归所有可能的模型都会被检验。全子集回归可用leaps包中regsubsets()函数实现,通过R平方,调整R平方或者mallows cp统计量等准则来选择最佳模型。R平方含义是预测变量解释响应变量的程度。一般R平

33、方会随着预测变量的增加而增加,但是当与样本量相比,预测变量数目很大时,容易导致过拟合。R平方很可能会丢失数据的偶然变异信息,而调整的R平方提供了更为真实的R平方估计。install.packages(leaps)library(leaps)leaps-regsubsets(MurderPopulation+Illiteracy+Income+Frost,data=states,nbest=4)plot(leaps,scale=adjr2)mallows cp统计量也是作为逐步回归的判停准则。好的回归模型它的cp统计量非常接近模型的参数数目(包含截距项)library(car)subsets(l

34、eaps,statistic=cp,main=CpPlotforAllSubsetsRegression)abline(1,1,lty=2,col=red)注意:该图也是交互作图,有时运行没有停止运行,点击下图看是否为大部分情况全子集回归优于逐步回归,但是数据量大时全子集回归会很慢。拟合效果佳但是没有意义的模型没有意义。主题背景知识的理解才能指导获得理想的模型。6 深层分析模型泛化能力和相对重要性6.1 交叉验证一定比例数据作训练集,一定比例数据作检验模型样本。K重交叉验证:样本被分为K个子样本,轮流将K-1个子样本组合为训练集,另外一个子样本作为保留集合。得到K个预测方程,记录K个保留样本的

35、预测表现结果,然后求其平均值。#代码清单8-15R平方的k重交叉验证shrinkage-function(fit,k=10)require(bootstrap)theta.fit-function(x,y)lsfit(x,y)theta.predict-function(fit,x)cbind(1,x)%*%fit$coefx-fit$model,2:ncol(fit$model)y-fit$model,1results-crossval(x,y,theta.fit,theta.predict,ngroup=k)r2-cor(y,fit$fitted.values)2r2cv-cor(y,results$cv.fit)2cat(OriginalR-square=,r2,n)cat(k,FoldCross-ValidatedR-square=,r2cv,n)cat(Change=,r2-r2cv,n)#K重交叉验证函数fit1-lm(MurderPopulation+Income+Illiteracy+Frost,data=states)shrinkage(fit1)fit2-lm(MurderPopulation+Illiteracy,data=states)shrinkage(fit2)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁