Metodolog.pl · praktyczna baza wiedzy

Analiza czynnikowa EFA i CFA: jak dobrać metodę i uniknąć błędów

EFA i CFA w praktyce: liczba czynników, metoda ekstrakcji, rotacja, ładunki, walidacja oraz najczęstsze błędy w analizie czynnikowej.

Strona główna / Blog / Analiza czynnikowa EFA i CFA: jak dobrać metodę i uniknąć błędów

Analiza czynnikowa pomaga ocenić, czy wiele obserwowanych pozycji można wyjaśnić mniejszą liczbą zmiennych latentnych. W psychometrii służy przede wszystkim do badania struktury narzędzia, ale jej wartość zależy od decyzji podjętych przed estymacją.

EFA i CFA odpowiadają na inne pytania

Eksploracyjna analiza czynnikowa (EFA) jest użyteczna, gdy struktura nie jest jeszcze dobrze określona lub chcemy sprawdzić, jakie rozwiązanie sugerują dane. Konfirmacyjna analiza czynnikowa (CFA) testuje z góry określony model: liczbę czynników, przypisanie pozycji i dopuszczone korelacje. Testowanie modelu CFA na tej samej próbie, na której został intensywnie modyfikowany, osłabia jego potwierdzający charakter.

EFA krok po kroku

  1. Sprawdź jakość pozycji, braki danych i adekwatność macierzy korelacji.
  2. Dobierz korelacje i estymator do skali pomiaru; pozycje porządkowe mogą wymagać korelacji polichorycznych.
  3. Ustal liczbę czynników na podstawie analizy równoległej, wykresu osypiska, teorii i interpretowalności — nie tylko reguły wartości własnej większej od 1.
  4. Jeśli czynniki mogą być skorelowane, zastosuj rotację ukośną, np. oblimin lub promax.
  5. Oceń ładunki, ładunki krzyżowe, wspólności i sens treściowy pozycji.

Analiza głównych składowych (PCA) redukuje wymiar obserwowanych zmiennych, lecz nie jest tym samym co model wspólnych czynników. Wybór PCA zamiast EFA powinien wynikać z celu, a nie z ustawienia domyślnego programu.

CFA i walidacja

W CFA należy ocenić nie tylko globalne wskaźniki dopasowania, ale także ładunki, reszty, stabilność parametrów i zgodność z teorią. Przy porównaniach grup warto zbadać inwariancję pomiaru. Gdy to możliwe, strukturę opracowuje się na jednej części danych, a weryfikuje na drugiej próbie albo w niezależnym badaniu.

Najczęstsze błędy

  • usuwanie pozycji wyłącznie po to, aby poprawić dopasowanie;
  • zbyt mała lub mało zróżnicowana próba;
  • mechaniczne stosowanie progu ładunku bez oceny konstruktu;
  • ignorowanie korelacji czynników i wymuszanie rotacji ortogonalnej;
  • przedstawianie eksploracyjnych modyfikacji jako wcześniej zaplanowanych.

Walidujesz skalę lub kwestionariusz? Dobieramy EFA/CFA do rodzaju danych, wykonujemy analizę rzetelności i trafności oraz przygotowujemy raport wraz z tabelami i diagramami.

EFA, CFA czy PCA?

Zestawienie informacji omawianych w tej sekcji
CelMetodaKluczowa decyzja
Odkrycie możliwej struktury latentnejEFALiczba czynników, estymator, rotacja
Sprawdzenie wcześniej określonego modeluCFASpecyfikacja, estymator, dopasowanie
Kompresja danych bez modelu cechy ukrytejPCALiczba składowych

Minimalny raport EFA

Adekwatność macierzy oceniono za pomocą [KMO/Bartletta]. Liczbę czynników ustalono na podstawie analizy równoległej, wykresu osypiska i interpretowalności. Zastosowano ekstrakcję [PAF/ML] oraz rotację [oblimin/promax], ponieważ zakładano korelację czynników.

Błąd, który zmienia sens analizy

PCA nie jest automatycznym zamiennikiem EFA. Jeśli celem jest wnioskowanie o konstrukcie latentnym i błędzie pomiaru, użyj modelu wspólnych czynników.

Definicje, zalecenia interpretacyjne i sposób raportowania oparto na literaturze metodologicznej wskazanej w bibliografii (Fabrigar et al., 1999).

Przykład reprodukowalny

Kod w R, Pythonie i IBM SPSS Statistics

Przykład używa pozycji item1–item8. Dla odpowiedzi porządkowych oceń zasadność macierzy korelacji polichorycznych, a liczbę czynników uzasadnij analizą równoległą, teorią i stabilnością rozwiązania.

EFA, KMO, Bartlett, analiza równoległa i rotacja

Dane wejściowe: item1–item8 to pozycje skali. Dla danych porządkowych rozważ korelacje polichoryczne i właściwy estymator.

