Pca
為什麼我的共變異數矩陣不是正定的?
我正在嘗試對歷史遠期匯率進行 PCA。我使用的是英格蘭銀行從 2015 年 1 月到 2018 年 5 月底的遠期利率。我計算一天到下一天的利率差異,並根據這些差異製作共變異數矩陣。矩陣為 51 x 51(因為期限是每 6 個月到 25 年加上一開始的 1 個月期限)。我的矩陣不是正定的,這對 PCA 來說是個問題。我不明白為什麼不會。數據是“乾淨的”(沒有間隙)。
“非正定”是一種代數陳述,其中一些變數是彼此的線性組合。那麼問題就變成了追踪有問題的變數之一。
我為此使用了兩種蠻力方法,但在存在大量資訊的情況下都無法很好地擴展。一種方法是檢查成對相關和偏相關,尋找非常高的r 值,例如r >=0.95。第二種策略更為具體,涉及審查作為 PCA 輸出的結果組件中的可變級別分數。通過按變數的前幾個組件對變數進行排序,可以辨識具有相同或高度相似的分值的變數。
我確信其他QF參與者有更複雜的策略,可以很好地擴展到大數據。
你沒有顯示數據,所以只能猜測。
如果您已經從沒有缺失值的完整數據集中計算了共變異數矩陣(並且您沒有使用一些奇怪的估計器),那麼獲得負特徵值的唯一方法是捨入誤差:在這種情況下,那些負特徵值實際上是零:所以只需用零替換它們。請參閱http://comisef.wikidot.com/tutorial:repairingcorrelation。
另一個問題是您的共變異數矩陣是否具有滿秩(即是確定的,而不僅僅是半確定的)。如果您至少有
n+1
觀察值,那麼共變異數矩陣將繼承原始數據矩陣的秩(至少在數學上;在數值上,共變異數矩陣的秩可能會因為捨入誤差而降低)。所以你應該檢查你的原始數據矩陣,它的等級是否為 51 或更少。