我有三个随机变量
X
、Z
和Y
,并且我知道它们的分布函数F(X)
、F(Z)
和F(Y)
。然而,它们之间的依赖结构尚不清楚。我想计算给定 F(Y|X)
、F(X|Y)
和 X
的条件分布 Z
和 Y
。
我使用 R 中的
copula
和 gamlss.dist
包来生成 theta=2 的 Gumbel copula 并创建多元分布 (mvdc
)。下面的代码片段使用生成的联结函数生成特定概率:
pacman::p_load(copula, gamlss.dist)
# Generate Gumbel copula with theta=2
thetaVal <- 2
copula <- gumbelCopula(thetaVal, dim = 3)
copPre <- mvdc(copula, c("SHASH", "norm", "norm"),
list(
list(mu = 46, sigma = 5, nu = 2, tau = 1), # X SHASH
list(mean = 46, sd = 1), # Y normal
list(mean = 23, sd = 1))) # Z normal
pMvdc(c(47, 45, 22), copPre)
最后一行代码给出了
(X ≤ 47),(Y ≤ 45), and (Z ≤ 22)
的概率。
我想要使用为 F(Y|X)
、F(X|Y)
和 X
提供的值以及 copula 模型计算条件分布 Z
和 Y
的指导。
预先感谢您的协助!
要获得像
Pr(X <= x | Y <= y)
这样的条件概率,您可以使用公式 Pr(X <= x, Y <= y) / Pr(Y <= y)
:
library(copula)
library(gamlss.dist)
# Generate Gumbel copula with theta=2
thetaVal <- 2
copula <- gumbelCopula(thetaVal, dim = 3)
copPre <- mvdc(copula, c("SHASH", "norm", "norm"),
list(
list(mu = 46, sigma = 5, nu = 2, tau = 1), # X SHASH
list(mean = 46, sd = 1), # Y normal
list(mean = 23, sd = 1))) # Z normal
pMvdc(c(47, 45, 22), copPre)
# Pr(X <= x | Y <= 45)
x <- 50
pMvdc(c(x, 45, Inf), copPre) / pnorm(45, 46, 1)
# or:
pMvdc(c(x, 45, Inf), copPre) / pMvdc(c(Inf, 45, Inf), copPre)