基于 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 copula 或 pair-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)
阅读论文 "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 copula 或 pair-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)