R語言實現(xiàn) Copula 算法建模依賴性案例分析報告
原文鏈接:http://tecdat.cn/?p=6193
?
copula是將多變量分布函數(shù)與其邊際分布函數(shù)耦合的函數(shù),通常稱為邊緣。Copula是建模和模擬相關隨機變量的絕佳工具。Copula的主要吸引力在于,通過使用它們,你可以分別對相關結(jié)構(gòu)和邊緣(即每個隨機變量的分布)進行建模。?
copulas如何工作?
首先,讓我們了解copula的工作方式。?
set.seed(100)
m < - ?3
n < - ?2000
z < - ?mvrnorm(n,mu = rep(0,m),Sigma = sigma,empirical = T)
我們使用cor()
和配對圖檢查樣本相關性。?
?
pairs.panels(Z)
[,1] [,2] [,3]
[1,] 1.0000000 0.3812244 0.1937548
[2,] 0.3812244 1.0000000 -0.7890814
[3,] 0.1937548 -0.7890814 1.0000000
?

pairs.panels(U)
這是包含新隨機變量的配對圖u
。?

?
?我們可以繪制矢量的3D圖表示u
。?

?
?
現(xiàn)在,作為最后一步,我們只需要選擇邊緣并應用它。我選擇了邊緣為Gamma,Beta和Student,并使用下面指定的參數(shù)。
x1 < - ?qgamma(u [,1],shape = 2,scale = 1)
x2 < - ?qbeta(u [,2],2,2)
x3 < - ?qt(u [,3],df = 5)
下面是我們模擬數(shù)據(jù)的3D圖。?

?
df < - ?cbind(x1,x2,x3)
pairs.panels(DF)
x1 x2 x3
x1 1.0000000 0.3812244 0.1937548
x2 0.3812244 1.0000000 -0.7890814
x3 0.1937548 -0.7890814 1.0000000
這是隨機變量的配對圖:

?
使用copula
讓我們使用copula復制上面的過程。
?
現(xiàn)在我們已經(jīng)通過copula(普通copula)指定了依賴結(jié)構(gòu)并設置了邊緣,mvdc()
函數(shù)生成了所需的分布。然后我們可以使用rmvdc()
函數(shù)生成隨機樣本。
colnames(Z2)< - ?c(“x1”,“x2”,“x3”)
pairs.panels(Z2)
模擬數(shù)據(jù)當然非常接近之前的數(shù)據(jù),顯示在下面的配對圖中:

?
簡單的應用示例
現(xiàn)在為現(xiàn)實世界的例子。我們將擬合兩個股票 ,并嘗試使用copula模擬 。?
讓我們在R中加載 :
cree < - ?read.csv('cree_r.csv',header = F)$ V2
yahoo < - ?read.csv('yahoo_r.csv',header = F)$ V2
在直接進入copula擬合過程之前,讓我們檢查兩個股票收益之間的相關性并繪制回歸線:
?
我們可以看到 正相關 :

?
在上面的第一個例子中,我選擇了一個正態(tài)的copula模型,但是,當將這些模型應用于實際數(shù)據(jù)時,應該仔細考慮哪些更適合數(shù)據(jù)。例如,許多copula更適合建模非對稱相關,其他強調(diào)尾部相關性等等。我對股票回報的猜測是,t-copula應該沒問題,但是猜測肯定是不夠的。本質(zhì)上, 允許我們通過函數(shù)使用BIC和AIC執(zhí)行copula選擇 :
pobs(as.matrix(cbind(cree,yahoo)))[,1]
selectedCopula
$ PAR
[1] 0.4356302
$ PAR2
[1] 3.844534
擬合算法確實選擇了t-copula并為我們估計了參數(shù)。?
讓我們嘗試擬合建議的模型,并檢查參數(shù)擬合。
t.cop
set.seed(500)
m < - ?pobs(as.matrix(cbind(cree,yahoo)))
COEF(FIT)
rho.1 df
0.43563 3.84453
?
?我們來看看我們剛估計的copula的密度
rho < - ?coef(fit)[1]
df < - ?coef(fit)[2]

現(xiàn)在我們只需要建立Copula并從中抽取3965個隨機樣本。
rCopula(3965,tCopula( ?= 2, ,df = df))
[,1] [,2]
[1,] 1.0000000 0.3972454
[2,] 0.3972454 1.0000000
這是包含的樣本的圖:

?
t-copula通常適用于在極值(分布的尾部)中存在高度相關性的現(xiàn)象。
?
現(xiàn)在我們正面臨困難:對邊緣進行建模。為簡單起見,我們將假設正態(tài)分布 。因此,我們估計邊際的參數(shù)。
?
直方圖顯示如下:


現(xiàn)在我們在函數(shù)中應用copula,從生成的多變量分布中獲取模擬觀測值。最后,我們將模擬結(jié)果與原始數(shù)據(jù)進行比較。
?
這是在假設正常邊緣和依賴結(jié)構(gòu)的t-copula的情況下數(shù)據(jù)的最終散點圖:
?

正如您所看到的,t-copula導致結(jié)果接近實際觀察結(jié)果 。?
?
讓我們嘗試df=1
和df=8:
?
顯然,該參數(shù)df
對于確定分布的形狀非常重要。隨著df
增加,t-copula傾向于高斯copula。

非常感謝您閱讀本文,有任何問題請在下面留言!

參考文獻
1.用機器學習識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)的應用
2.R語言GARCH-DCC模型和DCC(MVT)建模估計
3.R語言實現(xiàn) Copula 算法建模依賴性案例分析報告
4.R語言COPULAS和金融時間序列數(shù)據(jù)VaR分析
5.R語言多元COPULA GARCH 模型時間序列預測
6.用R語言實現(xiàn)神經(jīng)網(wǎng)絡預測股票實例
7.r語言預測波動率的實現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風險