EducationalTestingService / EducationalTestingService/factor_analyzer

Loadings matrix has incorrect shape when using principal method with lapack

オープン
#137 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
6
フォーク
1
PR マージ指標
30日以内にマージされた PR はありません

説明

**Bug Description**
When using the principal method with lapack SVD instead of randomized, the loadings matrix returned by FactorAnalyzer is always given in full, it has shape n_cols x n_cols, instead of selecting only loadings for the n_factors desired. When using the randomized SVD, there is no issue.

**Reproducible Code**

```
import pandas as pd
import numpy as np

num_rows = 1000
num_cols = 6
df = pd.DataFrame(
np.random.standard_normal(size=(num_rows, num_cols)),
columns=[f'col{i+1}' for i in range(num_cols)])

# shape is correct with randomized
efa = FactorAnalyzer(n_factors=2, rotation='promax', method='principal', svd_method='randomized')
efa.fit(df)
print(efa.loadings_.shape)

# shape is incorrect with lapack
efa = FactorAnalyzer(n_factors=2, rotation='promax', method='principal', svd_method='lapack')
efa.fit(df)
print(efa.loadings_.shape)
```

**Expected behavior**
The shape of the .loadings_ attribute should be n_cols x n_factors.

**Versions (please complete the following information):**
- OS: Windows 10
- Python: 3.10.10
- Versions for `factor_analyzer`: 0.5.1 / `numpy`: 1.26.1 / `scipy` : 1.11.3 / `pandas`: 2.1.1

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。