【发布时间】:2017-08-27 10:22:45
【问题描述】:
我正在使用 R 命令学习 cov 的特征值、特征向量,我首先尝试使用 2d 矩阵,结果似乎正确:
x <- c(60, 35, 74, 30, 80)
y <- c(58, 40, 68, 40, 70)
m <- cbind(x, y)
cv <- cov(m)
eig <- eigen(cv)
det(cv %*% eig$vectors) # 895.4
det(eig$values * diag(2) %*% eig$vectors) # 895.4
cv %*% eig$vectors
# [,1] [,2]
# x -604.7476 0.6751113
# y -391.0320 -1.0440884
solve(eig$vectors, eig$values*diag(2))
# [,1] [,2]
# [1,] -604.7476 -0.6751113
# [2,] 391.0320 -1.0440884
然后,我尝试了 3d 矩阵:
x <- c(60, 35, 74, 30, 80)
y <- c(58, 40, 68, 40, 70)
z <- c(25, 75, 50, 60, 50)
m <- cbind(x, y, z)
cv <- cov(m)
eig <- eigen(cv)
det(cv %*% eig$vectors) # -178424.4
det(eig$values * diag(3) %*% eig$vectors) # -178424.4
cv %*% eig$vectors
# [,1] [,2] [,3]
# x -639.0223 78.10751 0.56623319
# y -416.7254 43.54886 -0.89605389
# z 389.0068 174.95930 -0.02974941
solve(eig$vectors, eig$values*diag(3))
# [,1] [,2] [,3]
# [1,] -639.0223 -95.61750 0.48169216
# [2,] 340.4124 43.54886 0.94419557
# [3,] 457.2808 -166.03865 -0.02974941
我的问题是:为什么“cv %% eig$vectors”和“solve(eig$vectors, eig$valuesdiag(n))”对二维矩阵产生相同的数字,但结果3d 矩阵的对角线数是否相同?
【问题讨论】:
标签: r