共變異數矩陣

生成具有範圍變異數的隨機共變異數矩陣

  • January 9, 2017

我想生成一個隨機共變異數矩陣,其變異數在一定範圍內。

怎麼做到呢?(如果可能,在 R 中)

我試圖生成一個下三角矩陣 $ L $ 對角線在哪裡 $ D = \sqrt{V} $ , 在哪裡 $ V $ 是變異數向量。問題在於不在對角線上的其餘值。我不知道如何生成它們以便最終獲得有意義的共變異數矩陣。最後,我會做 $ C = LL^T $ (Cholesky) 為了得到一個對角線為的正定矩陣 $ V $ .

一個有用的分解是,在 R 的矩陣表示法V = S %*% C %*% S中,S是一個矩陣,其主對角線上的標準差和其他地方為零,並且C是相關矩陣。(請參閱有關對角索引的矩陣乘法的註釋。)

要獲得有意義的V,您需要具有C正(半)定義。實現此目的的一種簡單方法是使相關性成為正常數。

n <- 5  ## number of assets
C <- array(0.5, dim = c(n, n))
diag(C) <- 1

對於更多變化,我使用的一種方法是從合理範圍內對相關性進行採樣。然後,當然,不能保證C是正半定義,但你可以修復它。例如,參見repairMatrixpackage中的函式NMOF

我還沒有聽說過按你的方式做的方法。通常,您從共變異數矩陣開始並執行 Cholesky,以便能夠從具有給定共變異數矩陣的多項式正態分佈中生成隨機抽取。也許這就是你想要的?

在任何情況下,如果您需要精確指定差異,請參閱:

Hirschberger, M., Y. Qi, & R. E. Steuer (2007): “Randomly generating portfolio-selection covariance matrices with specified distributional charac- teristics.” European Journal of Operational Research 177(3): pp. 1610–1625.

但他們必須非常具體,我無法讓他們的算法工作。

但我認為更合適的是 Higham 的 Nearest PD(在 R in Matrixpackage, function中實現) nearPD

Higham, N. J. (2002): “Computing the nearest correlation matrix—a problem from finance.” IMA journal of Numerical Analysis 22(3): pp. 329–343.

引用自:https://quant.stackexchange.com/questions/31849