R语言矩阵运算函数总结.doc第33页

 2024-01-30 00:03:34  阅读 0

R语言矩阵运算函数总结 R语言矩阵运算函数总结 R语言矩阵运算函数总结 R语言矩阵运算函数总结 创建向量 在R中,可以使用函数c()创建向量,如:>x=c(1,2,3,4)>x[1]12342 创建矩阵 在 R 中,可以使用函数 () 创建矩阵。 使用该功能时,需要输入必要的参数值。 >args()(data=NA,nrow=1,ncol=1,byrow=FALSE,=NULL) 数据项为需要的矩阵元素,nrow为行数,ncol为列数。 注意,nrow 和 ncol 的乘积应该是矩阵元素的数量。 byrow 项控制元素是否可以按正序排列。 给出了行和列的名称。 例如:(1:12,nrow=3,ncol=4)[,1][,2][,3][,4][1,]14710[2,]25811[3,](1:12 , nrow=4,ncol=3)[,1][,2][,3][1,]159[2,]2610[3,]3711[4,](1:12,nrow=4,ncol = 3,byrow=T)[,1][,2][,3][1,]123[2,]456[3,]789[4,]>[1]"r1""r2""r3 " =c("c1","c2","c3","c4")[1]"c1""c2""c3""c4"(1:12,nrow=3,ncol=4,=列表( ,))11 矩阵转置 A=(1:12,nrow=3,ncol=4)A[,1][,2][,3][,4][1,]14710[2,]25811[ 3,]36912>t(A)[,1][,2][,3][1,]123[2,]456[3,]789[4,]如果函数 t() 应用于向量x,则R默认x为列向量,返回结果为行向量,例如:>x[,1][,2][,3][,4][,5][,6 ][,7][ ,8][,9][,10]""class(t(x))[1]""如果想要获取列向量,可以使用t(t(x)) ,例如:>x[,1][ 1,]1[2,]2[3,]3[4,]4[5,]5[6,]6[7,]7[8,]8 [9,]9[10,]10y= t(t(x))t(t(y))[,1][1,]1[2,]2[3,]3[4,]4[ 5,]5[6,]6[7,]7[8,]8[9,]9[10,]10矩阵加法和减法。 在R中,对同一行同一列的矩阵进行加法和减法。 可用符号:“+”、“-”,例如:A=B= (1:12,nrow=3,ncol=4)A+B[,1][,2][,3][,4] [1,][2,][3,]>AB[,1] [,2][,3][,4][1,]0000[2,]0000[3,]0000 数字与矩阵相乘c=2c*A[,1][,2][,3][ ,4][1,][2,][3,] 矩阵乘法 A 是 m×n 矩阵,B 是 n×k 矩阵矩阵。 R中求AB的可用符号为:“%*%”,例如:A=(1:12,nrow=3,ncol=4)B=(1:12,nrow=4,ncol=3)A %*%B[,1][,2][,3][1,[2 ,[3, 如果A是n×m矩阵,要得到A'B,可以使用函数()。 该函数的计算结果与t(A)%*%B相同,但效率更高。

例如: A=(1:12,nrow=4,ncol=3)B=(1:12,nrow=4,ncol=3)t(A)%*%B[,1][,2][ , 3][1,][2,[3,](A,B)[,1][,2][,3][1,][2,][3,]矩阵乘积:如果 A={ aij }m×n,B={bij}m×n,那么矩阵的乘积定义为:A⊙B={}m×n,R中的乘积可以直接使用运算符“*”,例如: A=(1:16 ,4,4)A[,1][,2][,3][,4][1,]15913[2,][3,][4,]=AA *B[,1][,2 注意][,3][,4][1,[2,][3,][4,]中两个运算符的区别。 与矩阵对角线元素相关的运算。 例如,要获取方阵的对角元素,A=(1:16,nrow=4,ncol=4)A[,1][,2][,3][,4][ 1,]15913 [2,][3,][4,]>diag(A)[1] 对向量应用 diag() 函数会产生以该向量为对角元素的对角矩阵,如: diag( diag(A ))[,1][,2][,3][,4][1,]1000[2,]0600[3,]00110[4,]00016 将 diag() 应用于正整数 z 该函数将生成 z 维单位矩阵,例如: diag(3)[,1][,2][,3][1,]100[2,]010[3,]001 矩阵求逆 矩阵求逆求解的可用函数(),应用solv(a,b)的结果是求解线性方程组ax=b。 如果默认b,则系统默认为单位矩阵,因此可用于矩阵求逆,例如:a=(rnorm(16 ),4,4)a[,1][,2][,3] [,4][1,][2,][3,][4,]>求解(a)[,1][, 2][,3][,4][1,]0.[2, ]-0.[3,]-1.[4,]>求解(a)%*%a[,1][,2][,3][,4][1,]+00[2,] +00[3,]+00[4,]+00 矩阵A的特征值和特征向量矩阵A的谱分解为A=UΛU' ,其中Λ是由特征值组成的对角矩阵A,U的列就是A的特征值对应的特征向量。在R中,可以使用函数eigen()函数来获取U和Λ,>args(eigen)( x,,=FALSE ,=FALSE) 其中: x 是矩阵,该项指定矩阵 x 是否是对称矩阵。 如果不指定,系统会自动检测x是否为对称矩阵。

matrix函数的用法_matrixplot函数_r语言中matrix函数

例如: >A=diag(4)+1>A[,1][,2][,3][,4][1,]2111[2,]1211[3,]1121[4,]1112 > =特征值(A,=T)>$[1]5111$[,1][,2][,3][,4][1,]+00[2,][3,][4,] $ %*%diag$)%*%t$)[,1][,2][,3][,4][1,]2111[2,]1211[3,]1121[4,]1112t$ ) %*%$[,1][,2][,3][,4][1,]+00[2,]+00[3,]+00[4,]+0010 正矩阵分解定矩阵A可以分解,即:A=P'P,其中P是上三角矩阵。 在R中,可以使用函数chol()对其进行分解,如:>A[,1][,2][, 3][,4][1,]2111[2,]1211[3,] 1121[4,]1112>胆(A)[,1][,2][,3][,4][1, ][2,][3,][4,]t(胆(A)) %*%chol(A)[,1][,2][,3][,4][1,]2111[2 ,]1211[3,]1121[4,](chol(A),chol( A))[,1][,2][,3][,4][1,]2111[2,]1211[ 3,]1121[4,]1112如果矩阵是对称正定矩阵,可以用分解求队列公式的值,如:prod(diag(chol(A))^2)[1]5det(A)[1]5 如果矩阵是对称正定矩阵,分解可用于求矩阵的逆。 这种情况下使用(),效果更佳。

例如:>(chol(A))[,1][,2][,3][,4][1,][2,][3,][4,]>求解(A)[,1 ] [,2][,3][,4][1,][2,][3,][4,] 矩阵奇值分解 A 是一个 m×n 矩阵,rank(A)=r,可得分解为:A=UDV',其中U'U=V'V=I。 在R中,可以使用函数scd()来分解奇怪的值,例如:A=(1:18,3,6)A[,1][,2][,3][,4][,5 ][, 6][1,][2,][3,](A)$d[1]+01+00$u[,1][,2][,3][1,]0.[ 2,] [3,]-0.$v[,1][,2][,3][1,]-0.[2,]-0.0.[3,]-0.-0.[4 ,]- 0.[5,]-0.0.[6,]-0.-0.>=svd(A)$u%*%diag$d)%*%t$v)[,1][, 2][ ,3][,4][,5][,6][1,][2,][3,]$u)%*%$u[,1][,2][,3] [1, ]+00[2,]+00[3,]+00t$v)%*%$v[,1][,2][,3][1,]+00[2,]+00 [3, ]+0012 矩阵QR分解 A是一个m×n矩阵,可以进行QR分解,A=QR,其中:Q'Q=I,在R中可以使用函数qr()进行QR分解,例如: A=(1: 16,4,4)qr(A)$qr[,1][,2][,3][,4][1,]+01+01[2,]+00 +00[3,][4 ,]$rank[1]2$qraux[1]+00+00+00$pivot[1](,"class")[1]"qr"rank 项返回的排名矩阵,qr项包括矩阵Q和R的信息,要获取矩阵Q和R,可以使用函数()和()作用于qr()的返回结果,如: >(qr(A))[,1][,2][,3][, 4][1,]+01+01[2,]+00+00[3,][4,]+00> (qr(A))[,1][,2][,3][,4 ][1,]-0.[2,]0.[3,]-0.[4,](qr(A ))%*%(qr(A))[,1][,2][, 3][,4][1,]15913[2,][3,][4,](qr(A)) )%*%(qr(A))[,1][,2][,3 ][,4][1,]+00[2,]+00[3,]+00[4,]+00 >(qr(A))[,1][,2][,3][, 4][1,]15913[2,][3,][4,] 广义逆矩阵 (Moore-)n×m矩阵 A+ 称为 m×n 矩阵 A 的摩尔逆矩阵,如果满足以下条件: AA +A=A; ②A+AA+=A+; ③(AA+)H=AA+; ④(A+A)H=A+A。 R的MASS包中的函数ginv()可以计算矩阵A的摩尔逆,例如:("MASS")>A[,1][,2][,3][,4][1, ]15913[2,][3,][4,]>ginv(A)[,1 ][,2][,3][,4][1,][2,][3,][4, ] 验证属性1:A%*%ginv(A)%*%A[,1][ ,2][,3][,4][1,]15913[2,][3,][4,]验证属性2: ginv(A)%*%A%*%ginv(A)[,1 ][,2][,3][,4][1,][2,][3,][4, ] 验证属性3:t(A%*%ginv(A))[,1][, 2][,3][,4][1,][2,][3,][4,]A% *%ginv(A)[,1][,2][,3][,4] [1,][2,][3,][4,]验证属性4:t(ginv(A)%* %A)[,1][,2][,3][,4][1, ][2,][3,][4,]>ginv(A)%*%A[,1][, 2][,3][,4][1,][2,][3,] [4,]14 矩阵乘积 n×m 矩阵 A 和 h×k 矩阵 B 的乘积是 nh×mk 维矩阵。 在R中,可以使用函数()计算乘积,例如:A=(1:4,2 ,2)B=(rep(1,4),2,2)A[,1][,2] [1,]13[2,]24B[,1][,2][1,]11[ 2,](A,B)[,1][,2][,3][,4][1 ,]1133[2,]1133[3,]2244[4,]2244 矩阵的维度在 R 中获取矩阵的维度非常简单。 函数 dim() 将返回矩阵的维数,nrow() 返回行数,ncol() 返回列数。 例如: A=(1:12,3,4)A [,1][,2][,3][,4][1,]14710[2,]25811[3,](A)[1 ]3ncol(A)[1]4 矩阵Sum的行和列,均匀行和均匀列。 在R中,求矩阵的每一行、均匀数和列和以及均匀数之和非常简单,例如: >A[,1][,2][,3][,4 ][1 ,]14710[2,]25811[3,](A)[1](A)[1](A)[1](A)[1]25811上面对于矩阵行和列的操作也是可以这样实现的使用 apply() 函数。

matrixplot函数_matrix函数的用法_r语言中matrix函数

>args(apply)(X,,FUN,...) 其中:x为矩阵,用于指定是对行还是列进行操作,=1表示对行进行操作,=2表示对列进行操作,FUN用于指定运算函数,...用于给出FUN中所需的其余参数,如:apply(A,1,sum)[1](A,1,mean)[1]apply(A,2, sum) [1](A,2,mean)[1]()函数功能强大。 我们可以对矩阵的行或列进行其他操作,例如:计算每一列的方差 A=(rnorm(100),20, 5)apply(A,2,var)[1]>apply(A ,2,(x,a)x*a,a=2)[,1][,2][,3][,4][ 1,][2,][3,]注: apply(A, 2,(x,a)x*a,a=2)与A*2效果相同。 这里的目的是解释如何应用该功能。 17 矩阵X'X的逆 在统计计算中,我们经常需要计算这样一个矩阵的逆,例如OLS预测中求系数矩阵。 R中的包“”提供了高效的计算方法。

>args()(X,=c("qr","chol","solve")) 其中:指定反演方法,使用“qr”最高效,使用“chol”最准确,使用"slove" 和 slove((x,x)) 具有相同的效果,例如: A=(rnorm(16),4,4)(A,="qr")[,1][,2][, 3][,4][ 1,][2,][3,][4,](A,="chol")[,1][,2][,3][,4][1,] [2,][3, ][4,](A,=“求解”)[,1][,2][,3][,4][1,][2,][3,][4 ,]求解((A, A))[,1][,2][,3][,4][1,][2

标签: 矩阵 函数 运算

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码