copulaFitGaussian
首发版本:3.00.6
语法
copulaFitGaussian(X)
详情
基于 (0, 1) 空间的数据拟合 Gaussian Copula,估计线性相关系数矩阵。
Gaussian Copula 无尾部相关性,适合作为基准模型使用。
参数
X 非空二维数值矩阵或表,维度为 n×p(p = 2),表示输入数据。
- 所有元素必须为有限数并严格位于开区间
(0, 1)内,且不得包含常数列或近似常数列。 - n 表示样本数,p 表示变量数。输入数据应满足样本数大于变量数(n > p)。
返回值
返回一个字典,包含以下键值对:
- rho:矩阵,表示 p×p 估计的线性相关系数矩阵。
- logLikelihood:DOUBLE 标量,表示 Gaussian Copula 模型的对数似然值。
例子
注意:以下例子的输出为示意值,实际运行结果可能不同。
例1. 生成真实相关系数为 0.7 的二维正相关数据,拟合 Gaussian Copula 并验证估计的相关系数是否接近真实值。
n = 1000
x1 = norm(0, 1, n)
x2 = 0.7 * x1 + sqrt(1 - 0.49) * norm(0, 1, n)
u1 = (rank(x1) + 1) \ (n + 1.0)
u2 = (rank(x2) + 1) \ (n + 1.0)
X = matrix(u1, u2)
res = copulaFitGaussian(X)
res.logLikelihood
// 输出: 326.382767
res.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.692384 |
| 0.692384 | 1 |
例2. 生成相关系数为 −0.5 的负相关数据,拟合 Gaussian Copula 以验证其对负相关结构的估计能力。
n = 1000
x1 = norm(0, 1, n)
x2 = -0.5 * x1 + sqrt(1 - 0.25) * norm(0, 1, n)
u1 = (rank(x1) + 1) \ (n + 1.0)
u2 = (rank(x2) + 1) \ (n + 1.0)
Xneg = matrix(u1, u2)
resNeg = copulaFitGaussian(Xneg)
resNeg.logLikelihood
// 输出: 171.85922
resNeg.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | -0.539325 |
| -0.539325 | 1 |
例3. 模拟两只股票的日收益率并转换为伪观测值,以表作为输入拟合 Gaussian Copula,作为投资组合风险建模的基准模型。
// 模拟两只股票的日收益率,并转换为 (0, 1) 区间的伪观测值
n = 1000
retA = norm(0.0005, 0.02, n)
retB = 0.6 * retA + sqrt(1 - 0.36) * norm(0.0003, 0.015, n)
uA = (rank(retA) + 1) \ (n + 1.0)
uB = (rank(retB) + 1) \ (n + 1.0)
// 构造表作为输入
stockReturns = table(uA as stockA, uB as stockB)
res = copulaFitGaussian(stockReturns)
res.logLikelihood
// 输出: 295.109231
res.rho
输出返回:
| #0 | #1 |
|---|---|
| 1 | 0.667678 |
| 0.667678 | 1 |
相关函数:copulaFitStudent、copulaFitClayton、copulaFitFrank、copulaFitGumbel、copulaRandGaussian、copulaPdfGaussian、copulaCdfGaussian
