R-多元统计分析上机讲义.doc_第1页
R-多元统计分析上机讲义.doc_第2页
R-多元统计分析上机讲义.doc_第3页
R-多元统计分析上机讲义.doc_第4页
R-多元统计分析上机讲义.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

多元分析R实验上机讲义应用多元统计分析R实验上机讲义应用多元统计分析4Applied Multivariate Statistical Analysis4第一章绪论4第二章矩阵42.1矩阵的建立42.2矩阵的下标(index)与子集(元素)的提取62.3 矩阵四则运算72.3.1 矩阵的加减运算72.3.2 矩阵的相乘82.3.3 矩阵的求逆82.4矩阵的其他一些代数运算82.4.1 求转置矩阵82.4.2 提取对角元素82.4.3矩阵的合并与拉直82.4.4方阵的行列式92.4.5 矩阵的特征根和特征向量92.4.6 其它函数92.5 矩阵的统计运算102.5.1 求均值102.5.2 标准化102.5.3 减去中位数10第三章多元正态分布及参数的估计103.1 绘制二元正态密度函数及其相应等高线图103.2 多元正态分布的参数估计123.2.1 多元正态总体的相关量123.2.2 极大似然估计13第四章多元正态总体参数的假设检验144.1 几个重要统计量的分布144.2 单总体均值向量的检验及置信域144.2.1均值向量的检验144.2.2样本协方差阵的特征值和特征向量154.3多总体均值向量的检验164.3.1 两正态总体均值向量的检验164.3.2 多个正态总体均值向量的检验-多元方差分析174.4协方差阵的检验184.4.2 多总体协方差阵的检验184.5独立性检验184.6正态性检验19第五章判别分析205.1距离判别215.1.1 马氏距离215.1.2 两总体的距离判别215.1.3 多个总体的距离判别245.2贝叶斯判别法及广义平方距离判别法245.2.1 先验概率(先知知识)245.2.2 广义平方距离255.2.3 后验概率(条件概率)255.2.4 贝叶斯判别准则255.3费希尔(Fisher)判别28第六章聚类分析296.2距离和相似系数296.2.1距离296.2.2数据中心化与标准化变换296.2.3相似系数306.3 系统聚类法306.4类个数的确定326.5动态聚类法346.7变量聚类方法34第七章主成分分析357.2 样本的主成分367.3 主成分分析的应用37第八章因子分析408.3 参数估计方法408.4 方差最大的正交旋转438.5 因子得分43第九章对应分析方法44第十章典型相关分析46应用多元统计分析Applied Multivariate Statistical Analysis第一章 绪论在实际问题中,很多随机现象涉及到的变量不是一个,而是经常是多个变量,并且这些变量间又存在一定的联系。我们经常需要处理多个变量的观测数据,如果用一元统计方法,由于忽视了各个变量之间可能存在的相关性,一般说来,丢失信息太多,分析的结果不能客观全面反映数据所包含的内容,因此,我们就需要用到多元统计的方法。多元统计分析(Multivariate Statistical Analysis)也称多变量统计分析、多因素统计分析或多元分析,是研究客观事物中多变量(多因素或多指标)之间的相互关系和多样品对象之间差异以及以多个变量为代表的多元随机变量之间的依赖和差异的现代统计分析理论和方法。多元统计分析是解决实际问题的有效的数据处理方法。随着电子计算机使用的日益普及,多元统计统计方法已广泛地应用于自然科学、社会科学的各个方面。第二章 矩阵 矩阵即是二维的数组,它非常的重要,以至于需要单独讨论。由于矩阵应用非常广泛,因此对它定义了一些特殊的应用和操作,R 包括许多只对矩阵操作的操作符和函数。2.1矩阵的建立在R中最为常用的是用命令matrix( )建立矩阵,而对角矩阵常用函数diag( )建立。例如 X X ,1 ,21, 1 12, 1 1 X X ,1 ,2 ,31, 1 0 02, 0 1 03, 0 0 1 diag(2.5, nr = 3, nc = 5) ,1 ,2 ,3 ,4 ,51, 2.5 0.0 0.0 0 02, 0.0 2.5 0.0 0 03, 0.0 0.0 2.5 0 0 X - matrix(1:4, 2) # 等价于X X ,1 ,21, 1 32, 2 4 rownames(X) colnames(X) X c da 1 3b 2 4 dim(X)1 2 2 dimnames(X)11 a b21 c d注意:循环准则仍然适用于matrix( ),但要求数据项的个数等于矩阵的列数的倍数, 否则会出现警告。矩阵的维数使用c( )会得到不同的结果(除非是方阵), 因此需要小心。数据项填充矩阵的方向可通过参数byrow来指定, 其缺省是按列填充的(byrow=FALSE), byrow=TRUE表示按行填充数据。再看几个例子: X X ,1 ,2 ,3 ,41, 1 3 1 32, 2 4 2 4 X X X ,1 ,21, 1 32, 2 4 X X ,1 ,2 ,3 ,41, 1 2 3 42, 1 2 3 4 因为矩阵是数组的特例,R中数组由函数array( )建立, 因此矩阵也可以用函数array( )来建立,其一般格式为: array(data, dim, dimnames)其中data为一向量,其元素用于构建数组;dim为数组的维数向量(为数值型向量);dimnames为由各维的名称构成的向量(为字符型向量), 缺省为空。看几个例子: A A ,1 ,2 ,31, 1 3 52, 2 4 6 A A ,1 ,2 ,31, 1 3 12, 2 4 2 A A ,1 ,2 ,31, 1 3 52, 2 4 62.2矩阵的下标(index)与子集(元素)的提取矩阵的下标可以使用正整数、负整数和逻辑表达式,从而实现子集的提取或修改。考查矩阵 x x ,1 ,2 ,31, 1 3 52, 2 4 6 提取一个元素 x2,21 4 提取若一个或若干个行或列 x2,21 4 x2,1 2 4 6 x,21 3 4 x,2,drop=FALSE ,11, 32, 4 x,c(2,3),drop=FALSE ,1 ,21, 3 52, 4 6 去掉某一个或若干个行与列 x-1,1 2 4 6 x,-2 ,1 ,21, 1 52, 2 6 添加与替换元素 x,3 x ,1 ,2 ,31, 1 3 NA2, 2 4 NA xis.na(x) x ,1 ,2 ,31, 1 3 12, 2 4 12.3 矩阵四则运算矩阵也可以进行四则运算(“+”、“-”、“*”、“/”,“”),分别解释为矩阵对应元素的四则运算。在实际应用中,比较有实际应用的是矩阵的相加,相减,相乘和矩阵的求逆。矩阵的加减运算一般要求矩阵形状完全相同(dim属性完全相同),矩阵的相乘一般要求一矩阵的列维数与另一矩阵的行维数相同,而矩阵要求逆的话,一般要求它为一方阵。2.3.1 矩阵的加减运算若A,B为两个形状相同的矩阵,两矩阵的和为C,R中表达式为:C-A+B两矩阵的差为D,R中表达式为:D-A-B矩阵也可以与数进行加减,A+5表示A中的每个元素加上5。2.3.2 矩阵的相乘操作符%*% 用于矩阵相乘。若矩阵A的列数等于矩阵B的行数,矩阵A乘以矩阵B表示为:A%*%B注:X*Y表示两个矩阵的逐元相乘,而不是X和Y的乘积。2.3.3 矩阵的求逆若矩阵A为一方阵,矩阵的逆可以用下面的命令计算:solve(A)。操作符solve( )可以用来求解线性方程组:Ax=b,解为solve(A,b)在数学上,用直接求逆的办法解x X diag(X)1 1 4事实上,diag( )的作用依赖于自变量,diag(vector)返回以自变量(向量)为主对角元素的对角矩阵;diag(matrix)返回由矩阵的主对角元素所组成的向量;diag(k)(k为标量)返回k阶单位阵。2.4.3矩阵的合并与拉直函数cbind()把几个矩阵横向拼成一个大矩阵,这些矩阵行数应该相同;函数rbind()把几个矩阵列向拼成一个大矩阵,这些矩阵列数应该相同。(如果参与合并的矩阵比其它矩阵行数少或列数少,则循环不足后合并。)例如: m1 m1 ,1 ,21, 1 12, 1 1 m2 m2 ,1 ,21, 2 22, 2 2 rbind(m1, m2) ,1 ,21, 1 12, 1 13, 2 24, 2 2 cbind(m1, m2) ,1 ,2 ,3 ,41, 1 1 2 22, 1 1 2 22.4.4方阵的行列式求方阵的行列式使用det( ):X X ,1 ,21, 1 32, 2 4 det(X)1 -22.4.5 矩阵的特征根和特征向量 函数eigen( ) 用来计算矩阵的特征值和特征向量。这个函数的返回值是一个含有values 和vectors 两个分量的列表。命令A A$values1 5.3722813 -0.3722813$vectors ,1 ,21, -0.5657675 -0.90937672, -0.8245648 0.41597362.4.6 Matrix facilites In the following examples, A and B are matrices and x and b are a vectors.Operator or FunctionDescriptionA * BElement-wise multiplicationA %*% BMatrix multiplicationA %o% BOuter product. ABcrossprod(A,B)crossprod(A)AB and AA respectively.t(A)Transposediag(x)Creates diagonal matrix with elements of x in the principal diagonaldiag(A)Returns a vector containing the elements of the principal diagonaldiag(k)If k is a scalar, this creates a k x k identity matrix. Go figure.solve(A, b)Returns vector x in the equation b = Ax (i.e., A-1b)solve(A)Inverse of A where A is a square matrix.ginv(A)Moore-Penrose Generalized Inverse of A. ginv(A) requires loading the MASS package.y-eigen(A)y$val are the eigenvalues of Ay$vec are the eigenvectors of Ay-svd(A)Single value decomposition of A.y$d = vector containing the singular values of Ay$u = matrix with columns contain the left singular vectors of A y$v = matrix with columns contain the right singular vectors of AR - chol(A)Choleski factorization of A. Returns the upper triangular factor, such that RR = A.y apply(X, MARGIN, FUN)其中X为参与运算的矩阵, FUN为上面的一个函数或“+”、“-”、“*”、“”(必须放在引号中),MARGIN=1表示按列计算,MARGIN=2表示按行计算。我们还用到sweep( )函数,命令 sweep(X, MARGIN, STATS, FUN)表示从矩阵X中按MATGIN计算STATS,并从X中除去(sweep out)。2.5.1 求均值 m apply(m, MARGIN=1, FUN=mean) # 求各行的均值1 -0.3773865 0.3864138 0.2052353 apply(m, MARGIN=2, FUN=mean) # 求各列的均值1 0.3386202 0.7320669 -0.4624578 -0.32254602.5.2 标准化 scale(m, center=T, scale=T)2.5.3 减去中位数 row.med sweep(m, MARGIN=1, STATS=row.med, FUN=”-”)第三章 多元正态分布及参数的估计3.1 绘制二元正态密度函数及其相应等高线图书上例2.2.2,1=2=1,=0时的二元正态密度函数及其等高线图: x-seq(-3,3,by=0.1) y-x f-function(x,y,a=1,b=1,r=0) a1=sqrt(a) b1=sqrt(b) d=1-r*r d1=sqrt(d)*a1*b1 z=1/(2*pi*d1)*exp(-x*x/a-y*y/b+2*r*x*y/(a1*b1)/(2*d) z Xn ln Xn A m A S R x n p u0 ln x0 xm mm a ai=solve(a) dd=xm%*%ai%*%t(xm) d2=(n-1)*dd t2=n*d2; f f ,11, 2.904546 fa fa1 3.196777 b b ,11, 0.06492834 beta beta1 0.3616381取检验水平为=0.05,由尾概率值p=0.064928340.05=,可得H0相容;同样由F=2.904546 x s s ,1 ,2 ,31, 2.879368 10.0100 -1.8090532, 10.010000 199.7884 -5.6400003, -1.809053 -5.6400 3.627658 a a$values1 200.462464 4.531591 1.301392$vectors ,1 ,2 ,31, -0.05084144 -0.57370364 0.817483512, -0.99828352 0.05302042 -0.024876553, 0.02907156 0.81734508 0.575414524.3多总体均值向量的检验4.3.1 两正态总体均值向量的检验书上例3.3.1,R程序为: n m p x ln x0 mx a1 y y0 my a2 a xy ai dd d2 t2 f pp x0 ,1 ,2 ,3 ,41, 64 43 30.5 63 y0 ,1 ,2 ,3 ,41, 51.5 51 40 70.5 a1 ,1 ,2 ,3 ,41, 490 -170 -120.0 -2452, -170 510 10.0 3103, -120 10 322.5 2604, -245 310 260.0 510 a2 ,1 ,2 ,3 ,41, 502.5 60 175 -7.52, 60.0 390 50 195.03, 175.0 50 450 -100.04, -7.5 195 -100 322.5 d2 ,11, 5.972499 t2 ,11, 29.86250 f ,11, 6.221353 pp ,11, 0.003705807取检验水平为=0.01,根据尾概率值p=0.0037058070.01=,可得应否定H0。4.3.2 多个正态总体均值向量的检验-多元方差分析书上例3.3.2,可利用类似例3.2.1或例3.3.1的程序进行计算得出结论。下面我们用R自带的manova()函数进行分析。程序如下:x-read.table(D:/data/d332.txt,header=T) x-as.matrix(x,1:4) rate-factor(gl(3,20),labels=c(group1,group2,group3) fit summary.aov(fit) Response x1 : Df Sum Sq Mean Sq F value Pr(F) rate 2 39066 19533 8.878 0.0004401 *Residuals 57 125409 2200 -Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1 Response x2 : Df Sum Sq Mean Sq F value Pr(F) rate 2 4017 2009 2.8293 0.06738 .Residuals 57 40467 710 -Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1 Response x3 : Df Sum Sq Mean Sq F value Pr(F)rate 2 13.43 6.72 0.1838 0.8326Residuals 57 2082.50 36.54 Response x4 : Df Sum Sq Mean Sq F value Pr(F)rate 2 17.20 8.60 0.4785 0.6222Residuals 57 1024.40 17.97 summary(fit, test=Wilks) Df Wilks approx F num Df den Df Pr(F) rate 2 0.66212 3.09069 8 108 0.003538 *Residuals 57 -Signif. codes: 0 * 0.001 * 0.01 * 0.05 . 0.1 1结果说明:(1) 取检验水平为0.01,则对四个指标逐项用一元方差分析方法进行检验,由p值可得三个组指标间只有第一个指标X1有显著差异(p1=0.0004401);(2) 取检验水平为0.01,利用威尔克斯 统计量得到p=0.003538 x n p x0 xm mm a a0 a1 v b df kc p0 kc1 9.755514 p01 0.02076288取检验水平为=0.05,根据尾概率值p=0.02076288 x n p ln x0 s si m for(i in 1:n)+ xx0-xi,-x0+ dd-xx0%*%si%*%t(xx0)+ print(c(i,dd)+ if(dd=1.386) m m1 7 pp pp1 0.5833333第五章 判别分析判别分析是用于判断样品所属类型的一种统计分析方法。判别分析的目的是对已知归类的数据建立由数值指标构成的归类规则,然后把这样的规则应用到未知归类的样品去归类。 在生产、科研和日常生活中经常会遇到如何根据观测到的数据资料对所研究的对象进行判别归类的问题。判别分析问题一般可以如下描述:设有k个m维总体G1,G2,Gk,其分布特征已知(如已知分布函数分别为F1(x),F2(x) ,Fk(x),或知道来自各个总体的训练样本)。对给定的一个新样品X,判断它来自哪个总体。通常我们先对预先得到的来自这k个总体的若干个样品(称为训练样品)进行检验和归类, 来决定相应的判别归类问题是否有意义及误判可能性大小。然后再对给定的一个或几个新的样品,进行判别归类,即决定它(们)自哪个总体。解决这个问题可以有多种途径, 下面我们分别讨论几种常用的方法,如距离判别、贝叶斯判别、Fisher判别等。R通用程序:首先我们要用命令library(MASS)MASS包里的lda( )针对线性判别分析。加载MASS宏包,再用函数lda( )就可完成判别分析,其基本调用格式如下:lda(formula, data, . , subset, na.action)说明: formula用法为groupsx1 + x2 +,group表明总体来源,x1,x2,表示分类指标;subset指明训练样本。具体说明见R帮助。5.1距离判别5.1.1 马氏距离马氏距离定义:样本X和总体G 的马氏距离为:d2X,G=(X-)-1(X-)其中 为总体均值向量, 为总体协方差阵。5.1.2 两总体的距离判别判别准则:判 XG1,当WX0时,判 XG2,当WX0时,待判, 当WX0时.其中WX=d2X,G2-d2X,G1,d2X,G为X到总体的距离。关于两总体距离判别的R程序(参考薛毅教授的统计建模与R软件一书):discriminiant.distance - function(TrnX1, TrnX2, TstX = NULL, var.equal = FALSE)if (is.null(TstX) = TRUE) TstX - rbind(TrnX1,TrnX2)if (is.vector(TstX) = TRUE) TstX - t(as.matrix(TstX)else if (is.matrix(TstX) != TRUE)TstX - as.matrix(TstX)if (is.matrix(TrnX1) != TRUE) TrnX1 - as.matrix(TrnX1)if (is.matrix(TrnX2) != TRUE) TrnX2 - as.matrix(TrnX2)nx - nrow(TstX)blong - matrix(rep(0, nx), nrow=1, byrow=TRUE,dimnames=list(blong, 1:nx)mu1 - colMeans(TrnX1); mu2 - colMeans(TrnX2)if (var.equal = TRUE

温馨提示

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

评论

0/150

提交评论