行业知识
【应用多元统计分析】--数据矩阵及R语言表示
�� 在多元分析中,数据通常以矩阵的形式出现,下面结合R语言介绍基本的矩阵运算。主要包括:创建矩阵向量,矩阵加减、乘积,矩阵的逆,行列式的值,特征值与特征向量,QR分解,奇异值分解,取矩阵的上下三角元素,向量化算子等。
()1.创建一个向量(随机变量、一维数组)
用函数c()来创建一个向量
#创建向量x1=c(171,175,159,155,152,158,154,164,168,166,159,164)x2=c(57,64,41,38,35,44,41,51,57,49,47,46)length(x1)#返回向量长度length(x2)mode(x1)#返回向量的数据类型
2.创建一个矩阵(二维数组)
1)合并命令
可以用rbind()、cbind()将两个或两个以上的向量或矩阵合并起来,rbind()表示按行合并,cbind()按列合并。
()#创建矩阵rbind(x1,x2)#按行合并cbind(x1,x2)#按列合并
2)生成矩阵
matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)#data为必要的矩阵元素,nrow为行数,ncol为列数,这俩乘积应为矩阵元素个数#byrow控制排列元素是否按行进行#dimnames给定行和列的名称
matrix(x1,nrow=3,ncol=4)#生成矩阵,matrix(x1,nrow=4,ncol=3)
3.矩阵转置
A为m*n矩阵,A'为其转置矩阵,求A’在R中可用函数t()或transpose()
#矩阵转置A=matrix(1:12,nrow=3,ncol=4)t(A)#用函数t()或transpose()转置
4.矩阵相加减
#矩阵相加减A=B=matrix(1:12,nrow=3,ncol=4)A+B
5.矩阵相乘
A为m*n矩阵,B为n*k矩阵,在R 中求AB可用符号“%*%”
#矩阵相乘A=matrix(1:12,nrow=3,ncol=4)B=matrix(1:12,nrow=4,ncol=3)A%*%B
6.矩阵对角元素相关运算
#矩阵对角元素相关运算A=matrix(1:16,nrow=4,ncol = 4)diag(A)#产生以这个向量为对角元素的对角矩阵#对一个正整数k应用diag()函数将产生k维单位矩阵diag(diag(A))diag(3)
7.矩阵求逆
矩阵求逆可用函数solve(),应用solve(A,b)运算结果可解线性方程组Ax=b,
若b缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆
#矩阵求逆A=matrix(rnorm(16),4,4);Asolve(A)#矩阵求逆可用函数solve(),应用solve(A,b)运算结果可解线性方程组Ax=b,#若b缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆
8.矩阵的特征值与特征向量
矩阵A的谱分解为A=U^U',其中^是由A的特征值组成的对角矩阵,
U的列为A的特征值对应的特征向量,可以用函数eigen()得到U和A
eigen(x,symmetric,only.values=FALSE,EISPACK = FALSE)
其中x为矩阵,symmetric项指定矩阵x是否为对称矩阵,不指定则系统自动检测
#矩阵特征值与特征向量A=diag(4)+1AA.e=eigen(A,symmetric = T)A.e#矩阵A的谱分解为A=U^U',其中^是由A的特征值组成的对角矩阵,#U的列为A的特征值对应的特征向量,可以用函数eigen()得到U和A#eigen(x,symmetric,only.values=FALSE,EISPACK = FALSE)#其中x为矩阵,symmetric项指定矩阵x是否为对称矩阵,不指定则系统自动检测A.e$vectors%*%diag(A.e$values)%*%t(A.e$vectors)
9.矩阵的Choleskey分解
对于正定矩阵A,可对其进行Choleskey分解,A=P'P,P为上三角矩阵
在R中可以用chol()函数进行Choleskey分解
#矩阵的Choleskey分解#对于正定矩阵A,可对其进行Choleskey分解,A=P'P,P为上三角矩阵#在R中可以用chol()函数进行Choleskey分解A.e=chol(A)A.et(A.e)%*%A.e
10.矩阵奇异值分解
A为m*n矩阵,rank(A)=r,可以分解为A=UDV',其中U'U=V'V=I
在R中可以用函数svd()进行奇异值分解
#矩阵奇异值分解#A为m*n矩阵,rank(A)=r,可以分解为A=UDV',其中U'U=V'V=I#在R中可以用函数svd()进行奇异值分解A=matrix(1:18,3,6)AA.s=svd(A)A.sA.s$u%*%diag(A.s$d)%*%t(A.s$v)
11.矩阵QR分解
A为m*n矩阵时可以进行QR分解,A=QR
其中Q'Q=I,在R中可以用函数qr()进行QR分解
#矩阵QR分解#A为m*n矩阵时可以进行QR分解,A=QR#其中Q'Q=I,在R中可以用函数qr()进行QR分解A=matrix(1:16,4,4)qr(A)
12.矩阵kronecker积
n*m矩阵A与h*k矩阵B的kronecker积为一个nh*mk维矩阵
在R中,kronecker积可以用函数kronecker()来计算
#矩阵kronecker积#n*m矩阵A与h*k矩阵B的kronecker积为一个nh*mk维矩阵#在R中,kronecker积可以用函数kronecker()来计算A=matrix(1:4,2,2)AB=matrix(rep(1,4),2,2)Bkronecker(A,B)
13.矩阵的维数
函数dim()将返回一个矩阵的维数
nrow()返回行数,ncol()返回列数
#矩阵的维数#函数dim()将返回一个矩阵的维数#nrow()返回行数,ncol()返回列数A=matrix(1:12,3,4)Adim(A)nrow(A)ncol(A)
14.矩阵的行和、列和、行平均数与列平均
#矩阵的行和、列和、行平均数与列平均rowSums(A)rowMeans(A)colSums(A)colMeans(A)#还可以用apply()函数实现:apply(X,MARGIN,FUN,......)#x为矩阵,MARGIN指定对行还是对列操作,1表示行运算,2为对列运算#FUN用来指定运算函数,“...”用来指定FUN中需要的其他参数apply(A,1,sum)apply(A,1,mean)apply(A,2,sum)apply(A,2,mean)A=matrix(rnorm(100),20,5)apply(A,2,var)#计算每一列的方差apply(A,2,function(x,a)x*a,a=2)
下一篇:服务器被黑怎么取证的?