基于 Copula 的条件概率

Copula-based conditional probability

阅读论文 "A multivariate model of sea storms using copulas"(De Michele 等人,2007 年)https://www.sciencedirect.com/science/article/pii/S0378383907000592 我卡在 R 中的偏导数计算上了。

数学背景:

如果你有三个变量H、D、I(U1=F(H)等)你需要估计条件概率

P(U3|U1,U2)

你应该先估计偏导数的比率,比如

(∂C(u1,u2,u3)/∂u1∂u2)/(∂C(u1,u2)/∂u1∂u2)

(详情请看图片),

代码:

在 R 包 "VineCopula" (https://cran.r-project.org/web/packages/VineCopula/VineCopula.pdf) 之后,函数 dduCopula 计算偏导数

∂C(u1,u2)/∂u1,

所以这个过程对于简单的偏导数(图中命名为 k、m 和 n)来说很容易。

但是我如何估计与 copula C(k,m) 相比的另一个变量 "u1" 的偏导数。

∂C(k,m)/∂u1 ?

对于偏导数k和n:

library(VineCopula)
u1<-pobs(H)
u2<-pobs(D) 
library(copula)
C_hd <- BB1Copula()
k <- ddvCopula(cbind(u1,u2), C_hd)
n <- dduCopula(cbind(u1,u2), C_hd)

你有什么想法吗?

De Michele等人提出的构造原理。 (2017) 在三变量情况下被广泛称为 vine copulapair-copula construction。如果你想使用这样的模型,我建议先阅读更多关于它们的内容。 Aas et al. (2009) and you will find many more on http://www.vine-copula.org or google scholar.

的论文是一个很好的起点

现在回答你的问题:根据链式法则,我们得到 this and, hence, that

R 中的一个例子是:

# required package
library(VineCopula)

## simulate data
H <- rnorm(100)
D <- rnorm(100)
I <- rnorm(100)

## probability integral transforms
u_H <- pobs(H)
u_D <- pobs(D) 
u_I <- pobs(I)

## define dummy pair-copulas
C_HD <- BB1Copula()
C_DI <- BB1Copula()
C_HIgivenD <- BB1Copula()  # this is conditional dependence!

## calculate the conditional probability
k <- ddvCopula(cbind(u_H, u_D), C_HD)
m <- dduCopula(cbind(u_D, u_I), C_DI)
cond_prob <- dduCopula(cbind(k, m), C_HIgivenD)