statsmodels.multivariate.factor_rotation.rotate_factors

statsmodels.multivariate.factor_rotation.rotate_factors(A, method, *method_args, **algorithm_kwargs)[source]

用于正交和斜交旋转矩阵的子程序 \(A\)。 对于正交旋转,\(A\) 根据以下公式旋转到 \(L\)

\[L = AT,\]

其中 \(T\) 是一个正交矩阵。而对于斜旋转,\(A\) 根据以下公式旋转到 \(L\)

\[L = A(T^*)^{-1},\]

其中 \(T\) 是一个正规矩阵。

Parameters:
Anumpy matrix (default None)

非旋转因子

methodstr

应为以下列出的方法之一

method_argslist

每个方法应提供的附加参数

algorithm_kwargsdictionary
algorithmstr (default gpa)

应为以下之一:

  • ‘gpa’: 一种数值方法

  • ‘gpa_der_free’: 一种无导数的数值方法

  • ‘analytic’ : 一种分析方法

根据算法,存在特定于算法的参数。对于gpa和gpa_der_free,以下参数是可用的:

max_triesint (default 501)

最大迭代次数

tolfloat

停止准则,如果梯度的Frobenius范数小于tol,算法将停止

对于分析,支持的参数取决于方法,请参见上文。

查看较低级别的函数以获取更多详细信息。

Returns:
The tuple \((L,T)\)

注释

以下是可用方法的列表。根据方法的不同,需要额外的参数,并且可以使用不同的算法。algorithm_kwargs 是传递给所选算法的额外关键字参数(参见参数部分)。除非另有说明,否则只有 gpa 和 gpa_der_free 算法可用。

下面,

  • \(L\) 是一个 \(p\times k\) 矩阵;

  • \(N\) 是一个 \(k\times k\) 的矩阵,对角线上为零,其他位置为1;

  • \(M\) 是一个 \(p\times p\) 的矩阵,对角线上为零,其他位置为1;

  • \(C\) 是一个 \(p\times p\) 的矩阵,其元素等于 \(1/p\)

  • \((X,Y)=\operatorname{Tr}(X^*Y)\) 是 Frobenius 范数;

  • \(\circ\) 是元素级乘积或哈达玛积。

obliminorthogonal or oblique rotation that minimizes
\[\phi(L) = \frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)N).\]

对于正交旋转:

  • \(\gamma=0\) 对应于 quartimax,

  • \(\gamma=\frac{1}{2}\) 对应于双四次最大值,

  • \(\gamma=1\) 对应于 varimax,

  • \(\gamma=\frac{1}{p}\) 对应于 equamax。

对于斜旋转:

  • \(\gamma=0\) 对应于quartimin,

  • \(\gamma=\frac{1}{2}\) 对应于双四次最小化。

方法参数:

gammafloat

Oblimin 家族参数

rotation_methodstr

应为以下之一 {orthogonal, oblique}

orthomax : 正交旋转,最小化

\[\phi(L) = -\frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)),\]

其中 \(0\leq\gamma\leq1\)。orthomax 族等价于 oblimin 族(当限制为正交旋转时)。 此外,

  • \(\gamma=0\) 对应于 quartimax,

  • \(\gamma=\frac{1}{2}\) 对应于双四次最大值,

  • \(\gamma=1\) 对应于 varimax,

  • \(\gamma=\frac{1}{p}\) 对应于 equamax。

方法参数:

gammafloat (between 0 and 1)

正交最大化族参数

CF : 用于正交和斜交旋转的Crawford-Ferguson族,其最小化目标为:

\[\phi(L) =\frac{1-\kappa}{4} (L\circ L,(L\circ L)N) -\frac{1}{4}(L\circ L,M(L\circ L)),\]

其中 \(0\leq\kappa\leq1\)。对于正交旋转,oblimin(和orthomax)旋转族等同于Crawford-Ferguson族。 更准确地说:

  • \(\kappa=0\) 对应于 quartimax,

  • \(\kappa=\frac{1}{p}\) 对应于varimax,

  • \(\kappa=\frac{k-1}{p+k-2}\) 对应于parsimax,

  • \(\kappa=1\) 对应于因子简约性。

方法参数:

kappafloat (between 0 and 1)

克劳福德-弗格森家族参数

rotation_methodstr

应为 {orthogonal, oblique} 之一

quartimaxorthogonal rotation method

最小化orthomax目标,其中\(\gamma=0\)

biquartimaxorthogonal rotation method

最小化orthomax目标,其中\(\gamma=\frac{1}{2}\)

varimaxorthogonal rotation method

最小化orthomax目标,其中\(\gamma=1\)

equamaxorthogonal rotation method

最小化orthomax目标,其中\(\gamma=\frac{1}{p}\)

parsimaxorthogonal rotation method

最小化Crawford-Ferguson族目标函数,其中 \(\kappa=\frac{k-1}{p+k-2}\)

parsimonyorthogonal rotation method

最小化Crawford-Ferguson族目标,其中\(\kappa=1\)

quartiminoblique rotation method that minimizes

最小化oblimin目标函数,其中\(\gamma=0\)

quartiminoblique rotation method that minimizes

最小化oblimin目标,其中\(\gamma=\frac{1}{2}\)

目标 : 正交或斜交旋转,旋转朝向目标

矩阵 : math:H 通过最小化目标函数

\[\phi(L) =\frac{1}{2}\|L-H\|^2.\]

方法参数:

Hnumpy matrix

目标矩阵

rotation_methodstr

应为以下之一 {orthogonal, oblique}

对于正交旋转,算法可以设置为分析型,在这种情况下,可以使用以下关键字参数:

full_rankbool (default False)

如果设置为 true,则假设为满秩

partial_target : 正交(默认)或斜交旋转,部分旋转朝向目标矩阵 \(H\),通过最小化目标函数:

\[\phi(L) =\frac{1}{2}\|W\circ(L-H)\|^2.\]

方法参数:

Hnumpy matrix

目标矩阵

Wnumpy matrix (default matrix with equal weight one for all entries)

带有权重的矩阵,条目可以是1或0

示例

>>> A = np.random.randn(8,2)
>>> L, T = rotate_factors(A,'varimax')
>>> np.allclose(L,A.dot(T))
>>> L, T = rotate_factors(A,'orthomax',0.5)
>>> np.allclose(L,A.dot(T))
>>> L, T = rotate_factors(A,'quartimin',0.5)
>>> np.allclose(L,A.dot(np.linalg.inv(T.T)))

Last update: Oct 16, 2024