如何将数据以向量的形式拟合到R中的Gumbel copula?

时间:2014-12-23 10:13:38

标签: r statistics data-fitting

我对R比较陌生。在大学的期末考试中,我决定写一篇关于copulas的论文,因此我收集了一些关于copulas背后的理论知识,它们是什么以及它们是如何工作的。我也在R中编程,但从未使用过R中的copula,因此我是R中copulas的新手。

我的问题是: 如何将原始数据(以R矢量的形式)拟合到Gumbel copula?

以下是我的数据格式:

x <- c(x1,x2,x3,...,xn)
y <- c(y1,y2,y3,...,yn)

现在我正在使用copula包,我知道如何生成随机copulas和Gumbel copulas,如下所示:

#independence case
r_matrix <- t(rgumbel(2000,theta=1))
plot(r_matrix[1,], r_matrix[2,], col="blue", main="Gumbel, independence case")
positive dependence
r_matrix <- t(rgumbel(2000,theta=3))
plot(r_matrix[1,], r_matrix[2,], col="blue", main="Gumbel, Positive dependence")

然而,我不知道如何估计theta ..我知道Spearman的Rho和Kendall的Tau是什么,如果这可能会有所帮助。 你能帮我把x和y装到Gumbel copula吗?我应该使用另一个套餐吗?谢谢

1 个答案:

答案 0 :(得分:1)

我希望这会有所帮助

library(copula)
gumbel.cop= gumbelCopula(2, dim = 7)
set.seed(117)
u1 = rCopula(500, gumbel.cop)
fit.ml = fitCopula(gumbel.cop, u1, method = "ml")

以上的输出是

fitCopula() estimation based on 'maximum likelihood'
and a sample of size 500.
      Estimate Std. Error z value Pr(>|z|)    
param  2.01132    0.02902   69.31   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The maximized loglikelihood is  1643 
Optimization converged
Number of loglikelihood evaluations:
function gradient 
      20        3 

您也可以尝试&#34; mpl&#34;,&#34; itau&#34;或&#34; irho&#34;而不是&#34; ml&#34;估算师。你知道吗 &#34毫升&#34;是(最大可能性), &#34; MPL&#34;是(最大伪似然),&#34; itau&#34;是(肯德尔的反转 tau)和&#34; irho&#34;是(斯皮尔曼的反转)。有关详细信息,请参阅R copula package