statsmodels.stats.correlation_tools.cov_nearest_factor_homog

statsmodels.stats.correlation_tools.cov_nearest_factor_homog(cov, rank)[source]

用形式为 k*I + XX’ 的因子结构矩阵近似任意方阵。

Parameters:
covarray_like

输入数组,必须是方阵但不需要是正半定

rankint

拟合因子结构的秩

Returns:
A FactoredPSDMatrix instance containing the fitted matrix

注释

如果有一个估计的协方差矩阵不是SPD,并且最终目标是估计真实协方差矩阵的逆、平方根或逆平方根,那么这个例程非常有用。因子结构允许在不构造任何n x n矩阵的情况下执行这些任务。

这些计算利用了如果k已知,那么X可以通过cov - k*I的特征分解来确定,而cov - k*I的特征分解又可以很容易地从cov的特征分解中得到。因此,问题可以简化为对k的一维搜索,而不需要重复进行特征分解。

如果输入矩阵是稀疏的,那么 cov - k*I 也是稀疏的,因此可以使用稀疏例程高效地进行特征分解。

一维搜索k的最优值不是凸的,因此可能会得到局部最小值。

示例

对协方差矩阵进行硬阈值处理可能会导致矩阵不是半正定的。我们可以通过以下方法近似一个硬阈值处理的协方差矩阵为半正定矩阵:

>>> import numpy as np
>>> np.random.seed(1234)
>>> b = 1.5 - np.random.rand(10, 1)
>>> x = np.random.randn(100,1).dot(b.T) + np.random.randn(100,10)
>>> cov = np.cov(x)
>>> cov = cov * (np.abs(cov) >= 0.3)
>>> rslt = cov_nearest_factor_homog(cov, 3)

Last update: Oct 16, 2024