1、R软件 多元统计分析,兰州大学 王定,1、判别分析,实现方法: (1)利用MASS包里的lda( ) 函数可完成判别分析(略) (2)利用R软件进行编程,简要介绍: 已知有多少类,且在各类均有训练样本的前提下,利用训练样本得到判别函数以及判别规则,对待测样本进行分类。本课程只讲述距离判别,有兴趣的朋友可以课后研究一下其他判别方法的R实现。,1、判别分析,(1)读程序(2)作分析(3)讲应用,双分类距离判别R程序,discriminiant.distance0)blongi-1elseblongi-2 blong ,多分类距离判别R程序(部分),distinguish.distance-func
2、tion(TrnX, TrnG, TstX = NULL, var.equal = FALSE) blong-matrix(rep(0, nx), nrow=1, dimnames=list(“blong“, 1:nx)g-length(levels(TrnG)mu-matrix(0, nrow=g, ncol=ncol(TrnX)for (i in 1:g)mui,-colMeans(TrnXTrnG=i,) D-matrix(0, nrow=g, ncol=nx)if (var.equal = TRUE | var.equal = T)for (i in 1:g)Di,- mahalano
3、bis(TstX, mui, var(TrnX) elsefor (i in 1:g)Di,- mahalanobis(TstX, mui, var(TrnXTrnG=i,) for (j in 1:nx)dmin-Inffor (i in 1:g)if (Di,jdmin)dmin-Di,j; blongj-i blong ,如何用,(1)discriminiant.distance(TrnX1,TrnX2,TstX, var.equal=FALSE) TrnX1,TrnX2:两分类中两个类的训练样本。 TstX:待判样本。可为空值;当为空值时,默认将训练样本回代进行判别。 var.equa
4、l:逻辑变量,FALSE(默认)表示协方差不等,TRUE表示协方差相同。(2)distinguish.distance(TrnX, TrnG, TstX, var.equal = FALSE) TrnX:训练样本。 TrnG:输入样本的分类情况,为因子变量。 TstX:待判样本。可为空值;当为空值时,默认将训练样本回代进行判别。 var.equal:逻辑变量,FALSE(默认)表示协方差不等,TRUE表示协方差相同。所有训练样本、待判样本的输入格式均为矩阵(样本按行输入)或数据框。,应用举例医学,医生对病人的诊断是靠对病人观测若干症状来综合评定。如一个人发高烧,医生根据他的体温高低、白血球数目
5、及其它症状来判断他是得感冒、肺炎还是其它。再如某人发现腹部有肿瘤,医生根据肿瘤的大小、生长的速度、边界是否清楚,质硬或软等症状来判断肿瘤是良性或恶性。这些判别问题就是判别分析的实际应用。(显然偶然的误判是避免不了的。这就加剧了医患关系的紧张。但并不能说医生完全的不负责任或者水平不够。可能是很多因素导致了误判。)不同的病就是不同的类。一般而言,事先应有一批经专家确诊或手术后经病理化验确诊的病例资料(训练样本),根据这批资料数据,利用多元统计方法建立诊断的准则(即判别函数与判别规则)。对来就诊的病人(待判样本),按诊断准则的要求,观测若干项指标后,即可作出诊断。,2、聚类分析,实现方法:调用R函数
6、。,简要介绍:事先不知道多少类的情况下,根据对象特征的近似程度,将样本进行分类。主要讲述系统聚类和动态聚类的K均值法聚类。,2.1 系统聚类,输入数据,生成距离结构利用R自带函数进行系统聚类绘出谱系图,分类,有关系统聚类的R函数,(1)dist( ), dist(scale( ) #对样本数据(标准化处理后)生成距离结构(2)hclust( , method=“ ”) #进行系统聚类;method=(“single”,“complete”,“average”,“centroid”,“ward”)(3)cutree(hc, k) #进行分类sort(cutree(hc, k) #按分类变量水平大
7、小排序以方便查看(4)as.dendrogram(hc) #将结果强制转换为做谱系图类型plot(hcd, type=“ “, horiz=FALSE) #做谱系图;type=(“rectangle”,“triangle”)rect.hclust(hc, k= , border=“ “) #进行分类并在谱系图中显示;k=分类个数;border设置分类框的颜色,有关R型聚类的R函数,(1)as.dist(sqrt(1-cor(X)2) #将相关系数转化为距离矩阵(2)hclust(d,method=“single“)(3)plot(hc,hang=-1),2.2 K均值聚类,Kmeans(X,
8、k= , iter.max=10)#矩阵或数据框格式的样本数据;K=聚类个数;iter.max=最大迭代次数,有关K均值聚类动态展示的包与函数,amap,R2SWF,animation #进行K均值聚类及制作动画的包dev2swf(kmeans.ani( ), output=“ ”) #包中进行动态聚类并输出FLASH动画的函数,应用举例文学历史研究,在1985-1986年,我国复旦大学统计运筹系的李贤平教授对我国的名著红楼梦的著作权进行研究。使用的统计方法中就用到了聚类分析。先选定数十个与情节无关的虚词(如:了,吗,嘛,喱,呢,么,等)作为变量, 把红楼梦一书中的120回作为120个样品,统
9、计每一回(即样品)选定的这些虚词(即变量)出现的频数。由此得到的120行m列的数据阵,进行聚类分析,由输出的结果可以看出:前80回和后40回截然地分为两类。在红楼梦的著作权的研究中,使用较多的方法是聚类分析,主成分分析,典型相关分析等方法,3、主成分分析,实现方法: (1)R自带函数 (2)psych包 (3)编程(略),简要介绍:利用降维技术,将多个变量化成少数几个主成分,且主成分能够反映原始变量绝大部分信息。,有关主成分分析的R函数,(1)princomp(x, cor=FALSE, scores=TRUE) #进行主成分分析x:矩阵或数据框形式的样本数据cor:逻辑变量。TRUE表示从相
10、关矩阵R出发;FALSE表示从协 方差阵S出发scores:是否计算主成分得分(2)summary(pr, loadings=FALSE) #提取主成分信息pr:princomp()得到的对象loadings:逻辑变量。TRUE表示显示各主成分对应的载荷(3)predict(pr) #预测各样本在各主成分上的得分(4)screeplot(pr, type=“”) #碎石图type:设置碎石图样式。lines为直线图,barplot为直方图(5)biplot(pr, choies= , ) #样本数据关于主成分散点图,主成分分析的psych包函数,(1)fa.parallel(x, fa=“pc
11、”, main=“”) #作碎石图以确定主成分个数(2)principal(x, nfactors= , scores= ) #主成分分析(默认相关阵)(3)factor.plot(pr) #变量数据关于主成分散点图,4、因子分析,实现方法: (1)R自带函数 (2)psych包 (3)编程(略),简要介绍:因子分析是主成分分析的推广和发展。它研究相关阵或者协方差阵的内部依赖关系,将多个变量综合为少数几个因子,以再现原始变量与因子之间的相关关系。,有关因子分析的R函数,factanal(x, factors= , covmat=, scores=“ “, rotation=“ “)x:矩阵或者
12、数据框格式的样本数据factors:因子个数covmat:样本协方差阵或相关阵。(x与covmat只输入一个)scores:因子得分的方法(“none”“regression”“Bartlett”)rotation:旋转设置(“varimax”“promax”“none”),有关因子分析的psych包函数,(1)fa.parallel(x, fa=“fa”, main=“”) #碎石图x:原始数据矩阵或样本相关阵fa:是因子分析还是主成分分析(2)fa(x, nfactors= , rotate=“ “, scores=FALSE, fm=“”)nfactors:设置公共因子个数fm:因子分析
13、方法。(“pc”“m1”“pa”“minres”)(3)factor.plot(fa) #原始变量关于各公共因子的散点图(4)fa.diagram(fa) #公共因子与原始变量结构图,应用举例综合评价,从若干商业合作对象的各种指标入手,进行主成分分析或者因子分析,简化评价指标,对商业合作对象进行综合评定,确定合作公司。,5、典型相关分析,实现方法:R自带函数,简要介绍:分析两组随机变量之间的相关性,揭示两组随机变量之间的相互线性依赖关系。采用主成分提取方法,找出两组变量的线性组合U和V,将两组变量之间相关性的研究变为两个变量之间相关性的研究。,有关典型相关分析的R函数,cancor(x,y)
14、#进行典型相关分析x, y是两组变量的数值矩阵或数据框,典型相关系数的检验程序,corcoef.testalpha)i-k-1; breaks-s+1/rk2i ,应用举例环境科学,环保局对城市多种污染气体(CO,CO2,SO2)的浓度与气象因子(风向,风速,温度,湿度等)之间的相互关系的研究。多元统计分析方法,在各行各业的应用非常之多,大家可以课后搜集一些资源,多看看各行各业的报告文章等,看看我们课堂学到的理论知识在现实世界中具体是如何用的,这样既能加深对理论的理解,又能增强我们的实战能力。我们是专业硕士,想必大部分人的目标就是成为一个既懂理论又能实战的高级应用型人才。如何走出象牙塔,不拘泥于理论,更看重理论所学与实际应用的结合,我觉得是我们课余应该思考的问题。仅个人观点!谢谢大家!,结语,多元统计分析方法,在各行各业的应用非常之多,大家可以课后搜集一些资源,多看看各行各业的报告文章等,看看我们课堂学到的理论知识在现实世界中具体是如何用的,这样既能加深对理论的理解,又能增强我们的实战能力。我们是专业硕士,想必大部分人的目标就是成为一个既懂理论又能实战的高级应用型人才。软件掌握的不再多在于精。理论方法我想也是吧,学会一种理论方法能够融会贯通最重要。如何走出象牙塔,不拘泥于理论,更看重理论所学与实际应用的结合,我觉得是我们课余应该思考的问题。仅个人观点!谢谢大家!,