1、R 语言学习笔记常用函数1、聚类常用的包:fpc,cluster,pvclust,mclust基于划分的方法: kmeans, pam, pamk, clara基于层次的方法: hclust, pvclust, agnes, diana基于模型的方法: mclust基于密度的方法: dbscan基于画图的方法: plotcluster, plot.hclust基于验证的方法: cluster.stats2、分类常用的包rpart, party,randomForest,rpartOrdinal,tree ,marginTree,maptree,survival决策树: rpart, ctree
2、随机森林: cforest, randomForest回归, Logistic 回归, Poisson 回归: glm, predict, residuals生存分析: survfit, survdiff, coxph3、关联规则与频繁项集常用的包arules:支持挖掘频繁项集,最大频繁项集,频繁闭项目集和关联规则DRM:回归和分类数据的重复关联模型APRIORI 算法,广度 RST 算法:apriori, drmECLAT 算法:采用等价类,RST 深度搜索和集合的交集:eclat4、序列模式常用的包:arulesSequencesSPADE 算法: cSPADE5、时间序列常用的包:tim
3、sac时间序列构建函数:ts成分分解: decomp, decompose, stl, tsr6、统计常用的包: Base R, nlme方差分析: aov, anova密度分析: density假设检验: t.test, prop.test, anova, aov线性混合模型:lme主成分分析和因子分析:princomp7、图表条形图: barplot饼图: pie散点图: dotchart直方图: hist密度图: densityplot蜡烛图, 箱形图 boxplotQQ (quantile-quantile) 图: qqnorm, qqplot, qqlineBi-variate pl
4、ot: coplot树: rpartParallel coordinates: parallel, paracoor, parcoord热图, contour: contour, filled.contour其他图: stripplot, sunflowerplot, interaction.plot, matplot, fourfoldplot,assocplot, mosaicplot保存的图表格式: pdf, postscript, win.metafile, jpeg, bmp, png8、数据操作缺失值:na.omit变量标准化:scale变量转置:t抽样:sample堆栈:stac
5、k, unstack其他:aggregate, merge, reshape9、与数据挖掘软件 Weka 做接口RWeka: 通过这个接口,可以在 R 中使用 Weka 的所有算法。安装程序包1 用函数 install.packages()2 安装本地 zip 包路径:Packagesinstall packages from local files查看安装的包 installed.packages()检查更新 old.packages()更新 update.packages()帮助查看帮助文档?install.package()help(“install.package“)函数帮助?func
6、tionhelp(function)html 帮助Help.start()帮助Html 帮助关键词搜索RSiteSearch(word)数据类型向量创建向量c( ),创建向量length( ), 向量长度删除向量 vector-n,即删除第 n 个向量mode( ), 向量类型rbind( ), 向量元素都作为一行 rowcbind( ) ,向量元素都作为一列 col*创建向量序列seq(from, to, by = (to - from)/(length.out - 1),length.),length 是总长度(个数) ,因此 by 就是间隔rep(mode,time) 产生 mode 重
7、复 time 次的向量lettersn:m 产生字符向量rnorm(n,mean=.,sd=.) 随机序列取子集值范围限制如:V(xm|xk,c(“col1“,“col2“,.),用 attach(data)可以简化这一步操作,即在 attach 之后可以直接访问列(所有) ,datadata$colk,用 detach 可以解除。另一种控制条件查询的方式即通过 subset 函数取子集Subset(data,colNamek),此时 colName 是数据框的一个列属性筛选which()函数进行筛选,which 中是筛选条件,如:is.na().编辑数据 edit(data)查看数据框属性查
8、看数据维度:dim(data) 返回:行,列单独查看行数列数:nrow(data)、ncol(data)查看列名:names(data),同时修改列名:names(data)=c(“,“,.)查看数据结构:str(data)查看属性(列名$names 、类$class、列$row.names ) ,attributes(data)添加一列data$addCol=c(“,“,.),添加列的元素应与原来的行数相等merge(dataframeA,dataframeB,by=c(“,“,.),横向合并(添加多列)数据操作数据处理变量重命名,调用 fix(data),出现一个交互式工具;或者renam
9、e(dataframe,c(oldname=“newname,.“)类型转换:is.datatype()判断,as.datatype()转换字符串处理:nchar(),计算字符数量substr(x,start,stop)grep(pattern,v),返回向量坐标sub(pattern,replacement,x),替换strsplit(x,split)分割paste(x,c(),sep=“),在 x 后面(向量个数)连接 c()向量,以 sep 分隔cat(“str1“,“str2“,.),连接字符串toupper()tolower()读取文件数据data=read.table(“位置“,
10、header=T) 读取文本文件data=read.csv(“位置“,header=T) 读取 csv 文件在数据导入 R 语言后,会以数据框(dataframe)的形式储存。dataframe 是一种 R 的数据格式,可以将它想象成类似统计表格,每一行都代表一个样本点,而每一列则代表了样本的不同属性或特征。初学者需要掌握的基本操作方法就是 dataframe 的编辑、抽取和运算。数据库操作1、配置数据元安装 connector配置数据源(控制面板管理工具数据源)2、连接数据库odbcConnect(data_src,uid=“ “,pwd=“ “)3、查询这个是一个通用类型的操作,即可以查询
11、,又可以添加删除修改sqlQuery(channel,“sql“)4、更新数据库表,并读取数据(问题暂未解决)sqlSave(channel,mydata,NEW_TABLE_NAME,append = TRUE)表若不存在则新建,默认以数据框命名。mydata 数据框:data.frame()函数建立描述统计统计函数mean()Median()var()mad(),绝对中位差quantile(x,probs),求分位数range(),值域sum()diff(v,lag=n),滞后差分min()max()scale(),按列标准化概率函数分布函数Beta 分布 beta()柯西分布 cauch
12、y()卡方分布 chisq()t 分布 t()F 分布 f()Logistic 分布 logis()均匀分布 unif()正态分布函数 rnorm( )对数正态分布 lnorm()多项分布 mutinom()泊松分布函数 pois( )指数分布函数 exp( )Gamma 分布函数 gamma( )均匀分布函数 unif( )二项分布函数 binom( )几何分布函数 geom( )将这些分布函数加上第一个字母:d=密度函数p=分布函数q=分位数函数r=生成随机数统计与整合(分组)summary()描述统计是一种从大量数据中压缩提取信息的工具,最常用的就是 summary 命令,运行summa
13、ry(data)得到结果如下:对于数值变量计算了五个分位点和均值,对于分类变量则计算了频数(显示最高的前五个)aggregate(x, by, FUN, ., simplify = TRUE)对数据 x,通过 by 指明的变量,以 FUN 的方式进行整合。x 是一个数据框的一个属性by 有哪些因子去进行统计FUN 是计算的方法这个函数最后返回的是一个组织好的数据框sapply(x,FUN,options),指定统计方法进行描述options 是 FUN 的参数。另外,可以自定义统计函数,返回是一个向量。描述统计将根据自定义的函数计算,最终返回这个向量。by(x,INDICES,FUN),也可以
14、对数据进行整合描述,其中,INDICES 是一个因子或列表。table()统计频数。列联表创建表table(data),创建一维列联表table(A,B),创建二维列联表(矩阵式) ,A 是行,B 是列xtabs(formula,data),根据 formula 的格式创建。formula 可以为A+B抽样函数:Sample(x,size=,replace=T)处理表prob.table(table,margins),比例,margins 是边际(1 表示行与行相比, 2 表示列与列相比)margin.table(table,margins),频数addmargins(tables,margi
15、ns),为表格添加边际ftable(table)常用统计推断独立性检验卡方独立性检验chisq.test()p0.05 则不拒绝。Fisher 精确性检验fisher.test(),假设是:边界固定的列联表行和列是相互独立的。Corchran-Mantel-Haenszel 检验mantelhaen.test(),假设:两个名义变量在第三个变量的每一层中都是独立的。相关性度量assocstats(),较大的值意味着较强的相关性。cor(x,use,method=),计算相关系数;use 指定缺失数据的处理方式, method 指定相关系数的类型(Pearson、spearman、Kendall
16、三种)cor.test(x,y,alternative=,method=),对 x、y 的相关性检验,alternative 表示总体的相关系数大于还是小于 0(less小于 0,greater大于 0,two.side,不等于 0)cov(),计算协方差。pcor(u,S),偏相关,指控制一个或多个变量后,另外两个变量之间的相互关系。u 是一个数值向量,前两个数值表示要计算相关性的下标,后面的表示要控制的变量。S 为变量的协方差矩阵。t 检验独立性检验t.test(yx,data),y 是一个数值变量,x 是一个二分变量。t.test(y1,y2),y1,y2 是数值向量。非独立性检验假定组
17、件差异成正态分布。t.tet(y1,y2,paired=TRUE)时间序列ts(data = NA, start = 1, end = numeric(), frequency = 1,deltat = 1, ts.eps = getOption(“ts.eps“), class = , names = )as.ts(x, .) 强制转化为时间序列is.ts(x) 判断是否为时间序列统计分析回归分析a =lm(formula =, data = dataframe)formula:回归函数的表达式(模型公式) ,如:yx1+x2.,其中的参数是数据框列的名称求模型系数coef(a)提取模型公式
18、formula(a)plot(a)绘画模型诊断图(不理解)预测:predict(a,z),z 是新的数据框,利用回归函数 a 对 z 进行预测方差分析 ANOVA概述方差分析是用于两个及两个以上样本均数差别的显著性检验。方差分析的因变量是连续型资料,自变量是分类变量,一般都以组别的形式出现。方差分析是比较组间差异,组间差异的来源有(1)随机误差,组内差异( 2)控制条件,组间差异。方差分析的基本思想是:通过分析研究不同来源的变异对总变异的贡献大小,从而确定可控因素对研究结果影响力的大小。方差分析的检验方式是 F 检验(对组间的差异性检验) 。方差分析类别方差分析根据自变量的个数可以有单因素,双
19、因数、三因数等;根据因子的类型,可以分为组内因子和组间因子;另外因变量如果是多个则可以是多元方差分析。模型拟合方差分析和回归分析都是广义线性模型,因此方差分析也可以用 lm()进行。aov(formula,data=dataframe),同 lm 一样,返回的也是一个拟合值,formula 的不同就是分析的因素不同,常用的 formula 有:yA 单因素分析y x+A 含有协变量的单因素y A*B 双因素,*表示 A 和 B 之间的交互(展开为 A+B+A:B)单因素方差分析单因素分析是比较两个或多个组别的因变量均值。fit=aov(AB)summary(fit)双因素方差分析fit=aov
20、(yA*B)交互性显示:interaction.plot(A,B,y,.)多元方差分析当因变量不止一个时,可以用多元方差同时分析。manova(c()A.)广义线性模型在许多情况下,因变量可能不符合正态分布,如:结果变量是类别型的。结果变量是计数型的(有限,并且均值与方差是相关的,正态分布是相互独立的) 。广义线性模型线性模型_Y=_0+ _(j=1)p?_j X_j 对于广义线性模型,只需要保证参数(?0,?1,. )为线性即可,因此定义广义线性模型如下形式:g(_Y)=_0+_(j=1)p? _j X_j 其中,g()是条件均值的函数(连接函数) 。glm()函数glm(formula,f
21、amily=family(link=function),data=.)family=.指明了概率分布和相应的连接函数,分布族默认的连接函数:binomial (link = “logit“)gaussian (link = “identity“)gamma (link = “inverse“)inverse.gaussian (link = “1/mu2“)poisson (link = “log“)quasi (link = “identity“, variance = “constant“)quasibinomial (link = “logit“)quasipoisson (link =
22、 “log“)默认的 link 可以在使用的时候省略。例如,对于 logistic 回归,假设符合二项分布,则可以用family= binomial (link = “logit“)来表示。Logistic 回归logistic 回归是一个二值检验,因此首先需要将要检验的因子(因变量)转换为二值因子。对于数值变量可以设置界定,上界与下界分别取一个因子。同样的,可以通过 p 值观测变量的显著性,而重新定义拟合模型。模型的比较可以使用 anova(),设两套线性模型分别是 fit.full 和 fit.reduced,利用卡方检验进行比较,如:anova(fit.reduced,fit.full,
23、test=“Chisq“)它们的显著性(p 值) ,说明了两个模型的拟合程度。也就是说,在拟合程度相似的情况下,fit.reduced 下面的变量确实具有更高的显著性效果,而其他的却不具备。主成分分析(PCA)与因子分析( EFA)主成分分析是一种数据降维方法,将大量相关变量转换为一组低维不相关的变量。主成分分析是观测变量的一个线性组合,权重是通过最大化各主成分所解释的方差获得的。如:PC1=a1X1+a2X2+.akXk探索因子分析是用来发现一组变量的潜在结构的方法。寻找一组更小的、潜在的结构来解释已观测的、显示的变量间的关系。分析的一般步骤:(1) 、数据预处理(2) 、选择因子模型(3)
24、 、判断选择的主成分 /因子数目(4) 、选择主成分/因子(5) 、旋转主成分/因子(6) 、解释结果(7) 、计算主成分或因子得分主成分分析主成分个数确定根据解释变量方差的积累值的阈值来判断需要的主成分数目;通过变量间 K*K 的相关系数矩阵来判断保留的主成分数目。特征值方法:第一主成分与最大特征值关联,第二主成分与第二大的关联,依次下去。碎石检验绘制了特征值与主成分的图形,在图形变化最大处之上的主成分都可以保留。特征值的判别标准函数:fa.parallel(data,fa=“,n.iter=.)绘制结果如图:图中表示了三种特征值的判别准则,蓝线展示了基于观测值的碎石检验,虚线表示根据 n.
25、iter 个随机数矩阵推导出来的特征值均值,实线表示大于 1 的特征值准则。图中显示了只需要保留 1 个主成分即可以保留大部分信息。提取主成分principal(r,nfactors=,rotate=,scores=)r 是相关系数矩阵或原始矩阵;nfactor 是主成分数目,默认为 1;rotate 指定旋转方法,默认最大方差旋转(varimax) ;scores 设定是否需要计算主成分得分(默认不需要) 。结果中,PC1 栏包含了成分载荷,指出了观测变量与主成分的相关系数;h2 栏指出了成分公因子方差-主成分对每个变量的方差解释度;u2 栏指成分唯一性- 方差无法被主成分解释比例。SS l
26、oadings 包含了主成分相关联的特征值, Proportion var 表示主成分对整体数据集的解释程度。主成分旋转旋转是将一系列成分载荷变得更容易解释,它们尽可能的对成分去噪。旋转的方法有两种:使选择的成分保持不相关(正交旋转) ;让它们变得相关(斜交旋转) 。方差极大旋转,对载荷阵的列进行去噪,使得每个变量只由一组有限变量解释。获取主成分得分设置 scores=TRUE,可以获得每个对象在该主成分上的得分。因此,这里的 r 只能是原始数据,否则需要另外通过相关系数进行计算。因子分析因子分析是通过发掘隐藏在数据下的一组较少的、更为基本的无法观测的变量,来解释一组可观测变量的相关性。每个因
27、子被认为可解释多个观测变量间共有的方差(因此又称为公共因子) 。模型形式是:Xi=a1F1+a2F2+.akFk+UiUi 是 Xi 独有的部分,无法被公共因子解释。判断公共因子数目fa.parallel()将 fa=“both“,将同时展现主成分与公共因子分析的结果。提取公共因子fa(r,nfactors=,n.obs=,rotate=,scores=,fm=)n.obs 是观测数,输入相关系数时需要填写;fm 设定因子化方法,默认是最小残差法(minres) ,另外还有:最大似然法(ml) ,主轴迭代法(pa ) ,加权最小二乘法(wls ) ,广义加权最小二乘法(gls ) 。因子旋转正
28、交旋转结果分析 rotate=“varimax“可以看到 reading 和 vocab 在第一因子上载荷较大, picture、blocks 和 maze 在第二因子上载荷较大,而 general 较为平均。这说明了包含的两个因子- 语言类和非语言类。斜交旋转结果可以看出两者的不同之处。正交旋转,因子分析侧重于结构矩阵(变量与因子的相关系数) ;斜交分析,因子分析会考虑三个矩阵:因子结构矩阵、因子模式矩阵和因子关联矩阵。R 绘图绘图初探图形参数par()返回当前图形参数的列表par(optionname=value,.)常用参数参数用途值符号与线条pch绘制点时的符号形状025cex符号的大
29、小默认大小的倍数lty线条的类型16lwd线条的宽度默认大小的倍数颜色col绘图颜色字符向量col.axis坐标轴刻度col.lab坐标轴标签col.main标题col.sub副标题fg前景bg背景自定义属性标题 title()坐标轴 axis()参考线 abline(h=yvalues,v=xvalues)图例 legend(location,title,legend,.),legend 是图例标签的字符向量文本标注 text(),mtext()图形组合par(mfrow=c(nrows,ncols)layout(matrix),matrix 指定了图形组合的位置布局基本图形条形图 barp
30、lot(x,main=“,xlab=“,ylab=“,horiz=FALSE)堆砌与分组条形图 barplot(x,main=“,xlab=“,ylab=“,horiz=FALSE,col=c(),legend=c(),besides=FALSE),绘图对象是一个二维矩阵形式饼状图 pie()扇形图,plotrix 包的 fan.plot(x,labels=c(),适合于大小的比较直方图 hist(x,breaks=n,.), breaks 可以指定直方图的条数核密度图,密度函数 density(x)密度图的绘制可以是 plot(density()直接绘制,或者是在一幅图上面通过 lines(
31、density()进行叠加,注意:在叠加之前由于密度图都小于 1,因此要把之前的图范围变为 1 处理,添加属性 freq=FALSE箱线图 boxplot()箱线图分组展示:boxplot(formula,data=dataframe),formula 形如 YX,为变量 X 的每个值生成对应 Y 的箱线图。点图 dotchart()散点图(进阶)plot(x,y),可以绘制散点图,可以在散点图上面添加许多线条来直观的表示数据,散点图是显示二变量之间关系的图。线条添加曲线类别函数lm(),回归曲线lowess(x,y),平滑的曲线曲线线条添加abline(),添加一条回归曲线lines()另外
32、,car 包提供了一种综合绘图的函数,scatterplot(formula,data=.)散点图矩阵pairs(A+B+C.,data=.), 包含了所有矩阵变量,添加参数 upper.panel=NULL,可以只显示上三角图形。另外,car 包的 scatterplotMatrix(A+B+C.,data=.),可以综合的显示包含多种线条的散点图矩阵图。高密度散点图对于密度较高的散点图,可能眼睛难以分出其分布密度,因此可以根据其密度函数显示其密度上面的分布关系。smoothScantter(x,y),x,y 是数据框的列名。3D 散点图scatterplot3d(datan,n+k),da
33、ta 可以是数据框形式的数据,但至少包括 3 个属性(维度) ,即 k=2,高于三维会用不同的颜色或图形显示。一般不会超过 5 个维度。添加属性 type=“h“,可以添加垂直线。添加属性 highlight=TRUE,可以添加高亮色彩。列属性3D 绘图返回的是一个数据框,包含列有“xyz.convert“ ,“points3d“ ,“plane3d“ ,“box3d“ 例如,设置 plane3d,可以添加一个平面。$plane3d(lm(.)气泡图在散点图的基础上,将另一个变量的大小显示出来。symbols(x,y,circle=r),x,y 表示坐标,circle 指示半径。还可以添加 text(x,y,rownames(data),来指明坐标处的行名。地图绘制Map(database,fill=true,col=color,mar=vector(4)Col:颜色,可以是 rgb 色彩Mar:边界map(“world“, fill = TRUE, col = rainbow(200),ylim = c(-60, 90), mar = c(0, 0, 0, 0)title(“世界地图“)符号换行符号linux,unix: rnwindow: nMac OS: r