R语言学习过程各种笔记_第1页
R语言学习过程各种笔记_第2页
R语言学习过程各种笔记_第3页
R语言学习过程各种笔记_第4页
R语言学习过程各种笔记_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、可编辑数据挖掘与数据分析的主要区别是什么?数据分析就是为了处理原有计算方法、统计方法,着重点就是数据、算法、统计、数值。数据挖掘是从庞大的数据库中分析出有目标数据群,筛选出利于决策的有效信息简单来说就是数据分析是针对以往取得的成绩,比如说哪方面做得好,哪方面需要改进;数据挖掘就是通过以前的成绩预测未来的发展的趋势,并且为决策者提供建议。读excel时可以先复制再运行data - read.table(clipboard, header = T, sep = t)在R语言中,使用“=”和“-”到底有什么不同? 就是等号和箭头号有什么区别,是完全一样还是局部不同?R里通常用符号”-”代替其它语言里

2、的”=”来作赋值符号。因为前者敲起来比等号要麻烦,且大部分情况下两者是等价的,所以通常就愉懒依旧用”=”来赋值。但要切记两者在某些时候是有区别的。字面上的解释,可以认为”-”是赋值,”=”是传值。在函数调用中,func(x=1)与func(x-1)是有区别的,前者调用完后变量x不会被保留,而后者会在工作区里保留变量x=1。再如length(x=seq(1,10)计算完成后x不会被保留,而length(x z=1:12; dim(z)=c(3,4); z; ,1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 注意:生成矩阵是按列排列的。1_2用array (

3、 )函数构造多维数组 用法为:array(data=NA,dim=length(data),dimnames=NULL) 参数描述:data:是一个向量数据。 dim:是数组各维的长度,缺省时为原向量的长度。 dimname:是数组维的名字,缺省时为空。 例子: x=array(1:20,dim=c(4,5) x ,1 ,2 ,3 ,4 ,51, 1 5 9 13 172, 2 6 10 14 183, 3 7 11 15 194, 4 8 12 16 201_3用matrix()函数构造矩阵 函数matrix)是构造矩阵(二维数组)的函数,其构造形式为 matrix(data=NA,nrow

4、=1,ncol=1,byrow=FALSE,dimnames=NULL) 其中data是一个向量数据,nro、是矩阵的行数,ncol是矩阵的列数.当byrow=TRUE时,生成矩阵的数据按行放置,缺省时相当于byrow=FALSE,数据按列放置.dimname。是数组维的名字,缺省时为空. 如构造一个3x5阶的矩阵 A=matrix(1:15,nrow=3,byrow=TRUE) A ,1 ,2 ,3 ,4 ,51, 1 2 3 4 52, 6 7 8 9 103, 11 12 13 14 152_矩阵的四则运算 可以对数组之间进行四则运算(+、一、*、/),这时进行的是数组对应元素的四则运算

5、。一般情况下参加运算的矩阵或者数组的维数是相同的,但也可以计算不同维的,这是要将对应的元素补足。3_1 转置运算 对于矩阵A,函数t(A)表示矩阵A的转置,如: A=matrix(1:6,nrow=2); A; ,1 ,2 ,31, 1 3 52, 2 4 6 t(A); ,1 ,21, 1 22, 3 43, 5 63_2 求方阵的行列式 函数det()是求矩阵行列式的值,如 det(matrix(1:4,ncol=2);1 -23_3 向量的内积 对于n维向量x,可以看成nxl阶矩阵或lxn阶矩阵。若x与y是相同维数的向量,则x%*%Y表示x与y作内积.例如,x=1:5; Y=2*1:5x

6、%*%y ,11,110 函数crossprod()是内积运算函数(表示交叉乘积),crossprod(x,y)计算向量x与y的内积,即t(x) %*% y。crossprod(x)表示x与x的内积. 类似地,tcrossprod(x,y)表示x%*%t(Y),即x与y的外积,也称为叉积。tcrossprod(x)表示x与x作外积.如: x=1:5; y=2*1:5; crossprod(x); ,11, 55 crossprod(x,y); ,11, 110 tcrossprod(x); ,1 ,2 ,3 ,4 ,51, 1 2 3 4 52, 2 4 6 8 103, 3 6 9 12 1

7、54, 4 8 12 16 205, 5 10 15 20 25 tcrossprod(x,y); ,1 ,2 ,3 ,4 ,51, 2 4 6 8 102, 4 8 12 16 203, 6 12 18 24 304, 8 16 24 32 405, 10 20 30 40 503_4 向量的外积(叉积)设x和y是n维向量,则x%o%y表示x与y作外积.例如 x%o%y; ,1 ,2 ,3 ,4 ,51, 2 4 6 8 102, 4 8 12 16 203, 6 12 18 24 304, 8 16 24 32 405, 10 20 30 40 50 outer()是更为强大的外积运算函数

8、,outer(x,y)计算向量二与y的外积,它等价于x %o%y函数。outer()的一般调用格式为 outer(x,y,fun=”*”) 其中x, y矩阵(或向量),fun是作外积运算函数,缺省值为乘法运算。函数outer()在绘制三维曲面时非常有用,它可生成一个x和y的网格。3_5 矩阵的乘法 设A和B为两个矩阵,通常意义下的矩阵乘法是通过A%*%B来完成,crossprod(A,B)表示的是t(A)%*%B,而tcrossprod(A,B)表示的是A%*%t(B)。最后我们通过运算知道x%*%A%*%x为二次型。例子: A=array(1:9,dim=(c(3,3) B=array(9:

9、1,dim=(c(3,3) A%*%B; ,1 ,2 ,31, 90 54 182, 114 69 243, 138 84 30 crossprod(A,B)=t(A)%*%B; ,1 ,2 ,31, TRUE TRUE TRUE2, TRUE TRUE TRUE3, TRUE TRUE TRUE tcrossprod(A,B)=A%*%t(B); ,1 ,2 ,31, TRUE TRUE TRUE2, TRUE TRUE TRUE3, TRUE TRUE TRUE3_6 生成对角阵和矩阵取对角运算 函数diag()依赖于它的变量,当v是一个向量时,diag(v)表示以v的元素为对角线元素的对

10、角阵.当M是一个矩阵时,则diag(M)表示的是取M对角线上的元素的向量.如 v=c(1,4,5); diag(v); ,1 ,2 ,31, 1 0 02, 0 4 03, 0 0 5 M=array(1:9,dim=c(3,3); diag(M);1 1 5 93_7 解线性方程组和求矩阵的逆矩阵(矩阵逆和矩阵的广义逆、矩阵广义逆) 若求解线性方程组Ax=b,其命令形式为solve(A,b),求矩阵A的逆,其命令形式为solve(A).设矩阵A=t(array(c(1:8,10),dim=c(3,3),b A=t(array(c(1:8,10),dim=c(3,3); b=c(1,1,1);

11、 x=solve(A,b); x;1 -1.000000e+00 1.000000e+00 3.806634e-16 solve(A); ,1 ,2 ,31, -0.6666667 -1.333333 12, -0.6666667 3.666667 -23, 1.0000000 -2.000000 1矩阵的广义阵:ginv(A)3_8 求矩阵的特征值与特征向量 函数eigen(Sm)是求对称矩阵Sm的特征值与特征向量,其命令形式为:ev=eigen(Sm),则ev存放着对称矩阵Sm特征值和特征向量,是由列表形式给出的,其中ev$values是Sm的特征值构成的向量,ev$vectors是Sm的

12、特征向量构成的矩阵.如 Sm=crossprod(A,A); ev=eigen(Sm); ev;$values1 303.19533618 0.76590739 0.03875643$vectors ,1 ,2 ,31, -0.4646675 0.833286355 0.29952952, -0.5537546 -0.009499485 -0.83262583, -0.6909703 -0.552759994 0.46585024_1 特征值分解(1).定义: 对N阶方阵A,x为标量,v是非零的N维列向量,且满足Ax=xv ,则称x为矩阵A的特征值,v 是相对应于x 的特征向量。特征值的全体成

13、为A的谱。(2).在r中的实现:在r中利用函数eigen(A)来求矩阵的特征值和特征向量,具体的调用格式为:以矩阵A为例说明此问题 A=array(c(1,1,1,4,2,1,9,3,1),dim=c(3,3); D=eigen(A); D;$values1 5.8284271 -2.0000000 0.1715729$vectors ,1 ,2 ,31, -0.8597736 -9.486833e-01 0.53848202, -0.4346498 6.474883e-17 -0.78729383, -0.2680839 3.162278e-01 0.3003425(3).特征值分解的性质:

14、我们知道当所求的的特征向量构成的矩阵可逆时会满足solve(vectors)%*%A%*%vectors=diag(values),下面进行验证。 solve(vectors)%*%A%*%vectors; ,1 ,2 ,31, 5.828427e+00 8.339683e-16 -1.285213e-152, 1.211325e-15 -2.000000e+00 2.704000e-163, -3.471971e-16 -1.607126e-16 1.715729e-01结果的精度还是比较高的。4_2 矩阵的奇异值分解 函数svd(A)是对矩阵A作奇异值分解,即A =U%*%D%*%t(V)

15、,其中U, V是正交阵,D为对角阵,也就是矩阵A的奇异值.svd(A)的返回值也是列表,svd(A)$d表示矩阵A的奇异值,即矩阵D的对角线上的元素.svd(A)$u对应的是正交阵U, svd(A) $v对应的是正交阵V.例如, A SVD=svd(A); SVD;$d1 17.4125052 0.8751614 0.1968665$u ,1 ,2 ,31, -0.2093373 0.96438514 0.16167622, -0.5038485 0.03532145 -0.86306963, -0.8380421 -0.26213299 0.4785099$v ,1 ,2 ,31, -0.4

16、646675 -0.833286355 0.29952952, -0.5537546 0.009499485 -0.83262583, -0.6909703 0.552759994 0.4658502 attach(SVD);The following object(s) are masked from SVD (position 3): d, u, v u%*%diag(d)%*%t(v); ,1 ,2 ,31, 1 2 32, 4 5 63, 7 8 10 A; ,1 ,2 ,31, 1 2 32, 4 5 63, 7 8 104_3 qr分解 设A为m*n矩阵,如果存在m*m酉矩阵Q(即

17、Q(H)Q=QQ(H)=I)和m*n阶梯形矩阵R,使得A=QR,那么此分解称为QR分解。QR分解在解决最小二乘问题、特征值计算等方面有着十分重要的作用。#建立矩阵 A=(array(c(1:12),dim=c(4,3); A; ,1 ,2 ,31, 1 5 92, 2 6 103, 3 7 114, 4 8 12#进行矩阵分解 QR=qr(A);QR$qr ,1 ,2 ,31, -5.4772256 -12.7801930 -2.008316e+012, 0.3651484 -3.2659863 -6.531973e+003, 0.5477226 -0.3781696 7.880925e-16

18、4, 0.7302967 -0.9124744 9.277920e-01$rank1 2$qraux1 1.182574 1.156135 1.373098$pivot1 1 2 3attr(,class)1 qr#提取Q,R并验证分解的正确性。 Q=qr.Q(QR); R=qr.R(QR); Q%*%R; ,1 ,2 ,31, 1 5 92, 2 6 103, 3 7 114, 4 8 12矩阵的秩:4_4 Schur分解引言: 从特征值的分解中可以看出,特征值的分解是有条件的,如果特征向量不是线性无关的,那么对于一个矩阵来说便不能采用特征值分解的方法对矩阵进行分解。例如对于矩阵A=t(ar

19、ray(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3)进行特征值分解有: A=t(array(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3); A; ,1 ,2 ,31, 6 12 192, -9 -20 -333, 4 9 15 det(A);1 -1 W=eigen(A); W;$values1 1+0i 1-0i -1+0i$vectors ,1 ,2 ,31, -0.4082483-0i -0.4082483+0i -0.4740998+0i2, 0.8164966+0i 0.8164966+0i 0.8127426+0i

20、3, -0.4082483+0i -0.4082483-0i -0.3386427+0i attach(W);The following object(s) are masked from W (position 3): values, vectors det(vectors);错误于determinant.matrix(x, logarithm = TRUE, .) : 目前还不能算复数矩阵的行列式 det(Re(vectors);1 -7.599489e-19 solve(vectors) ,1 ,2 ,31, 0.000000+78209959i 0.00000+78209959i -9

21、.26965+78209959i2, 0.000000-78209959i 0.00000-78209959i -9.10153-78209959i3, 3.691206+ 0i 11.07362+ 0i 18.45603+ 0i 很明显vectors不是一个可逆矩阵此时进行特征值分辨这种方法便不可行,对于这种情况我们可以作Schur分解。描述: 对于任意的方针A,其Schur分解的形式为:A=USU(H),其中U是标准的正交矩阵(即满足UU(H)=I),S为上三角矩阵,并且对角线上的元素为A的特征值。由于此函数在包Matrix中,所以使用之前必须调入。并且注意matrix和Matrix的区别

22、。例子: A=Matrix(c(6,12,19,-9,-20,-33,4,9,15),ncol=3,byrow=TRUE); A;3 x 3 Matrix of class dgeMatrix ,1 ,2 ,31, 6 12 192, -9 -20 -333, 4 9 15 library(Matrix); Sch=Schur(A, vectors=TRUE); Q=SchQ; Q=as.matrix(Q) attach(Sch);错误于attach(Sch) : attach只适用于串列,数据框和环境 Q%*%T%*%t(Q)3 x 3 Matrix of class dgeMatrix ,

23、1 ,2 ,31, 6 12 192, -9 -20 -333, 4 9 154_5 Cholesky分解(柯利分解)描述: 正定矩阵:设A是n阶实系数矩阵, 如果对任何非零向量 X=(x1,.xn) 都有t(X)AX0,就称A正定(Positive Definite)。正定矩阵在相合变换下可化为标准型, 即单位矩阵。 Cholesky分解: 对任意的正定矩阵A,存在上三角矩阵R,使A=t(R)%*%R,则称为A的Cholesky分解(柯利分解)。例子: #输入矩阵 m=matrix(c(5,1,1,3),ncol=2 ); m; ,1 ,21, 5 12, 1 3 #矩阵分解 CH=chol

24、(m); #验证结果 t(CH)%*%CH; ,1 ,21, 5 12, 1 3tapply()分类汇总By函数分类汇总,分类分析1、sapply(w,class):对每列求种类。2、#利用tapply实现类似于excel里的数据透视表的功能: dayear province sale12007A122007B232007C342007D452008A562008C672008D782009B892009C910 2009D10 attach(da) tapply(sale,list(year,province)1147 1028 1169 12 tapply(sale,list(year,p

25、rovince),mean)AB CD200712 3420085 NA 672009 NA8 9 10by(warpbreaks, 1, warpbreaks, -1, summary)by(warpbreaks, warpbreaks,tension, function(x) lm(breaks wool, data = x)3. library(dplyr) train_groupby_termlimit=group_by(order_train,term1,limit1)termlimit=summarise(train_groupby_termlimit,n=n()数据框单列数据排序

26、,按某列排序,order.nos=order(iris,4,decreasing=T)irisorder.nos,sqldf包,用R写数据库语言。sqldf(select * from iris3 where Sepal.Width 3)/用单引号(用双引号有时不行)详细介绍:/p/sqldf清除变量rm(x),IQR函数IQR就是四分位差,是75分位值和25分位值的差保留小数位数options(digits=2)检验是否正态shapiro.test()ibrary(nortest);# nortest包里的函数都是检验是否正态的lillie.test

27、() #Kolmogorov-Smirnov检验ad.test() #Anderson-Darling正态性检验cvm.test() #Cramer-von Mises正态性检验pearson.test() #Pearson卡方正态性检验sf.test() #Shapiro-Francia正态性检验Kruskal-Wallis H检验(K-S检验不仅能够检验单个总体是否服从某一理论分布,还能够检验两总体分布是否存在显著差异。其原假设是:两组独立样本来自的两总体的分布无显著差异。)kruskal.test(x=M)白噪声检验Box.test()adfTest(logstockts1),pp.te

28、st(),作平稳性检验字符串相加,合并字符串,字符串相加,字符串分离,字符分离分割字符串,字符串拆分paste(gg,as.character(2),sep=)1 gg2yyyyy=网站停留时间:3小时4分50秒 yyyyy-strsplit(strsplit(yyyyy,split=:)12,split=小时) ; yyyyy11 3 4分50秒Formula编辑,函数编辑方法f=formula(yx1+x2)as.formula(y_starf3)y_star f3确定矩阵维数x - 1:10attr(x,dim) y 1 2.3 2.3 2.2 1.8 1.8 2.9 2.2 2.4 2

29、.9 2.1 2.4 2.4 2.2 2.3 2.2 2.0 2.5 1.9 2.1 2.4 2.3 2.9 2.3 1.8 2.5 2.527 2.0 2.6 2.4 2.7 2.0 1.8 2.0 2.2 2.8 2.2 2.5 2.4 2.4 2.6 2.3 2.0 2.6 2.2 2.1 1.8 x1 1 48 57 66 70 89 36 46 54 26 77 89 67 47 51 57 66 79 88 60 49 77 52 60 86 43 34 63 72 57 55 59 83 76 4735 36 80 82 64 37 42 66 83 37 68 59 92 x2

30、 1 50 36 40 41 28 49 42 45 52 29 29 43 38 34 53 36 33 29 33 55 29 44 43 23 47 55 25 32 32 42 33 36 31 4035 53 34 29 30 47 47 43 22 44 45 37 28 x3 1 51 46 48 44 43 54 50 48 62 50 48 53 55 51 54 49 56 46 49 51 52 58 50 41 53 54 49 46 52 51 42 49 47 4835 57 49 48 51 60 50 53 51 51 51 53 46a=data.frame(

31、model.frame(yx1+x2+x3)获取lm对象中包含的变量名提取lm函数公式里的变量的内容,提取formula的里面的变量all.vars(yx1+x2+x3)1 y x1 x2 x3#将formula(公式)“yx1+x2+x3”分解把字母变成小写字母Tolower()排列组合:Choose(n,k)#组合数factorial(n)#n的阶乘library(gtools)combinations(4,2)#把C4取2的情况列出来combn(4,2)#也是C4取2的情况列出来向量里面的数相乘,向量乘积,向量相乘prod(x)#算向量x里面所有数相乘的积adabag包的问题解决adab

32、ag包要求predict的newdata的数据中的因变量一定要有原来变量的各个水平(即使有的水平没有数值也没有关系)library(adabag)a=bagging(Species.,iris)D=irislevels(D,5)=rep(levels(iris,5)1,3)#所有的观测值都是setasa,但其他的因子都不存在summary(D)b=predict(a,newdata=D)$classtable(iris,5,b)结果是但改在这样后就没问题了:new.D=irisnew.D,5=iris1,Species#这样所有的观测值都是setosa,但其他的因子还在(虽然没有观测值),结果

33、是:predicted.object=predict(a,newdata=new.D)table(iris,5,predicted.object$class)因此,下面的new.D和D在取值上都是一样的,但因子个数(无论有没有)却不一样。看一下levels(new.D)和levels(D)就清楚了。补缺失值:1、library(DMwR)#加载程序包library(nnet)head(algae)algae - algae-manyNAs(algae), #去掉那些包含很多缺失值的观测clean.algae - knnImputation(algae,1:12,k=10)#使用与缺失值距离最近

34、的十个观测值的平均值来填充缺失值2、Library(missForest)missRorest(w)弥补缺失值w114:118,#116 有问题w116,1=NA# 弥补缺失值library(missForest)v=missForest(w)$ximpv114:118,#116 正常保存R里面的图片:将图片保存到当前啊作目录中名为mygraph.pdfpdf(mygraph1.pdf)#也可以是jpeg(),win.metafile(),png(),bmp(),tiff(),xfig()和postscript()plot(mtcars$wt,mtcars$mpg)abline(lm(mpgw

35、t,data=mtcars)title(Regression of Chapter1)dev.off()在指定的区间,求出函数的极大值点optimize(f,c(0,1), maximum = TRUE)(0,1)为定义区间求导函数,求导数fun=expression(x2)#其中x2是函数D(fun,x)如何查看r软件已安装包有哪些?查看R里的包,查看已安装的包.packages ( all.available = TRUE)car%in%.packages ( all.available = TRUE)1 TRUE一步一步运行函数;一步步运行函数;按步运行;逐步运行以glm为例:libra

36、ry(DAAG)head(anesthetic)#数据debug(glm)out=glm(moveconc+logconc,family=binomial(link=logit),data=anesthetic)然后就会一步一步显示结果。画散点图把直线和曲线加上,附有拟合直线和平滑曲线的散点图。第一种:attach(mtcars)plot(wt,mpg,main=Basic Scatter Plot of MPG vs. Weight, xlab=Car Weight(lbs/1000),ylab=Miles Per Gallon,pch=19)abline(lm(mpgwt),col=red

37、,lwd=2,lty=1)lines(lowess(wt,mpg),col=blue,lwd=1,lty=2)第二种:library(car)scatterplot(mpgwt|cyl,data=mtcars,lwd=2,main=Scatter Plot of MPG,xlab=Weight of Car,ylab=Miles Per Gallon,legend.plot=T,id.method=identify, labels=s(mtcars),boxplots=xy)第三种:散点矩阵library(car)scatterplotMatrix( mpg+disp+drat

38、+wt,data=mtcars,spread=F,diagonal=histogram)对一个矩阵定义颜色,根据矩阵加颜色,根据矩阵里的数定义一个颜色矩阵mydata-mtcarsc(1,3,5,6)mydata.corr=abs(cor(mydata)mycolors=(dmat.color(mydata.corr)myorder=order.single(mydata.corr)#把数据中相似的对象更为靠近,把相关性较高的对象放一起散点图重叠程度,重叠散点图的表示n - 10000x1 - matrix(rnorm(n), ncol = 2)x2 - matrix(rnorm(n, mea

39、n = 3, sd = 1.5), ncol = 2)x - rbind(x1, x2)oldpar - par(mfrow = c(2, 2)smoothScatter(x, nrpoints = 0)smoothScatter(x)# a different color scheme:Lab.palette integrate(f,0,2)2 with absolute error 2.2e-14分组画散点图,分组画图。画组合图查看x的属性。X的属性值。Attributes(x)三维矩阵,三维数组a=1:150p=array(a,dim=c(5,10,3)求一组数的累积分布函数图形,一组数的分布函数图1.dat=rnorm(10000)x=density(dat)$xdx=diff(density(dat)$x)1y=density(dat)$yplot(x,cumsum(y*dx)2.利用fitdistrplus包来拟合分布函数library(fitdistrplus)#生成x1正态随机数set.seed(123)x1 - rnorm(100)descdist(x1)#用这个函数,根据其结果和图形结合来看比较像什么分布;若像多个分布,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论