拟合正常 copula 时的“freeParam”错误 [R]

Posted

技术标签:

【中文标题】拟合正常 copula 时的“freeParam”错误 [R]【英文标题】:Error in `freeParam` in fitting of normal copula [R] 【发布时间】:2017-05-03 18:07:32 【问题描述】:

我正在使用 R 版本 3.3.2 和包 copula 版本 0.999-15 来评估正常 copula 与我的数据的拟合。我的数据和代码是:

数据:https://www.dropbox.com/s/tdg8bfzmy4nd1dd/jumps.dat?dl=0

library(copula)
data <- read.csv(file="jumps.dat", head=F, sep="")

cop_model <- ellipCopula("normal", dim = 2)
m <- pobs(as.matrix(data))
fitCopula(cop_model, m, method = 'mpl')

运行代码后,我收到以下错误:

Error in `freeParam<-`(`*tmp*`, value = estimate) : the length of 'value' is not equal to the number of free parameters
Calls: fitCopula ... fitCopula.ml -> fitCopStart -> fitCopula.icor ->      freeParam<-
Execution halted

我不知道这里发生了什么。 Clayton 和 Gumbel 的配件非常好。在网上搜索类似的错误,我一无所获。阅读文档 (https://www.rdocumentation.org/packages/copula/versions/0.999-15/topics/fitCopula?) 了解 ellipCopula 的一些特殊性,我找到了 posDef 的特定选项,但它根本没有返回任何解决方案。

【问题讨论】:

我认为您在 R-help 或 *** 之类的编程网站上可能会更好,因为这似乎是一个编程问题,而不是纯粹的统计问题。 感谢您的回答,@mdewey。我会这样做的。 【参考方案1】:

老问题,但我发现了这个,所以将分享我的解决方案。

尝试运行以下命令,这是一个最小的工作示例:

library(copula)
print("-----------")
mycop <- ellipCopula("normal", dim=4)
data <- matrix(runif(400), nrow=4)
fitCopula(mycop, t(data))
print("-----------")

对我来说,如果我打开 R 并逐行输入,这可以正常工作,但如果我使用 Rscript 作为脚本运行,则会失败。解决方案是你也需要library(methods)

由于某种原因,这适用于 copula v0.999-v14,但被 v0.999-v16 破坏。唉。

【讨论】:

以上是关于拟合正常 copula 时的“freeParam”错误 [R]的主要内容,如果未能解决你的问题,请参考以下文章

Copula

Copulas建模风力机和光伏发电相关性的Copulas建模理论

Copula函数理论

SVM模型进行分类预测时的参数调整技巧

matlab使用Copula仿真优化市场风险

copula 与一般动词的区别