copulaFitStudent
首发版本:3.00.6
语法
copulaFitStudent(X, [method='ML'], [alpha=0.05])
详情
拟合 Student's t Copula,估计相关系数矩阵 rho 和自由度 nu。
t Copula 可刻画厚尾和上下尾对称相关,适用于极端风险建模。当自由度趋向无穷大时,t Copula 退化为 Gaussian Copula。
参数
X 非空二维数值矩阵或表,n×p 维(p ≥ 2),表示输入数据。
- 所有元素必须为有限数并严格位于开区间
(0, 1)内。 - 样本量需满足
n >= max(10, 2*p + 1),且不得包含常数列或近似常数列。
method STRING 类型标量,可选参数,默认值为 'ML'。表示拟合方法:'ML' 为标准最大似然;'ApproximateML' 为近似最大似然。
alpha DOUBLE 类型标量,可选参数,默认值为 0.05。表示置信区间显著性水平,取值范围为 (0,
1)。
返回值
返回一个字典,包含以下键值对:
- rho:矩阵,表示 p×p 估计的线性相关系数矩阵。
- nu:DOUBLE 标量,表示估计的自由度参数。
- nuCI:DOUBLE 向量,表示自由度的置信区间 。若成功计算,返回 [lower, upper];若置信区间无法稳定计算,则返回空值。
- logLikelihood:DOUBLE 标量,表示对数似然值。
- converged:BOOL 标量,表示优化器是否收敛。
例子
注意:以下例子的输出为示意值,实际运行结果可能不同。
例1. 生成相关系数 rho=0.7、自由度 nu=5 的 t Copula 数据(1000 个样本),使用默认参数拟合并验证估计的 rho 和 nu 是否接近真实值。
X = copulaRandStudent(0.7, 5, 1000)
res = copulaFitStudent(X)
res.nu
// 输出: 5.226848
res.nuCI
// 输出: [3.115844,7.337852]
res.logLikelihood
// 输出: 323.207189
res.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.695732 |
| 0.695732 | 1 |
例2. 生成更大样本量(5000)的厚尾数据,使用近似最大似然法(ApproximateML)拟合,并设置 99% 置信区间(alpha=0.01),观察 nuCI 相比默认参数的变化。
// 单独生成样本量更大的厚尾数据,避免 ApproximateML 下 nuCI 为空
Xlarge = copulaRandStudent(0.7, 5, 5000)
res2 = copulaFitStudent(Xlarge, method='ApproximateML', alpha=0.01)
res2.nu
// 输出: 5.226868
res2.nuCI
// 输出: [3.551869,6.901868]
res2.logLikelihood
// 输出: 1780.580361
res2.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.700865 |
| 0.700865 | 1 |
例3. 生成自由度更低(nu=4)、尾部更厚的数据(2000 个样本),验证模型能否准确捕捉更强的尾部相关性。
Xtail = copulaRandStudent(0.6, 4, 2000)
resTail = copulaFitStudent(Xtail)
resTail.nu
// 输出: 4.113908
resTail.nuCI
// 输出: [3.089262,5.138554]
resTail.logLikelihood
// 输出: 497.719249
resTail.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.608286 |
| 0.608286 | 1 |
例4. 使用 t Copula 生成具有厚尾特征的伪观测值,以表作为输入拟合 t Copula,评估两只股票在极端行情下同时出现大幅波动的厚尾风险。
// 使用 t Copula 生成具有厚尾特征的伪观测值,避免自由度估计退化到上界
X = copulaRandStudent(0.6, 5, 1000)
stockReturns = table(X[0] as stockA, X[1] as stockB)
res = copulaFitStudent(stockReturns)
res.nu
// 输出: 6.092823
res.nuCI
// 输出: [3.293553,8.892092]
res.logLikelihood
// 输出: 226.861833
res.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.596924 |
| 0.596924 | 1 |
相关函数:copulaFitGaussian、copulaFitClayton、copulaFitFrank、copulaFitGumbel、copulaRandStudent、copulaPdfStudent、copulaCdfStudent