Co odczytać: Liczbę czynników uzasadniaj analizą równoległą, wykresem osypiska, teorią i interpretowalnością, nie tylko regułą λ>1.

R
dane <- read.csv("dane.csv")
items <- na.omit(dane[paste0("item", 1:8)])

library(psych)
KMO(items)
cortest.bartlett(cor(items), n = nrow(items))
fa.parallel(items, fa = "fa", fm = "minres", n.iter = 100)

efa <- fa(items, nfactors = 2, fm = "minres", rotate = "oblimin")
print(efa$loadings, cutoff = .30)
efa$communality
efa$Phi
Python
import numpy as np
import pandas as pd
from scipy import stats
from statsmodels.multivariate.factor import Factor

items = pd.read_csv("dane.csv")[[f"item{i}" for i in range(1, 9)]].dropna()
R = items.corr().to_numpy()
R_inv = np.linalg.inv(R)
scale = np.sqrt(np.diag(R_inv))
partial = -R_inv / np.outer(scale, scale)
np.fill_diagonal(partial, 0)
R_offdiag = R.copy()
np.fill_diagonal(R_offdiag, 0)
kmo = np.sum(R_offdiag**2) / (np.sum(R_offdiag**2) + np.sum(partial**2))

p_items = R.shape[0]
sign, logdet = np.linalg.slogdet(R)
bartlett = -(len(items) - 1 - (2 * p_items + 5) / 6) * logdet
df = p_items * (p_items - 1) / 2
p_value = stats.chi2.sf(bartlett, df)
print({"KMO": kmo, "Bartlett_chi2": bartlett, "df": df, "p": p_value})

efa = Factor(items, n_factor=2, method="pa").fit()
efa.rotate("oblimin")
print("ladunki:\n", efa.loadings)
print("wspolnosci:\n", efa.communality)
IBM SPSS Statistics — Syntax
FACTOR
 /VARIABLES=item1 item2 item3 item4 item5 item6 item7 item8
 /MISSING=LISTWISE
 /ANALYSIS=item1 item2 item3 item4 item5 item6 item7 item8
 /PRINT=INITIAL EXTRACTION ROTATION KMO
 /PLOT=EIGEN
 /CRITERIA=FACTORS(2) ITERATE(50)
 /EXTRACTION=PAF
 /ROTATION=OBLIMIN
 /METHOD=CORRELATION.

* Standardowa komenda FACTOR nie wykonuje klasycznej analizy równoległej; liczbę czynników sprawdź dodatkowo w R/Python lub rozszerzeniu.

Bibliografia oprogramowania i wykorzystanych pakietów

