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

相关函数:copulaFitStudentcopulaFitClaytoncopulaFitFrankcopulaFitGumbelcopulaRandGaussiancopulaPdfGaussiancopulaCdfGaussian