skfolio.utils.stats.cov_nearest#
- skfolio.utils.stats.cov_nearest(cov, higham=False, higham_max_iteration=100, warn=False)[来源]#
计算最近的正定协方差矩阵,并且可以计算出Cholesky分解。方差保持不变。非正定的协方差矩阵通常出现在高维问题中。这可能是由于多重共线性、浮点不准确性,或者当观测数量小于资产数量时。
首先,它将协方差矩阵转换为相关性矩阵。然后,它找到最近的相关性矩阵,并使用初始标准差将其转换回协方差矩阵。
Cholesky分解对于对称正定(SPD)矩阵可能由于浮点错误而失败,反之,Cholesky分解对于非SPD矩阵可能成功。因此,我们需要对两者进行测试。我们总是首先测试Cholesky分解,因为它明显比检查正特征值更快。
- Parameters:
- covndarray of shape (n, n)
协方差矩阵。
- highambool, default=False
如果将此设置为 True,则使用 Higham & Nick (2002) 算法 [1],否则特征值被裁剪到零以上的阈值 (1e-13)。默认值 (
False) 是使用裁剪方法,因为 Higham & Nick 算法在处理大型数据集时可能较慢。- higham_max_iterationint, default=100
Higham & Nick (2002) 算法的最大迭代次数。默认值是
100。- warnbool, default=False
如果设置为 True,当协方差矩阵不是正定的并被替换为最近的矩阵时,将发出用户警告。默认值为 False。
- Returns:
- covndarray
最近的协方差矩阵。
参考文献