有序相關隨機數
我不確定這有多可行。我知道如何使用cholesky 分解生成相關的隨機數。但是,假設我有一個按遞增順序排列的固定數據集(例如價格系列: $ 10, $ 20, $ 30…. $ 50)。現在,我想生成另一個系列 - 遵循相同的價格上漲順序的相關數量(所以在 100% 相關的極端情況下,數量具有完全相同的值 - 10、20、30…50。但是什麼如果相關性小於 100%,這會是什麼樣子)。這個想法是在不同的相關假設下查看對總收入 (P*Q) 曲線的影響。Cholesky 沒有工作 - 因為 Q 系列沒有遵循特定的順序。我還嘗試使用回歸說 Q = a + bP; 因此,如果我通過更改底層相關性來更改 b ..但這並不完全有效(b = correl * stdev Q/stdev P; 所以我需要生成一個具有指定相關性和 stdev 的新系列;感覺圓)。無論如何 - 這個問題本身可能很愚蠢……如果是這樣,請隨意扔雞蛋。但是,如果有’ s 可能的事情 - 我很想知道。謝謝!
對於一個小向量,您可以計算元素的所有排列併計算它們與原始向量的相關性。然後,您可以選擇那些在您想要的範圍內導致相關性的排列。
例如,在 R 中:
library("e1071") P <- seq(10, 50, by = 10) perm <- permutations(length(P)) rho <- apply(perm, 1, function(r) cor(P, P[r], method = "spearman"))
向量
rho
給出矩陣中每一行的秩相關perm
。head(data.frame(perm, rho)) ## X1 X2 X3 X4 X5 rho ## 1 1 2 3 4 5 1.0 ## 2 2 1 3 4 5 0.9 ## 3 2 3 1 4 5 0.7 ## 4 1 3 2 4 5 0.9 ## 5 3 1 2 4 5 0.7 ## 6 3 2 1 4 5 0.6
對於較大的向量並且如果允許進行替換採樣,我可能會選擇一些反演方法的變體。在 R 中,一個實現在
resampleC
NMOF 包中起作用。
為了簡單起見,我們將五個元素減少到兩個,並呼叫價格, $ P $ 和數量, $ Q $ .
建議 $ P_1 $ 和 $ P_2 $ 有共變異數矩陣 $ \Sigma $ . 你可能會說 $ Q_1 = P_1 + X_1 $ 和 $ Q_2 = P_2 + X_2 $ , 在哪裡 $ X_1 $ 和 $ X_2 $ 是您的數量的隨機元素,我們讓它們獨立且具有不同的變異數。(注:如果 $ \mathbf{P}=[10, 20] $ 和 $ \mathbf{X}=[0, 0] $ 然後你返回你的簡單場景 $ \mathbf{Q}=[10, 20] $ ).
現在我們有四個隨機量要採樣, $ P_1, P_2, Q_1, Q_2 $ .
用矩陣向量表示法寫成(用 $ \mathbf{Y,Z} $ 添加為速記):
$$ (\mathbf{Y}=)\begin{bmatrix}\mathbf{P} \ \mathbf{Q}\end{bmatrix} = \begin{bmatrix}1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 1 & 0 & 1 & 0 \ 0 & 1 & 0 & 1 \end{bmatrix} \begin{bmatrix}\mathbf{P} \ \mathbf{X}\end{bmatrix} (=\mathbf{AZ}) $$ 然後
$$ Cov(\mathbf{Y,Y}) = \mathbf{A} Cov(\mathbf{Z,Z}) \mathbf{A^T} $$ 在哪裡,
$$ Cov(\mathbf{Z,Z})=\begin{bmatrix} \Sigma_{1,1} &\Sigma_{1,2} & 0 & 0 \ \Sigma_{1,2} & \Sigma_{2,2} & 0 & 0 \ 0 & 0 & \sigma_{X_1}^2 & 0 \ 0 & 0 & 0 & \sigma_{X_2}^2 \end{bmatrix} $$ 你現在可以減少共變異數 $ \mathbf{Y} $ 通過 Cholesky 分解來降低三角形並以通常的方式採樣。如果您想以不同的方式定義 Q,請說 $ Q_2=(P_2-P_1)+conts. $ 那麼你只需要修改方程,同樣如果你希望 X 相互關聯。 這並沒有解決排序問題,但可以選擇在該過程之後對 P 及其對應的 Q 進行排序以給出有序結構。人們也可以選擇將 P 定義為一個常數向量加上隨機擾動,然後可以稍微修改方程。