Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Loadings matrix has incorrect shape when using principal method with lapack

Open
#137 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
48/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
numpy, pandas, python
Domain
data

Research direction

Start by running the reproducible FactorAnalyzer examples with method='principal' and both svd_method values, then inspect the FactorAnalyzer.fit path that produces loadings_. Confirm that the lapack result has shape n_cols x n_factors, matching the randomized result and the expected behavior.

Written by the indexing model from the issue text.

Description

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
Dominant language
Python
Stars
6
Forks
1
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from EducationalTestingService/factor_analyzer

All issues in EducationalTestingService/factor_analyzer

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.