2011-01-17 117 views
0

我正在做一個項目,其中包括製作時間序列,其中多個時間序列的隨機部分之一具有特定的協方差。問題是我的很多項目要求我至少有一定程度的控制權,以便說明不同時間序列之間的協方差是怎樣的,而且我已經找不到(用相對速度)找到協方差矩陣的方法完全一旦大小超過〜30。如何創建所需的(大)協方差/相關矩陣?

所以總結起來:
我想使對稱矩陣與N〜,在某些地方有需要的號碼50,零他人,是半正定(MATLABs cholcov只需要半定,幸運)。

我真心希望有人在那裏至少有一個想法!

// Niffe

PS:我在MATLAB工作至今,但我開成其他語言,而且在只是數學的解決方案。

+0

@Niffe你的輸入是什麼樣的?隨着時間的推移信號只是一個向量?或兩個信號關聯?或者是其他東西? – Marnix

+0

@ Marnix-協方差將被用於創建lévy進程時間序列,所以在我有協方差矩陣之前,我基本上沒有輸入。但是當我發現創建矩陣的最佳方式時,我會對它們進行Choleskyfactoring,並將它們與多元正態分佈相乘。 – Niffe

+0

@Niffe:好的,我知道如何獲得協方差和所有的,但手工創建它們,仍然需要輸入嗎?你不能僅僅從無到有創建一個覆蓋矩陣?我想我不能幫你;) – Marnix

回答

4

現在我終於可以回答我的想法。

你想要的完全取決於你想要的分配類型。

例如,您可以考慮高斯/正態分佈。如果你有你的協方差矩陣,你可以這樣做,來自MATLAB site

從具有指定均值向量和協方差矩陣的二元正態分佈生成值。

mu = [1 2]; 
Sigma = [1 .5; .5 2]; R = chol(Sigma); 
z = repmat(mu,100,1) + randn(100,2)*R; 

當然不過,你可以做任何類型的流程與此有關。正如我在您的評論中看到的那樣,您想要生成隨機數據。就是這樣。從協方差矩陣中生成更多的協方差矩陣對我來說毫無意義。

+0

上發佈更多/更好的答案,謝謝,這很好!但是我希望能夠將這種方法用於50個不同的時間序列,而不是兩個,這意味着我需要有能力創建一個對稱和正(半)確定的50x50 SIGMA(如果我使用cholcov命令而不是通常的chol)。因此,我希望能夠做的事情是指定我希望不同的時間序列如何共變(這可能不是一個詞,但我認爲在上下文中很清楚),並且從中得到一個協方差矩陣(50x50)然後我可以取矩陣的平方根。如果我一開始不清楚,我真的很抱歉。 – Niffe

+0

@Niffe爲什麼不應該這樣做?只需創建一個返回帶有協方差的50x50矩陣的函數。所以你甚至可以創建某種高斯50x50矩陣,然後用它來創建你的信號。我不明白爲什麼這是不可能的。 – Marnix

+0

@Marnix主要原因是剛製作的一般矩陣不是正定的(強制矩陣作爲協方差矩陣需要的對稱性當然是微不足道的)。至少這是我迄今爲止遇到的問題,或者也許還有一些我完全錯過的東西。 – Niffe