x <- matrix(rnorm(80, mean = 0, sd = 0.1), 8, 8)
c <- cov(x)
solve(c)
我收到错误消息:
solve.default(c)中的错误:系统在计算上是单个的: 互惠条件编号= 6.57889e-18
我一直在试图找出问题背后的原因,而Stack Overflow上的其他线程都认为该问题可能是由于奇异矩阵,高度相关的变量,线性组合等引起的。但是,我认为{{ 1}}可以避免上述问题。
对于另一个我正在使用det()的矩阵给出rnorm
,但是它仍然可以与8.313969e-95
求逆。
答案 0 :(得分:3)
两个基本线性代数性质:
如果您检查
set.seed(2018);
x <- matrix(rnorm(80, mean = 0, sd = 0.1), 8, 8)
c <- cov(x)
det(c)
#[1] -3.109158e-38
实际上,det(c)
为零(在机器精度范围内);因此c
不可逆,而这正是solve(c)
试图做的。
PS 1:看看?solve
,看得出solve(a)
将返回a
的反数。
PS 2:关于协方差矩阵的行列式的解释,在交叉验证中有一个nice post。看一看,了解为什么看到的东西。