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:¶
- A
numpymatrix(defaultNone) 非旋转因子
- method
str 应为以下列出的方法之一
- method_args
list 每个方法应提供的附加参数
- algorithm_kwargs
dictionary - algorithmstr (default gpa)
应为以下之一:
‘gpa’: 一种数值方法
‘gpa_der_free’: 一种无导数的数值方法
‘analytic’ : 一种分析方法
根据算法,存在特定于算法的参数。对于gpa和gpa_der_free,以下参数是可用的:
- max_triesint (default 501)
最大迭代次数
- tolfloat
停止准则,如果梯度的Frobenius范数小于tol,算法将停止
对于分析,支持的参数取决于方法,请参见上文。
查看较低级别的函数以获取更多详细信息。
- A
- Returns:¶
Thetuple\((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)))