copulaPdfStudent

首发版本:3.00.6

语法

copulaPdfStudent(rho, nu, X)

详情

计算 Student's t Copula 在给定评估点上的概率密度值。

t Copula 在 Gaussian Copula 的相关结构基础上引入自由度参数 nu,能够刻画上下尾对称的厚尾依赖。自由度越小,尾部相关越强;当 nu 趋向无穷大时,t Copula 在数值上逐渐接近 Gaussian Copula。

copulaPdfStudent 常用于极端风险建模场景下的密度评估,例如比较样本点在厚尾模型和 Gaussian 基准模型下的似然贡献。

参数

rho 标量或矩阵,表示线性相关参数。

  • X 为二维数据时,rho 可以是 DOUBLE 标量,指定两个变量之间的相关系数,取值范围为 (-1, 1)
  • rho 也可以是 2×2 相关系数矩阵。

nu INT 或 DOUBLE 类型标量,表示 t Copula 的自由度参数,取值范围为 (0, ∞)

  • nu 越小,尾部越厚。
  • 较大的 nu 会使 t Copula 接近 Gaussian Copula。

X 非空二维数值矩阵或表,维度为 n×p(p = 2),指定需要计算密度的评估点集。其中 n 为评估点数量,即 X 的行数;p 为变量维度,即 X 的列数。

  • 所有元素必须为有限数。
  • 位于开区间 (0, 1) 内的行按 t Copula 密度公式计算。
  • 任意元素 u 位于闭区间边界或区间外(u <= 0u >= 1)的行返回 0。
  • X 为表时,每一列表示一个变量,列顺序即变量顺序。

返回值

DOUBLE 向量,长度为 X 的行数。返回向量中的第 i 个元素表示 X 第 i 行对应的 Copula 概率密度值。

例子

例1. 计算相关系数为 0.5、自由度为 5 的二维 t Copula 在中心点 [0.5, 0.5] 处的概率密度。

X = matrix([0.5], [0.5])

y = copulaPdfStudent(0.5, 5, X)
y
// 输出: [1.2753276779771845]

例2. 比较同一批评估点在不同自由度下的密度。自由度较小时,模型对尾部共同极端点会给出更高的密度。

u1 = [0.05, 0.5, 0.95]
u2 = [0.05, 0.5, 0.95]
X = matrix(u1, u2)

yNu4 = copulaPdfStudent(0.6, 4, X)
yNu30 = copulaPdfStudent(0.6, 30, X)

yNu4
// 输出: [4.439090113641852, 1.4147106052612917, 4.439090113641852]
yNu30
// 输出: [3.5554172160824566, 1.2710039953378847, 3.5554172160824566]

例3. 使用 t Copula 生成具有厚尾特征的伪观测值,再使用拟合结果计算这些样本点的密度。

X = copulaRandStudent(0.6, 5, 1000)
fitRes = copulaFitStudent(X)

y = copulaPdfStudent(fitRes.rho, fitRes.nu, X)
avg(y)
// 输出: 1.7878752240836582 (示意值,以实际输出为准)
fitRes.nu
// 输出: 6.0093821588887755 (示意值,以实际输出为准)

例4. 展示边界点的处理方式。第一行包含 0,第三行包含 1,对应密度返回 0。

u1 = [0.0, 0.2, 0.9]
u2 = [0.1, 0.3, 1.0]
X = matrix(u1, u2)

y = copulaPdfStudent(0.7, 5, X)
y
// 输出: [0, 1.7018622176354719, 0]

相关函数:copulaFitStudentcopulaRandStudentcopulaCdfStudentcopulaPdfGaussiancopulaPdfClaytoncopulaPdfFrankcopulaPdfGumbel