UPDATE: 2021-09-26 13:55:35
<- 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} -1 & 2 \\ 2 & -1 \end{bmatrix}, (2) \begin{bmatrix} 3 & -1 \\ -1 & 3 \end{bmatrix}, (3) \begin{bmatrix} -1 & \sqrt{2} \\ \sqrt{2} & 0 \end{bmatrix}, \\ (4) \begin{bmatrix} 0 & 2 & -1 \\ 2 & 0 & 0 \\ -1 & 0 & 0 \end{bmatrix}, (5) \begin{bmatrix} 2 & \sqrt{2} & 0 \\ \sqrt{2} & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}, (6) \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix} \]
<- matrix(
m1 c(-1, 2,
2,-1),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m2 c(3,-1,
-1, 3),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m3 c(-1, sqrt(2),
sqrt(2), 0),
nrow = 2, ncol = 2, byrow = TRUE)
<- matrix(
m4 c(0, 2,-1,
2, 0, 0,
-1, 0, 0),
nrow = 3, ncol = 3, byrow = TRUE)
<- matrix(
m5 c(2, sqrt(2), 0,
sqrt(2), 1, 0,
0, 0, 1),
nrow = 3, ncol = 3, byrow = TRUE)
<- matrix(
m6 c(2, 0,
0, 2),
nrow = 2, ncol = 2, byrow = TRUE)
# 固有ベクトルは1/sqrt(2)であり、基準化されている
<- eigen(m1)
eigen_m1 <- eigen_m1$values
eigen_m1_val <- eigen_m1$vectors
eigen_m1_vec eigen_m1_val;eigen_m1_vec
## [1] 1 -3
## [,1] [,2]
## [1,] 0.7071068 0.7071068
## [2,] 0.7071068 -0.7071068
# 固有ベクトルは1/sqrt(2)であり、基準化されている
<- eigen(m2)
eigen_m2 <- eigen_m2$values
eigen_m2_val <- eigen_m2$vectors
eigen_m2_vec eigen_m2_val;eigen_m2_vec
## [1] 4 2
## [,1] [,2]
## [1,] -0.7071068 -0.7071068
## [2,] 0.7071068 -0.7071068
# 固有ベクトルは基準化されている
<- eigen(m3)
eigen_m3 <- eigen_m3$values
eigen_m3_val <- eigen_m3$vectors
eigen_m3_vec eigen_m3_val;eigen_m3_vec
## [1] 1 -2
## [,1] [,2]
## [1,] -0.5773503 -0.8164966
## [2,] -0.8164966 0.5773503
# 固有ベクトルは基準化されている
<- eigen(m4)
eigen_m4 <- eigen_m4$values
eigen_m4_val <- eigen_m4$vectors
eigen_m4_vec eigen_m4_val;eigen_m4_vec
## [1] 2.236068 0.000000 -2.236068
## [,1] [,2] [,3]
## [1,] -0.7071068 0.0000000 0.7071068
## [2,] -0.6324555 0.4472136 -0.6324555
## [3,] 0.3162278 0.8944272 0.3162278
# 固有ベクトルは基準化されている
<- eigen(m5)
eigen_m5 <- eigen_m5$values
eigen_m5_val <- eigen_m5$vectors
eigen_m5_vec eigen_m5_val;eigen_m5_vec
## [1] 3.000000e+00 1.000000e+00 2.220446e-15
## [,1] [,2] [,3]
## [1,] 0.8164966 0 0.5773503
## [2,] 0.5773503 0 -0.8164966
## [3,] 0.0000000 1 0.0000000
# 固有値は重根
# ベクトルは基準化されていない
<- eigen(m6)
eigen_m6 <- eigen_m6$values
eigen_m6_val <- eigen_m6$vectors
eigen_m6_vec eigen_m6_val;eigen_m6_vec
## [1] 2 2
## [,1] [,2]
## [1,] 0 -1
## [2,] 1 0
all.equal(sum(diag(m1)), sum(eigen_m1_val))
## [1] TRUE
all.equal(sum(diag(m2)), sum(eigen_m2_val))
## [1] TRUE
all.equal(sum(diag(m3)), sum(eigen_m3_val))
## [1] TRUE
all.equal(sum(diag(m4)), sum(eigen_m4_val))
## [1] TRUE
all.equal(sum(diag(m5)), sum(eigen_m5_val))
## [1] TRUE
all.equal(sum(diag(m6)), sum(eigen_m6_val))
## [1] TRUE
all.equal(det(m1), prod(eigen_m1_val))
## [1] TRUE
all.equal(det(m2), prod(eigen_m2_val))
## [1] TRUE
all.equal(det(m3), prod(eigen_m3_val))
## [1] TRUE
all.equal(det(m4), prod(eigen_m4_val))
## [1] TRUE
all.equal(det(m5), prod(eigen_m5_val))
## [1] TRUE
all.equal(det(m6), prod(eigen_m6_val))
## [1] TRUE
t(eigen_m1_vec) %*% m1 %*% eigen_m1_vec
## [,1] [,2]
## [1,] 1 0
## [2,] 0 -3
t(eigen_m2_vec) %*% m2 %*% eigen_m2_vec
## [,1] [,2]
## [1,] 4 0
## [2,] 0 2
t(eigen_m3_vec) %*% m3 %*% eigen_m3_vec
## [,1] [,2]
## [1,] 1 0
## [2,] 0 -2
t(eigen_m4_vec) %*% m4 %*% eigen_m4_vec
## [,1] [,2] [,3]
## [1,] 2.236068e+00 0 -5.828671e-16
## [2,] 0.000000e+00 0 0.000000e+00
## [3,] -4.163336e-16 0 -2.236068e+00
t(eigen_m5_vec) %*% m5 %*% eigen_m5_vec
## [,1] [,2] [,3]
## [1,] 3.000000e+00 0 8.881784e-16
## [2,] 0.000000e+00 1 0.000000e+00
## [3,] 8.643898e-16 0 -6.865411e-17
t(eigen_m6_vec) %*% m6 %*% eigen_m6_vec
## [,1] [,2]
## [1,] 2 0
## [2,] 0 2
\[ \begin{bmatrix} 0 & 2 & 0 & 0 \\ 2 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \]
<- matrix(
m c(0, 2, 0, 0,
2, 0, 0, 0,
0, 0, 0, 1,
0, 0, 1, 0),
nrow = 4, ncol = 4, byrow = TRUE)
m
## [,1] [,2] [,3] [,4]
## [1,] 0 2 0 0
## [2,] 2 0 0 0
## [3,] 0 0 0 1
## [4,] 0 0 1 0
<- eigen(m)$vectors
m_eigen_vec <- t(combn(4,2))
conbination
for (i in 1:nrow(conbination)){
<- conbination[i,]
tmp <- m_eigen_vec[, tmp[1]]
m1 <- m_eigen_vec[, tmp[2]]
m2 print(sprintf("vec%.0f・vec%.0f: %.0f", tmp[1], tmp[2], t(m1) %*% m2))
}
## [1] "vec1・vec2: 0"
## [1] "vec1・vec3: 0"
## [1] "vec1・vec4: 0"
## [1] "vec2・vec3: 0"
## [1] "vec2・vec4: 0"
## [1] "vec3・vec4: 0"
<- D[1:5, 5:6]
D56 <- nrow(D56)
n <- mean(D56[,1])
D56_Q5_mean <- mean(D56[,2])
D56_Q6_mean <- cbind(D56[,1] - D56_Q5_mean, D56[,2] - D56_Q6_mean)
D56_hensa D56_hensa
## [,1] [,2]
## ID1 2 1
## ID2 -1 -1
## ID3 -1 1
## ID4 -1 1
## ID5 1 -2
<- (1/sqrt(n)) * D56_hensa
c c
## [,1] [,2]
## ID1 0.8944272 0.4472136
## ID2 -0.4472136 -0.4472136
## ID3 -0.4472136 0.4472136
## ID4 -0.4472136 0.4472136
## ID5 0.4472136 -0.8944272
# 1/n * t(D56_hensa) %*% D56_hensa
<- t(c) %*% c
cov cov
## [,1] [,2]
## [1,] 1.6 -0.2
## [2,] -0.2 1.6
<- eigen(cov)
eigen_cov eigen_cov
## eigen() decomposition
## $values
## [1] 1.8 1.4
##
## $vectors
## [,1] [,2]
## [1,] -0.7071068 -0.7071068
## [2,] 0.7071068 -0.7071068
<- eigen_cov$vectors
eigen_cov_vec eigen_cov_vec
## [,1] [,2]
## [1,] -0.7071068 -0.7071068
## [2,] 0.7071068 -0.7071068
# 対角化
# 1. eigen_cov$values
# 2. (1/sqrt(n) * t(eigen_cov_vec) %*% t(D56_hensa)) %*% (1/sqrt(n) * D56_hensa %*% eigen_cov_vec)
# 1と2は同じ
# (1/sqrt(n) * eigen_cov_vec %*% t(D56_hensa))
<- c %*% eigen_cov$vectors
rotate rotate
## [,1] [,2]
## ID1 -0.3162278 -0.9486833
## ID2 0.0000000 0.6324555
## ID3 0.6324555 0.0000000
## ID4 0.6324555 0.0000000
## ID5 -0.9486833 0.3162278
plot(rotate, xlim = c(-1, 1), ylim = c(-1, 1), asp = TRUE)
text(rotate, row.names(rotate), cex=0.6, pos=4, col="red")
arrows(0, 0, eigen_cov_vec[1,1], eigen_cov_vec[2,1])
arrows(0, 0, eigen_cov_vec[1,2], eigen_cov_vec[2,2])
text(t(eigen_cov_vec), c("Q5","Q6"), cex=0.6, pos=4, col="blue")
abline(h = 0, v = 0)
# セッション情報
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] highr_0.8 knitr_1.33 stringr_1.4.0 xfun_0.24
## [13] digest_0.6.27 textshaping_0.3.5 systemfonts_1.0.2 rlang_0.4.10
## [17] evaluate_0.14