UPDATE: 2021-09-25 06:02:26

はじめに

ここではデータ分析のための線形代数の章末問題をRで回答していきます。

表1.1が表すアンケートデータ

D <- matrix(c(1,3,1,1,4,5,26,
              1,2,1,3,1,3,22,
              2,3,1,1,1,5,27,
              1,2,2,1,1,5,34,
              1,2,2,2,3,2,28,
              3,4,1,1,3,5,20,
              4,1,2,3,4,4,18,
              4,4,1,2,4,4,30,
              2,3,2,4,2,4,23,
              1,2,2,1,4,1,32),
            nrow = 10, ncol = 7, byrow = TRUE)
colnames(D) <- paste0("Q", 1:7)
rownames(D) <- paste0("ID", 1:10)

# 1.1のアンケートデータ
D
##      Q1 Q2 Q3 Q4 Q5 Q6 Q7
## ID1   1  3  1  1  4  5 26
## ID2   1  2  1  3  1  3 22
## ID3   2  3  1  1  1  5 27
## ID4   1  2  2  1  1  5 34
## ID5   1  2  2  2  3  2 28
## ID6   3  4  1  1  3  5 20
## ID7   4  1  2  3  4  4 18
## ID8   4  4  1  2  4  4 30
## ID9   2  3  2  4  2  4 23
## ID10  1  2  2  1  4  1 32

4章の章末問題

4.1 表1.1の回答者7から10の設問5から7への回答を要素とする4×3行列を書け。この行列を転置した行列を求めよ。

D43 <- D[7:10, 5:7]
D43
##      Q5 Q6 Q7
## ID7   4  4 18
## ID8   4  4 30
## ID9   2  4 23
## ID10  4  1 32
t(D43)
##    ID7 ID8 ID9 ID10
## Q5   4   4   2    4
## Q6   4   4   4    1
## Q7  18  30  23   32

4.2 表1.1の回答者1から5の設問1から5への回答を要素とする5次正方行列のトレースを求めよ。

D55 <- D[1:5, 1:5]
D55
##     Q1 Q2 Q3 Q4 Q5
## ID1  1  3  1  1  4
## ID2  1  2  1  3  1
## ID3  2  3  1  1  1
## ID4  1  2  2  1  1
## ID5  1  2  2  2  3
sum(diag(D55))
## [1] 8

4.3 以下の行列の中で1から8に当てはまる行列を挙げよ。

\[ \boldsymbol{U} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \boldsymbol{V} = \begin{bmatrix} 1 & 2 & 0 & 2 & 4 \\ 0 & 0 & 2 & 3 & -6 \\ 0 & 0 & 5 & -7 & 1 \\ 0 & 0 & 0 & 7 & 5 \\ 0 & 0 & 0 & 0 & 3 \\ \end{bmatrix}, \boldsymbol{W} = \begin{bmatrix} -5 & 1 \\ 0 & 2 \\ 0 & 0 \end{bmatrix}, \\ \boldsymbol{X} = \begin{bmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{bmatrix}, \boldsymbol{Y} = \begin{bmatrix} 0 & 1 & 2 \\ 1 & -3 & 8 \\ 2 & 8 & 5 \end{bmatrix}, \boldsymbol{Z} = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}, \\ \boldsymbol{A} = \begin{bmatrix} -4 & 0 & 0 & 0 \\ 5 & 8 & 0 & 0 \\ 0 & -9 & 3 & 0 \\ 11 & 0 & 6 & 1 \end{bmatrix}, \boldsymbol{B} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \boldsymbol{C} = \begin{bmatrix} 7 & -3 & 4 \\ 0 & 5 & 1 \\ 0 & 0 & -2 \\ 0 & 0 & 0 \end{bmatrix} \] ### 4.3.1 正方行列 \(\boldsymbol{U},\boldsymbol{V},\boldsymbol{X},\boldsymbol{Y},\boldsymbol{A},\boldsymbol{B}\)

4.3.2 矩形行列

\(\boldsymbol{W},\boldsymbol{Z},\boldsymbol{C}\)

4.3.3 対角行列

\(\boldsymbol{U},\boldsymbol{B}\)

4.3.4 単位行列

\(\boldsymbol{U}\)

4.3.5 対称行列

\(\boldsymbol{U},\boldsymbol{X},\boldsymbol{Y},\boldsymbol{B}\)

4.3.6 ゼロ行列

\(\boldsymbol{Z}\)

4.3.7 上三角行列

\(\boldsymbol{U},\boldsymbol{V},\boldsymbol{B}\)

4.3.8 下三角行列

\(\boldsymbol{U},\boldsymbol{A},\boldsymbol{B}\)

4.4 ベクトルaからfと行列PからTについて、1から18の計算をせよ。演算が定義されていない場合は、「定義されていない」と答えること。

\[ \boldsymbol{a} = \begin{bmatrix} 3 \\ 4 \end{bmatrix}, \boldsymbol{b} = \begin{bmatrix} -1 \\ 5 \end{bmatrix}, \boldsymbol{c} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}, \boldsymbol{d} = \begin{bmatrix} -3 \\ 2 \\ 0 \end{bmatrix}, \boldsymbol{f} = \begin{bmatrix} 3 \\ 5 \\ -1 \end{bmatrix}, \\ \boldsymbol{P} = \begin{bmatrix} 2 & 1 \\ -1 & 2 \\ \end{bmatrix}, \boldsymbol{Q} = \begin{bmatrix} 1 & 2 \\ 2 & 4 \\ \end{bmatrix}, \boldsymbol{R} = \begin{bmatrix} 1 & 2 & 2\\ 2 & 4 & -1 \end{bmatrix}, \\ \boldsymbol{S} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \boldsymbol{T} = \begin{bmatrix} -2 & 0 \\ 1 & 2 \\ 4 & -3 \end{bmatrix} \]