W przykładach użyto: R, Python, IBM SPSS Statistics, psych, pandas, SciPy, statsmodels. W pracy badawczej podaj również faktycznie użyte wersje, które można odczytać poleceniami sessionInfo() w R oraz pip freeze lub importlib.metadata.version() w Pythonie. Cytuj wyłącznie narzędzia rzeczywiście użyte w końcowej analizie.

  1. R: R Core Team. (2026). R: A language and environment for statistical computing [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. Python: Van Rossum, G., & Drake, F. L., Jr. (2009). Python 3 reference manual. CreateSpace.
  3. IBM SPSS Statistics: IBM Corp. (2025). IBM SPSS Statistics for Macintosh (Version 31.0) [Computer software]. IBM Corp.
  4. psych: Revelle, W. (2026). psych: Procedures for psychological, psychometric, and personality research (Version 2.6.5) [R package]. Northwestern University. https://doi.org/10.32614/CRAN.package.psych
  5. pandas: McKinney, W. (2010). Data structures for statistical computing in Python. In S. van der Walt & J. Millman (Eds.), Proceedings of the 9th Python in Science Conference (pp. 56–61). https://doi.org/10.25080/Majora-92bf1922-00a
  6. SciPy: Virtanen, P., et al. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17, 261–272. https://doi.org/10.1038/s41592-019-0686-2
  7. statsmodels: Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. Proceedings of the 9th Python in Science Conference, 92–96. https://doi.org/10.25080/Majora-92bf1922-011
BibTeX dla oprogramowania i pakietów
@manual{r-core-2026,
  author = {{R Core Team}},
  title = {R: A Language and Environment for Statistical Computing},
  organization = {R Foundation for Statistical Computing},
  address = {Vienna, Austria},
  year = {2026},
  url = {https://www.R-project.org/}
}
@book{vanrossum2009python,
  author = {Van Rossum, Guido and Drake, Fred L., Jr.},
  title = {Python 3 Reference Manual},
  publisher = {CreateSpace},
  year = {2009},
  isbn = {978-1-4414-1269-0}
}
@software{ibm2025spss,
  author = {{IBM Corp.}},
  title = {IBM SPSS Statistics for Macintosh},
  year = {2025},
  version = {31.0},
  publisher = {IBM Corp.}
}
@manual{revelle2026psych,
  author = {Revelle, William},
  title = {psych: Procedures for Psychological, Psychometric, and Personality Research},
  organization = {Northwestern University},
  year = {2026},
  note = {R package version 2.6.5},
  doi = {10.32614/CRAN.package.psych}
}
@inproceedings{mckinney2010pandas,
  author = {McKinney, Wes},
  title = {Data Structures for Statistical Computing in Python},
  booktitle = {Proceedings of the 9th Python in Science Conference},
  editor = {van der Walt, Stéfan and Millman, Jarrod},
  year = {2010},
  pages = {56--61},
  doi = {10.25080/Majora-92bf1922-00a}
}
@article{virtanen2020scipy, author={Virtanen, Pauli and others}, title={SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python}, journal={Nature Methods}, year={2020}, volume={17}, pages={261--272}, doi={10.1038/s41592-019-0686-2}}
@inproceedings{seabold2010statsmodels, author={Seabold, Skipper and Perktold, Josef}, title={Statsmodels: Econometric and Statistical Modeling with Python}, booktitle={Proceedings of the 9th Python in Science Conference}, year={2010}, pages={92--96}, doi={10.25080/Majora-92bf1922-011}}

Planujesz artykuł lub projekt naukowy?

Możemy przygotować plan analityczny, reprodukowalny kod, modele, raport publication-ready i odpowiedź na uwagi recenzentów.

Analizy statystyczne dla badaczyOmów projekt

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Fabrigar, L. R., Wegener, D. T., MacCallum, R. C., & Strahan, E. J. (1999). Evaluating the use of exploratory factor analysis in psychological research. Psychological Methods, 4(3), 272–299. https://doi.org/10.1037/1082-989X.4.3.272
  2. Hayton, J. C., Allen, D. G., & Scarpello, V. (2004). Factor retention decisions in exploratory factor analysis: A tutorial on parallel analysis. Organizational Research Methods, 7(2), 191–205. https://doi.org/10.1177/1094428104263675
  3. McNeish, D. (2018). Thanks coefficient alpha, we’ll take it from here. Psychological Methods, 23(3), 412–433. https://doi.org/10.1037/met0000144
  4. Dunn, T. J., Baguley, T., & Brunsden, V. (2014). From alpha to omega: A practical solution to the pervasive problem of internal consistency estimation. British Journal of Psychology, 105(3), 399–412. https://doi.org/10.1111/bjop.12046
  5. Sijtsma, K. (2009). On the use, the misuse, and the very limited usefulness of Cronbach’s alpha. Psychometrika, 74(1), 107–120. https://doi.org/10.1007/s11336-008-9101-0
  6. Appelbaum, M., Cooper, H., Kline, R. B., Mayo-Wilson, E., Nezu, A. M., & Rao, S. M. (2018). Journal article reporting standards for quantitative research in psychology: The APA Publications and Communications Board task force report. American Psychologist, 73(1), 3–25. https://doi.org/10.1037/amp0000191

Cytowania BibTeX

@article{fabrigar1999efa, author={Fabrigar, Leandre R. and Wegener, Duane T. and MacCallum, Robert C. and Strahan, Erin J.}, title={Evaluating the use of exploratory factor analysis in psychological research}, journal={Psychological Methods}, year={1999}, volume={4}, number={3}, pages={272--299}, doi={10.1037/1082-989X.4.3.272}}
@article{hayton2004parallel, author={Hayton, James C. and Allen, David G. and Scarpello, Vida}, title={Factor retention decisions in exploratory factor analysis: a tutorial on parallel analysis}, journal={Organizational Research Methods}, year={2004}, volume={7}, number={2}, pages={191--205}, doi={10.1177/1094428104263675}}
@article{mcneish2018alpha, author={McNeish, Daniel}, title={Thanks coefficient alpha, we’ll take it from here}, journal={Psychological Methods}, year={2018}, volume={23}, number={3}, pages={412--433}, doi={10.1037/met0000144}}
@article{dunn2014omega, author={Dunn, Thomas J. and Baguley, Thom and Brunsden, Vivienne}, title={From alpha to omega: A practical solution to the pervasive problem of internal consistency estimation}, journal={British Journal of Psychology}, year={2014}, volume={105}, number={3}, pages={399--412}, doi={10.1111/bjop.12046}}
@article{sijtsma2009alpha, author={Sijtsma, Klaas}, title={On the use, the misuse, and the very limited usefulness of Cronbach’s alpha}, journal={Psychometrika}, year={2009}, volume={74}, number={1}, pages={107--120}, doi={10.1007/s11336-008-9101-0}}
@article{appelbaum2018jars, author={Appelbaum, Mark and Cooper, Harris and Kline, Rex B. and Mayo-Wilson, Evan and Nezu, Arthur M. and Rao, Stephen M.}, title={Journal article reporting standards for quantitative research in psychology}, journal={American Psychologist}, year={2018}, volume={73}, number={1}, pages={3--25}, doi={10.1037/amp0000191}}
R