我在R中使用copula
软件包。
我已经将几个copula拟合到一个双变量数据集,并希望将最好的copula组合在一起-事实证明是Plackett copula,具有估计的边际分布(称为Marg1和Marg2;它们似乎并不重要此处)在mvdc
对象中。但是,当我尝试执行此操作时会收到一条错误消息(在示例中,为简单起见,我已替换了使用plackettCopula
将copula拟合到数据而获得的fitCopula
对象。显然,我想使用我适合的数据):
> mvdc(copula = plackettCopula(0.5), margins = c(Marg1$distname, Marg2$distname), paramMargins = list(as.list(Marg1$estimate), as.list(Marg2$estimate)), check = T)
Multivariate Distribution Copula based ("mvdc")
@ copula:
Error: $ operator not defined for this S4 class
当我对普通鸡眼做同样的操作时,没有得到这样的错误消息:
> mvdc(copula = normalCopula(0.5), margins = c(Marg1$distname, Marg2$distname), paramMargins = list(as.list(Marg1$estimate), as.list(Marg2$estimate)), check = T)
Multivariate Distribution Copula based ("mvdc")
@ copula:
Normal copula, dim. d = 2
Dimension: 2
Parameters:
rho.1 = 0.5
@ margins:
[1] "gev" "glogis"
with 2 (not identical) margins; with parameters (@ paramMargins)
List of 2
$ :List of 3
..$ shape: num -0.2502235
..$ scale: num 0.1824798
..$ loc : num 0.9315861
$ :List of 3
..$ location: num 0.9918519
..$ scale : num 0.05639447
..$ shape : num 1.10499
任何人都可以告诉我此错误消息的含义,并且有办法解决此错误吗?看来我对许多其他copulas也得到了相同的错误消息,例如口香糖,克莱顿,弗兰克,乔,安赫等...
此外,即使出现此错误消息,mvdc
对象似乎也可以,而且我似乎能够从拟合的mvdc
对象进行模拟,如果我制作了三个mvdc
基于具有不同参数的Plackett-copula的对象,我得到的结果非常不同。尽管出现错误消息,这是否表示该对象实际上运行良好?我根据具有不同plackett-copula参数值的mvdc
对象获得了以下图表:
> mvdc1 = mvdc(copula = plackettCopula(1), margins = c(Marg1$distname, Marg2$distname), paramMargins = list(as.list(Marg1$estimate), as.list(Marg2$estimate)), check = T)
> mvdc2 = mvdc(copula = plackettCopula(10), margins = c(Marg1$distname, Marg2$distname), paramMargins = list(as.list(Marg1$estimate), as.list(Marg2$estimate)), check = T)
> mvdc3 = mvdc(copula = plackettCopula(60), margins = c(Marg1$distname, Marg2$distname), paramMargins = list(as.list(Marg1$estimate), as.list(Marg2$estimate)), check = T)
> par(mfrow=c(1,3))
> plot(rMvdc(1000, mvdc1))
> plot(rMvdc(1000, mvdc2))
> plot(rMvdc(1000, mvdc3))
对于如何解决或解决此问题的任何帮助,我们深表感谢。