a <- matrix(
    c(3,
      4),
      nrow = 2, ncol = 1, byrow = TRUE)

b <- matrix(
    c(-1,
      5),
      nrow = 2, ncol = 1, byrow = TRUE)

c <- matrix(
    c(-3,
      2),
      nrow = 2, ncol = 1, byrow = TRUE)

d <- matrix(
    c(-3,
      2,
      0),
      nrow = 3, ncol = 1, byrow = TRUE)

f <- matrix(
    c(3,
      5,
      -1),
      nrow = 3, ncol = 1, byrow = TRUE)
 
P <- matrix(
    c(2, 1,
      -1, 2),
      nrow = 2, ncol = 2, byrow = TRUE)


Q <- matrix(
    c(1, 2,
      2, 4),
      nrow = 2, ncol = 2, byrow = TRUE)

R <- matrix(
    c(1, 2, 2,
      2, 4, -1),
      nrow = 2, ncol = 3, byrow = TRUE)

S <- matrix(
    c(1, 0, 0,
      0, 0, 0,
      0, 0, 1),
      nrow = 3, ncol = 3, byrow = TRUE)

T <- matrix(
    c(-2, 0,
      1, 2,
      4, -3),
      nrow = 3, ncol = 2, byrow = TRUE)

4.4.1 \(-3R\)

-3 * R
##      [,1] [,2] [,3]
## [1,]   -3   -6   -6
## [2,]   -6  -12    3

4.4.2 \(Q+P\)

Q + P
##      [,1] [,2]
## [1,]    3    3
## [2,]    1    6

4.4.3 \(R'\)

t(R)
##      [,1] [,2]
## [1,]    1    2
## [2,]    2    4
## [3,]    2   -1

4.4.4 \(P+R\)

# 定義されない

4.4.5 \(R-T'\)

R - t(T)
##      [,1] [,2] [,3]
## [1,]    3    1   -2
## [2,]    2    2    2

4.4.6 \(5R-5T'\)

5*R - 5*t(T)
##      [,1] [,2] [,3]
## [1,]   15    5  -10
## [2,]   10   10   10

4.4.7 \(QP\)

Q %*% P
##      [,1] [,2]
## [1,]    0    5
## [2,]    0   10

4.4.8 \(2a'b(Q+P)\)

as.vector(2 * t(a) %*% b) * (Q + P)
##      [,1] [,2]
## [1,]  102  102
## [2,]   34  204

4.4.9 \(Sf\)

S %*% f
##      [,1]
## [1,]    3
## [2,]    0
## [3,]   -1

4.4.10 \(c'R\)

t(c) %*% R
##      [,1] [,2] [,3]
## [1,]    1    2   -8

4.4.11 \(dT\)

# 定義されない

4.4.12 \(PQ\)

P %*% Q
##      [,1] [,2]
## [1,]    4    8
## [2,]    3    6

4.4.13 \(RT\)

R %*% T
##      [,1] [,2]
## [1,]    8   -2
## [2,]   -4   11

4.4.14 \(T'Q\)

# 定義されない

4.4.15 \(ST\)

S %*% T
##      [,1] [,2]
## [1,]   -2    0
## [2,]    0    0
## [3,]    4   -3

4.4.16 \((P+Q)a\)

(P + Q) %*% a
##      [,1]
## [1,]   21
## [2,]   27

4.4.17 \(S(d+f)\)

S %*% (d + f)
##      [,1]
## [1,]    0
## [2,]    0
## [3,]   -1

4.4.18 \(f'd+c'a\)

t(f) %*% d + t(c) %*% a
##      [,1]
## [1,]    0

4.5 問題4.4の行列\(T\)について、1から3に答えよ。

\[ \boldsymbol{T} = \begin{bmatrix} -2 & 0 \\ 1 & 2 \\ 4 & -3 \end{bmatrix} \]

4.5.1 \(T\)を2つの3次元ベクトルに分割して\(T=[t1 t2]\)と考えたとき、2つのベクトルの長さの2乗、および内積を求めよ。

t1 <- T[,1]
t2 <- T[,2]

# ベクトルの長さの2乗
t(t1) %*% t1
##      [,1]
## [1,]   21
# ベクトルの長さの2乗
t(t2) %*% t2
##      [,1]
## [1,]   13
# 内積
t(t1) %*% t2
##      [,1]
## [1,]  -10

4.5.2 \(T'T\)を求めよ。

t(T) %*% T
##      [,1] [,2]
## [1,]   21  -10
## [2,]  -10   13

4.5.3 \(T'T\)の第(i,j)要素がベクトル\(t_i\)\(t_j\)の内積に等しいことを示せ。

TT <- t(T) %*% T

# 要素が一致する
TT[1,1] == (t(t1) %*% t1)
##      [,1]
## [1,] TRUE
TT[2,2] == (t(t2) %*% t2)
##      [,1]
## [1,] TRUE
TT[1,2] == (t(t1) %*% t2)
##      [,1]
## [1,] TRUE
TT[2,1] == (t(t1) %*% t2)
##      [,1]
## [1,] TRUE

セッション情報

sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] compiler_4.0.3    magrittr_2.0.1    ragg_1.1.3        tools_4.0.3      
##  [5] htmltools_0.5.1.1 yaml_2.2.1        stringi_1.5.3     rmarkdown_2.6    
##  [9] knitr_1.33        stringr_1.4.0     xfun_0.24         digest_0.6.27    
## [13] textshaping_0.3.5 systemfonts_1.0.2 rlang_0.4.10      evaluate_0.14