簡體   English   中英

系統在計算上是奇異的:R 中的倒數條件數

[英]System is computationally singular: reciprocal condition number in R

x <- matrix(rnorm(80, mean = 0, sd = 0.1), 8, 8)
c <- cov(x)
solve(c)

我收到錯誤消息:

solve.default(c) 中的錯誤:系統在計算上是奇異的:倒數條件數 = 6.57889e-18

我一直在試圖找出問題背后的原因,Stack Overflow 上的其他線程已經表明這個問題可能是由於奇異矩陣、高度相關的變量、線性組合等造成的。但是,我認為rnorm會避免提到的問題。

對於我正在使用的另一個矩陣 det() 給出8.313969e-95 ,但它仍然可以使用solve()可逆。

兩個基本的線性代數性質:

  1. 奇異(方)矩陣是不可逆的(方)矩陣。
  2. 如果行列式為零,則矩陣不可逆。

如果你檢查

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:有一篇關於協方差矩陣行列式解釋的交叉驗證的好文章 看看你為什么會看到你所看到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM