Beruflich Dokumente
Kultur Dokumente
Matrix Operation in R
4
0
4
c(0, 2)
a=(2,2)
c(0, 2)
[1,]
8 16 24
[1]
7 11
x <- c(-1,5,2,-2)
y <- c(4,-3,0,1)
lx <- sqrt(sum(x^2))
ly <- sqrt(sum(y^2))
cosxy <- 1/lx * 1/ly * sum (x*y)
acos (cosxy)
[1] 2.355063
>
>
>
> A <- matrix(c(1,3,2,4,8,7),ncol=3)
> A
[1,]
[2,]
> 8*A
[1,]
[2,]
> t(A)
[1,]
[2,]
[3,]
[,1] [,2]
1
3
2
4
8
7
> ## Multiplication ##
>
> A%*%a
[1,]
[2,]
[,1]
23
29
[,1] [,2]
1
2
3
8
2
9
> B
[1,]
[2,]
[,1] [,2]
5
4
8
2
> A%*%B
[1,]
[2,]
[3,]
>
>
>
>
>
>
>
[,1] [,2]
21
8
79
28
82
26
# determinant ##
#det(A)
# Error in determinant.matrix(x, logarithm = TRUE, ...) :
# 'x' must be a square matrix
det(B)
[1] -22
> D <- matrix(c(5,8,4,2,5,6,7,8,9), ncol=3)
> det(D)
4
[1] 101
> ## DIagonal Matrix ##
> C <- diag(c(1,2,3,5))
> C
[1,]
[2,]
[3,]
[4,]
> det(C)
[1] 30
> diag(1,3)
[1,]
[2,]
[3,]
> diag(A)
[1] 1 8
> ## Inverse Matrix ###
>
> A <- matrix(c(1,3,2,4),ncol=2,byrow=T)
> A
[1,]
[2,]
[,1] [,2]
1
3
2
4
> #invers#
> B <- solve(A)
> B
[1,]
[2,]
[,1] [,2]
-2 1.5
1 -0.5
> A%*%B
[1,]
[2,]
[,1] [,2]
1
0
0
1
5
#invers#
#solve(A)
#Error in solve.default(A) :
# Lapack routine dgesv: system is exactly singular: U[2,2] = 0
[1,]
[2,]
>
>
>
[,1] [,2]
1
2
3
6
[,1] [,2]
1
3
2
4
b <- c(7,10)
x <- solve(A)%*%b
x
[1,]
[2,]
[,1]
1
2
>
>
>
> A <- cbind(x1=c(42,52,48,58),x2=c(4,5,4,3))
> meanA <- colMeans(A)
> meanA
x1 x2
50 4
> var(A[,1])
[1] 45.33333
> var(A[,2])
[1] 0.6666667
6
> var(A)
x1
x2
x1 45.33333 -2.0000000
x2 -2.00000 0.6666667
> cor(A)
x1
x2
x1 1.0000000 -0.3638034
x2 -0.3638034 1.0000000
> t(A)-meanA
x1
x2
0 -8
> ## Visualization
>
> data(iris)
> head(iris)
1
2
3
4
5
6
4.0
0.5
1.5
2.5
6.5
7.5
2.0
4.0
4.5
5.5
Sepal.Length
2.0
3.0
Sepal.Width
1.5
2.5
Petal.Length
0.5
Petal.Width
4.5
5.5
6.5
7.5
+
txt <- format(c(r, 0.123456789), digits=digits)[1]
+
txt <- paste(prefix, txt, sep="")
+
if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
+
text(0.5, 0.5, txt, cex = cex.cor * r)
+ }
> pairs(~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=iris,
+
lower.panel=panel.smooth, upper.panel=panel.cor,
+
pch=20, main=" Scatterplot Matrix")
>
>
Scatterplot Matrix
3.0
4.0
0.5
1.5
2.5
0.87
0.82
0.43
0.37
Petal.Length
0.96
5.5
0.12
4.0
4.5
Sepal.Length
6.5
7.5
2.0
1.5
2.5
0.5
Petal.Width
4.5
>
>
>
>
5.5
6.5
7.5
#install.packages("corrplot")
library(corrplot)
M <- cor(mtcars)
corrplot(M, method = "circle")
1 2 3 4 5 6 7
2.0
3.0
Sepal.Width
carb
gear
am
vs
qsec
wt
drat
hp
disp
cyl
mpg
mpg
0.8
cyl
0.6
disp
hp
0.4
drat
0.2
wt
qsec
0.2
vs
0.4
am
0.6
gear
0.8
carb
1
10
carb
gear
am
vs
qsec
wt
drat
hp
disp
cyl
mpg
mpg
0.8
cyl
0.6
disp
hp
0.4
drat
0.2
wt
qsec
0.2
vs
0.4
am
0.6
gear
0.8
carb
1
11
carb
gear
am
vs
qsec
wt
drat
hp
disp
cyl
mpg
mpg
0.8
cyl
0.6
disp
0.4
hp
0.2
drat
wt
qsec
0.2
vs
0.4
am
0.6
gear
0.8
carb
1
12
gear
am
drat
mpg
vs
qsec
disp
cyl
hp
wt
carb
carb
0.8
wt
0.6
hp
cyl
0.4
disp
0.2
qsec
vs
0.2
mpg
0.4
drat
0.6
am
0.8
gear
1
>
>
>
>
>
>
>
>
>
X1
0.035007409
X2
X3
0.001373853 -0.063052048
> #rowMeans(dt)
> cov(dt)
X1
X2
X3
X1 0.90863072 -0.1002754 -0.06591799
X2 -0.10027537 1.0821860 -0.10273225
X3 -0.06591799 -0.1027322 1.04013075
> cor(dt)
13
X1
X2
X3
X1 1.00000000 -0.10112292 -0.06780571
X2 -0.10112292 1.00000000 -0.09683043
X3 -0.06780571 -0.09683043 1.00000000
> dt2 <- cbind(X1,X2=-X1,X3=2*X1)
> cov(dt2)
X1
X2
X3
X1 0.9086307 -0.9086307 1.817261
X2 -0.9086307 0.9086307 -1.817261
X3 1.8172614 -1.8172614 3.634523
> cor(dt2)
X1 X2 X3
X1 1 -1 1
X2 -1 1 -1
X3 1 -1 1
>
>
>
0.2
0.1
0.0
Density
0.3
0.4
Histogram of X1
X1
14