UPDATE: 2021-09-25 06:02:19
<- matrix(c(1,3,1,1,4,5,26,
D 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
\[ (1) \begin{bmatrix} 2 & 1 \\ -1 & -2 \end{bmatrix}, (2) \begin{bmatrix} 3 & 2 & 0 \\ 7 & 4 & 0 \end{bmatrix}, (3) \begin{bmatrix} 1 & 2 \\ -1 & -2 \\ \end{bmatrix}, \\ (4) \begin{bmatrix} 7 & 0 & 2 \\ 5 & -3 & 4 \\ -9 & 1 & 0 \end{bmatrix}, (5) \begin{bmatrix} 3 & 1 & 7 \\ 2 & -3 & 1 \\ -5 & 1 & 9 \end{bmatrix}, (6) \begin{bmatrix} -1 & 7 & 2 \\ 1 & -5 & -2 \\ -1 & 9 & 2 \end{bmatrix} \]
<- matrix(
m1 c(2,1,
-1,-2),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m2 c(3,2,0,
7,4,0),
nrow = 2, ncol = 3, byrow = TRUE)
<- matrix(
m3 c(1,2,
-1,-2),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m4 c(7,0,2,
5,-3,4,
-9,1,0),
nrow = 3, ncol = 3, byrow = TRUE)
<- matrix(
m5 c(3,1,7,
2,-3,1,
-5,1,9),
nrow = 3, ncol = 3, byrow = TRUE)
<- matrix(
m6 c(-1,7,2,
1,-5,-2,
-1,9,2),
nrow = 3, ncol = 3, byrow = TRUE)
# m1[1,1]*m1[2,2] - m1[1,2]*m1[2,1]
det(m1)
## [1] -3
# 定義されない
# m3[1,1]*m3[2,2] - m3[1,2]*m3[2,1]
det(m3)
## [1] 0
det(m4)
## [1] -72
# 第1行の−2倍を第2行に加える
2,] <- m4[2,] + m4[1,]*-2
m4[# 第1行と第3列で余因子展開
# m[i,j]*(-1)^(i+j)*|m|
1,3] * (-1)^(1+3) * det(m4[-1,-3]) m4[
## [1] -72
det(m5)
## [1] -198
det(m6)
## [1] 0
\[ (1) \begin{bmatrix} 4 & 1 \\ 0 & 0 \end{bmatrix}, (2) \begin{bmatrix} 1 & -5 \\ -2 & 10 \\ -3 & 15 \end{bmatrix}, (3) \begin{bmatrix} 0 & 0 & 0 \\ 0 & 2 & 1 \end{bmatrix}, \\ (4) \begin{bmatrix} -2 & 1 \\ 8 & 7 \\ \end{bmatrix}, (5) \begin{bmatrix} -5 & 1 & 6 \\ 3 & -3 & 4 \\ 1 & 1 & 7 \end{bmatrix}, (6) \begin{bmatrix} 4 & -3 & -7 & 1 & 8 \\ 1 & 7 & 6 & -8 & 4 \end{bmatrix} \]
library(matlib)
<- matrix(
m1 c(4,1,
0,0),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m2 c(1,-5,
-2,10,
-3,15),
nrow = 3, ncol = 2, byrow = TRUE)
<- matrix(
m3 c(0,0,0,
0,2,1),
nrow = 2, ncol = 3, byrow = TRUE)
<- matrix(
m4 c(-2,1,
8,7),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m5 c(-5,1,6,
3,-3,4,
1,1,7),
nrow = 3, ncol = 3, byrow = TRUE)
<- matrix(
m6 c(4,-3,-7,1,8,
1,7,6,-8,4),
nrow = 2, ncol = 5, byrow = TRUE)
# 第2行はゼロベクトル、第1行は非ゼロベクトル
# 階数は1
R(m1)
## [1] 1
# 第1列を−5倍すれば、第2列になる
# 階数は1
R(m2)
## [1] 1
# 第1行はゼロベクトル、第2行は非ゼロベクトル
# 階数は1
# 列、行ベクトルは、一方が他方のスカラ倍ではなく
# 階数は2
R(m4)
## [1] 2
# 階数は3
R(m5)
## [1] 3
# 2×5行列であり、階数は2以下
# 階数は2
R(m6)
## [1] 2
\[ \begin{bmatrix} 2 & 3 & 4 & 5 \\ 0 & 0 & -1 & -4 \\ 0 & 1 & 3 & 0 \\ 1 & 3 & 0 & 7 \end{bmatrix} \]
<- matrix(
m c(2,3,4,5,
0,0,-1,-4,
0,1,3,0,
1,3,0,7),
nrow = 4, ncol = 4, byrow = TRUE)
<- 1
i <- 1
j <- m[-1*i, -1*j]
m11 <- (-1)^(i+j) * det(m11)
cm11 cm11
## [1] 43
<- 1
i <- 2
j <- m[-1*i, -1*j]
m12 <- (-1)^(i+j) * det(m12)
cm12 cm12
## [1] -12
<- 3
i <- 2
j <- m[-1*i, -1*j]
m32 <- (-1)^(i+j) * det(m32)
cm32 cm32
## [1] 25
<- 2
i <- 3
j1 <- 4
j2 *(-1)^(i+j1)*det(m[-1*i, -1*j1]) + m[i, j2]*(-1)^(i+j2)*det(m[-1*i, -1*j2]) m[i, j1]
## [1] 61
<- 1
i1 <- 4
i2 <- 1
j *(-1)^(i1+j)*det(m[-1*i1, -1*j]) + m[i2, j]*(-1)^(i2+j)*det(m[-1*i2, -1*j]) m[i1, j]
## [1] 61
# 第1行から第4行の2倍を引く
1,] <- m[1,] - 2*m[4,]
m[<- 4
i <- 1
j *(-1)^(i+j)*det(m[-1*i, -1*j]) m[i, j]
## [1] 61
\[ \begin{bmatrix} 2 & 7 & 6 & -8 & 2 \\ 0 & 0 & 5 & 0 & 2\\ 0 & -4 & -1 & 9 & -3 \\ 0 & 0 & 0 & 2 & 7 \\ 0 & 0 & 0 & 1 & 0 \end{bmatrix} \] ### 5.4.1 第1列で展開する
# この問題の回答はとばす
# 行列式の答えとして−280が得られる
\[ (1) \begin{bmatrix} 1 & 4 \\ -1 & 5 \end{bmatrix}, (2) \begin{bmatrix} -1 & 2 \\ 2 & -4 \end{bmatrix}, (3) \begin{bmatrix} 3 & 2 & 1 \\ -5 & 1 & 2 \end{bmatrix}, (4) \begin{bmatrix} 1 & 0 & -1 \\ 2 & -2 & 0 \\ 0 & 3 & 1 \end{bmatrix} \]
<- matrix(
m1 c(1,4,
-1,5),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m2 c(-1,2,
2,-4),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m3 c(3,2,1,
-5,1,2),
nrow = 2, ncol = 3, byrow = TRUE)
<- matrix(
m4 c(1,0,-1,
2,-2,0,
0,3,1),
nrow = 3, ncol = 3, byrow = TRUE)
det(m1)
## [1] 9
solve(m1)
## [,1] [,2]
## [1,] 0.5555556 -0.4444444
## [2,] 0.1111111 0.1111111
# 行列式は0であり、正則行列ではない
det(m2)
## [1] 0
# 定義されない
det(m4)
## [1] -8
solve(m4)
## [,1] [,2] [,3]
## [1,] 0.25 0.375 0.25
## [2,] 0.25 -0.125 0.25
## [3,] -0.75 0.375 0.25
\[ (1) \begin{bmatrix} 6 & 4 \\ -8 & 3 \end{bmatrix}, (2) \begin{bmatrix} 2 & 1 & -2 \\ 1 & -2 & 4 \\ 0 & 2 & 5 \end{bmatrix} \]
<- matrix(
m1 c(6,4,
-8,3),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m2 c(2,1,-2,
1,-2,4,
0,2,5),
nrow = 3, ncol = 3, byrow = TRUE)
<- m1[,1]
m11 <- m1[,2]
m12 # 内積は0で直交
t(m11) %*% m12
## [,1]
## [1,] 0
# 各ベクトルの長さ
<- sqrt(sum(m11^2))
norm_m11 norm_m11
## [1] 10
<- sqrt(sum(m12^2))
norm_m12 norm_m12
## [1] 5
# 基準化したベクトルを列に持つ
<- cbind((m1[,1] / norm_m11), (m1[,2] / norm_m12))
m1_scale m1_scale
## [,1] [,2]
## [1,] 0.6 0.8
## [2,] -0.8 0.6
# 直交行列の転置行列と直交行列の積は単位行列
t(m1_scale) %*% m1_scale
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
<- m2[,1]
m21 <- m2[,2]
m22 <- m2[,3]
m23 # 内積は0で直交
t(m21) %*% m22
## [,1]
## [1,] 0
t(m22) %*% m23
## [,1]
## [1,] 0
t(m23) %*% m21
## [,1]
## [1,] 0
# 各ベクトルの長さ
<- sqrt(sum(m21^2))
norm_m21 norm_m21
## [1] 2.236068
<- sqrt(sum(m22^2))
norm_m22 norm_m22
## [1] 3
<- sqrt(sum(m23^2))
norm_m23 norm_m23
## [1] 6.708204
# 基準化したベクトルを列に持つ
<- cbind((m2[,1] / norm_m21), (m2[,2] / norm_m22), (m2[,3] / norm_m23))
m2_scale m2_scale
## [,1] [,2] [,3]
## [1,] 0.8944272 0.3333333 -0.2981424
## [2,] 0.4472136 -0.6666667 0.5962848
## [3,] 0.0000000 0.6666667 0.7453560
# 直交行列の転置行列と直交行列の積は単位行列
t(m2_scale) %*% m2_scale
## [,1] [,2] [,3]
## [1,] 1 0 0
## [2,] 0 1 0
## [3,] 0 0 1
<- D[1:5, 5:6]
D56 D56
## Q5 Q6
## ID1 4 5
## ID2 1 3
## ID3 1 5
## ID4 1 5
## ID5 3 2
<- mean(D56[,1])
D5_m <- mean(D56[,2])
D6_m
<- cbind(D56[,1] - D5_m, D56[,2] - D6_m)
D_hensa D_hensa
## [,1] [,2]
## ID1 2 1
## ID2 -1 -1
## ID3 -1 1
## ID4 -1 1
## ID5 1 -2
plot(D_hensa, xlim = c(-3, 3), ylim = c(-3, 3))
abline(h = 0, v = 0)
sum(D_hensa[,1]^2)
## [1] 8
sum(D_hensa[,2]^2)
## [1] 8
sum(D_hensa[,1]^2)/nrow(D_hensa)
## [1] 1.6
sum(D_hensa[,2]^2)/nrow(D_hensa)
## [1] 1.6
nrow(D_hensa) * sum(D_hensa[,1]^2)/nrow(D_hensa) == sum(D_hensa[,1]^2)
## [1] TRUE
nrow(D_hensa) * sum(D_hensa[,2]^2)/nrow(D_hensa) == sum(D_hensa[,2]^2)
## [1] TRUE
<- matrix(c(sqrt(3)/2, 1/2,
R -1/2, sqrt(3)/2),
nrow = 2, ncol = 2, byrow = TRUE)
<- R %*% t(D_hensa)
R1 R1
## ID1 ID2 ID3 ID4 ID5
## [1,] 2.2320508 -1.3660254 -0.3660254 -0.3660254 -0.1339746
## [2,] -0.1339746 -0.3660254 1.3660254 1.3660254 -2.2320508
<- D_hensa %*% t(R)
R2 R2
## [,1] [,2]
## ID1 2.2320508 -0.1339746
## ID2 -1.3660254 -0.3660254
## ID3 -0.3660254 1.3660254
## ID4 -0.3660254 1.3660254
## ID5 -0.1339746 -2.2320508
sum(R2[,1]^2)
## [1] 7.133975
sum(R2[,2]^2)
## [1] 8.866025
all.equal(sum(D_hensa[, 1] ^ 2) + sum(D_hensa[, 2] ^ 2), sum(R2[, 1] ^ 2) + sum(R2[, 2] ^ 2))
## [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
##
## other attached packages:
## [1] matlib_0.9.5
##
## loaded via a namespace (and not attached):
## [1] zip_2.1.1 Rcpp_1.0.6 highr_0.8 cellranger_1.1.0
## [5] compiler_4.0.3 pillar_1.6.2 forcats_0.5.1 tools_4.0.3
## [9] digest_0.6.27 jsonlite_1.7.2 evaluate_0.14 lifecycle_1.0.0
## [13] tibble_3.1.3 pkgconfig_2.0.3 rlang_0.4.10 openxlsx_4.2.3
## [17] crosstalk_1.1.1 curl_4.3 yaml_2.2.1 haven_2.3.1
## [21] xfun_0.24 rio_0.5.16 stringr_1.4.0 knitr_1.33
## [25] vctrs_0.3.8 htmlwidgets_1.5.3 systemfonts_1.0.2 hms_1.0.0
## [29] data.table_1.13.6 R6_2.5.0 textshaping_0.3.5 fansi_0.4.2
## [33] readxl_1.3.1 rgl_0.107.10 foreign_0.8-80 rmarkdown_2.6
## [37] carData_3.0-4 car_3.0-10 magrittr_2.0.1 htmltools_0.5.1.1
## [41] ellipsis_0.3.2 MASS_7.3-53 abind_1.4-5 xtable_1.8-4
## [45] ragg_1.1.3 utf8_1.1.4 stringi_1.5.3 crayon_1.4.0