模擬
從多元clayton copula模擬
我最近進入金融聯結,我已經閱讀了幾個關於如何使用大多數類型的聯結生成因隨機變數的範例。對我來說問題是所有的書都用 2 個隨機變數來描述這個案例 $ (X_1,X_2) $ 但我想生成 $ n $ 依賴房車 $ (X_1,X_2,\ldots,X_n) $ .
我發現高斯 copulas 的情況很容易,因為我們只需要擴展相關矩陣,應用 cholesky 分解併計算矩陣乘法。
但是我找不到將其應用於clayton copula 的方法,因為書中的範例總是使用rv #1 的條件copula 密度來生成rv #2。這似乎不是多房車的實用方法
有沒有像高斯係詞那樣的方法?
此致
由於我認為這對其他人感興趣,因此我將發布我發現的方法:
首先,讓 $ C_n(u_1,\ldots,u_n) $ 做一個 $ n $ - 具有生成器函式的維克萊頓 copula $ F $ 和逆 $ F^{-1} $ . 然後,
- 產生 $ n $ 獨立房車 $ U (0,1) $
- 計算 $ n-1 $ 的衍生物 $ F $ , 在哪裡 $ F_{n-1} $ 表示 $ n-1 $ -th - 階導數 $ F $
- 放 $ v_1 = u_1 $
- 放 $ u_2 = C_2(v_2|v_1) = \frac{F_1(F^{-1}(v_1)+F^{-1}(v_2))}{F_1(F^{-1}(v_1)} $ 並解決 $ v_2 $
- 重複直到 $ u_n = C_n(v_n|v_1,v_2,\ldots,v_{n-1)} = \frac{F_{n-1}(F^{-1}(v_1)+F^{-1}(v_2)+\ldots+F^{-1}(v_n))}{F_{n-1}(F^{-1}(v_1)+F^{-1}(v_2)+\ldots+F^{-1}(v_{n-1}))} $ 並解決 $ v_n $ .
對於有關從高斯 copula 模擬的 matlab 程式碼的問題,這裡有一些快速編碼:
%% Simulations of bivariate Gaussian copulas %Example for rho=0.5 n=30000; rho=0.5; x1=norminv(rand(1,n)); x2=norminv(rand(1,n)); X = [x1; x2]; C = [1, rho; rho,1]; %2x2 Correlation matrix cholesky = chol(C,'lower'); %lower triangular matrix of C using Cholesky decomposition Copsims = cholesky*X; c1 = Copsims(1,:); c2 = Copsims(2,:); plot(c1,c2,'.') corrcoef(c1,c2) %check for empirical rho, not on point the initial rho because of sampling error