在R语言中,我想要求解一个多维混合Copula的权系数,最好能够使用不同的Copula函数,或者对于一个固定的Copula函数(Clayton,Gumbel,Frank Copula),如果条件受限的话.使用EM算法或其他一些算法来计算权系数.非常感谢您的专业建议和指导!

library(copula)
### Input three-dimension data :
x1 <- rnorm(n=1000,mean = 0.5,sd = 0.1)
x2 <- rlnorm(n = 1000,meanlog = 0.5,sdlog = 0.01)
x3 <- runif(n = 1000,min = 0.2,max = 0.8)
data<-matrix(c(x1,x2,x3),1000,3)
### mixture copula type:   clayton + gumbel + frank copula (or + normal copula \ t copula)
###for example:
copula1 <- mixCopula(list( claytonCopula  (param = 1.3,dim = 3),
                           frankCopula    (param = 2.718,dim = 3),
                           gumbelCopula   (param = 4.58,dim = 3)))
###EM algothrim.   
### output :  weight of mixture copula

推荐答案

要形成一个混合Copula模型,您可以使用R.

这是给你的:

MixCop <- mixCopula(list(frankCopula(9,dim=3), claytonCopula(4, dim=3))) ## form the model
CopD <- rCopula(300, MixCop) ## generate the data 
Res <- fitCopula(CopD) ## estimate the model

based on your updated question:

library(copula)
### Input three-dimension data :
x1 <- rnorm(n=1000,mean = 0.5,sd = 0.1)
x2 <- rlnorm(n = 1000,meanlog = 0.5,sdlog = 0.01)
x3 <- runif(n = 1000,min = 0.2,max = 0.8)
data <- cbind(x1, x2,x3)
Copdat <- pobs(data)## transform the data to copula data 
### mixture copula type:   clayton + gumbel + frank copula (or + normal copula \ t copula)
###for example:
copula1 <- mixCopula(list( claytonCopula  (param = 1.3,dim = 3),
                           frankCopula    (param = 2.718,dim = 3),
                           gumbelCopula   (param = 4.58,dim = 3)))
cop <- fitCopula(copula1, Copdat)

结果是:

> cop <- fitCopula(copula1, Copdat)
Warning messages:
1: In .local(copula, tau, ...) :
  For the Gumbel copula, tau must be >= 0. Replacing negative values by 0.
2: In fitCopula.ml(copula, u = data, method = method, start = start,  :
  var.mpl(copula, u) failed: system is computationally singular: reciprocal condition number = 6.5821e-29
> cop
Call: fitCopula(copula1, data = Copdat)
Fit based on "maximum pseudo-likelihood" and 1000 3-dimensional observations.
Copula: mixExplicitCopula 
 m1.alpha  m2.alpha  m3.alpha        w1        w2        w3 
3.893e+00 8.883e-01 1.000e+00 5.682e-14 1.060e-10 1.000e+00 
The maximized loglikelihood is -2.649e-06 
Optimization converged

我建议您try 其他类型的Copula函数来处理您的数据.

希望这能有所帮助

R相关问答推荐

如何计算新变量中的通货inflating 率?

了解.groups的目的= dØr的摘要功能中的删除

插入指示行之间时间间隔的新行

如何在R中正确对齐放射状图中的文本

基于shiny 应用程序中的日期范围子集xts索引

如果列中存在相同的字符串,则对行值进行总和

带有叠加饼图系列的Highmap

derrr summarise每个组返回多行?

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

筛选出以特定顺序患病的个体

gganimate在使用shadow_mark选项时不保留所有过go 的标记

如何将旋转后的NetCDF转换回正常的纬度/经度网格,并使用R?

使用R闪光显示所有数据点作为默认设置

KM估计的差异:SvyKm与带权重的调查

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

我是否可以使用多个变异项来构建顺序列(标记多个问题)

以不同于绘图中元素的方式对GG图图例进行排序

判断函数未加载R中的库

是否有可能从边界中找到一个点值?

计算来自单独分组的分幅的值的百分位数