《R-多元统计分析上机讲义.doc》由会员分享,可在线阅读,更多相关《R-多元统计分析上机讲义.doc(50页珍藏版)》请在三一办公上搜索。
1、精选优质文档-倾情为你奉上应用多元统计分析R实验上机讲义应用多元统计分析Applied Multivariate Statistical Analysis第一章 绪论在实际问题中,很多随机现象涉及到的变量不是一个,而是经常是多个变量,并且这些变量间又存在一定的联系。我们经常需要处理多个变量的观测数据,如果用一元统计方法,由于忽视了各个变量之间可能存在的相关性,一般说来,丢失信息太多,分析的结果不能客观全面反映数据所包含的内容,因此,我们就需要用到多元统计的方法。多元统计分析(Multivariate Statistical Analysis)也称多变量统计分析、多因素统计分析或多元分析,是研究
2、客观事物中多变量(多因素或多指标)之间的相互关系和多样品对象之间差异以及以多个变量为代表的多元随机变量之间的依赖和差异的现代统计分析理论和方法。多元统计分析是解决实际问题的有效的数据处理方法。随着电子计算机使用的日益普及,多元统计统计方法已广泛地应用于自然科学、社会科学的各个方面。第二章 矩阵 矩阵即是二维的数组,它非常的重要,以至于需要单独讨论。由于矩阵应用非常广泛,因此对它定义了一些特殊的应用和操作,R 包括许多只对矩阵操作的操作符和函数。2.1矩阵的建立在R中最为常用的是用命令matrix( )建立矩阵,而对角矩阵常用函数diag( )建立。例如 X X ,1 ,21, 1 12, 1
3、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( ),但要求数据项的个数等于矩阵的列数的倍数, 否则
4、会出现警告。矩阵的维数使用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)其
5、中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 x
6、2,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 矩阵四则运算矩阵也可以进行四则运算(“+”、“-”、“*”、“/”,“”),分别解释为矩阵对应元素的四则运算。在实际应用中,比较有实际应用的是矩阵的相加,相减,相乘和矩阵的求逆
7、。矩阵的加减运算一般要求矩阵形状完全相同(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
8、(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()把几个矩阵列向拼成一个大矩阵,这些矩阵列数应该相同。(如果参与合并的矩阵比其它矩阵行数少或列数少,则循环不足后合并。)例如:
9、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.372281
10、3 -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)c
11、rossprod(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 t
12、he 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 containi
13、ng 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为上面的一个函数或“
14、+”、“-”、“*”、“”(必须放在引号中),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.32254
15、602.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,时的二元正态密度函数及其等高线图: 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
16、*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=,可得相容;同样由F=2.9045463.196777=Fa,也可得相容。在这种情况下,可能犯第二类错误,概率为=0.3616(假定总体均值)。4.2.2样本协
17、方差阵的特征值和特征向量书上例3.2.2,R程序为: 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
18、多总体均值向量的检验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
19、 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=,可得应否定。4.3.2 多个正态总体均值向量的检验-多元方差分析书上例3.3.2,可利用类似例3.2.1或例3.3.1的程序进行计算得出结论。下面我们用R自带的manova()函数进行分析。程序如下:x-read.table(D:/data/d332.txt,header=
20、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
21、 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
22、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值可得三个组指标间只有第一个指标有显著差异(=0.0004401);(2) 取检验水平为0.01,利用威尔克斯统计量得到p=0.0035380.01,故拒绝原假设,即认为三个组的指标之间有显著差异。4.4协方差阵的检验4.4.2 多总体协方差阵的检验书上例3.4.1,R程序略(类似例3.2.1或例3.3.1)4.5独立性检验书中例3.5.1,R程序为: x-matrix(c(3.7,48.5,9.3,5.7,65.1,8.0,3.8,47.2,10.9,3.2,53.2,12.0,+ 3.1,55.5,9.7,4.6,36.1,7.9,2.4,24.8,14.0,7.2,33.1,7.6,6.7,47.4,8.5,+ 5.4,54.1,11.3,3.9,36.9,12.7,4.5,58.8,12.3,3.5,27.8,9.8,4.5,40.2,8.4