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
- Sprawdź jakość pozycji, braki danych i adekwatność macierzy korelacji.
- Dobierz korelacje i estymator do skali pomiaru; pozycje porządkowe mogą wymagać korelacji polichorycznych.
- 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.
- Jeśli czynniki mogą być skorelowane, zastosuj rotację ukośną, np. oblimin lub promax.
- 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?
| Cel | Metoda | Kluczowa decyzja |
|---|---|---|
| Odkrycie możliwej struktury latentnej | EFA | Liczba czynników, estymator, rotacja |
| Sprawdzenie wcześniej określonego modelu | CFA | Specyfikacja, estymator, dopasowanie |
| Kompresja danych bez modelu cechy ukrytej | PCA | Liczba składowych |
Minimalny raport EFA
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.
Pojęcia potrzebne do tego zagadnienia
Definicje poniżej rozwijają najważniejsze terminy, pokazują wzory, przykłady i gotowe raportowanie w APA 7.
Definicje, zalecenia interpretacyjne i sposób raportowania oparto na literaturze metodologicznej wskazanej w bibliografii (Fabrigar et al., 1999).
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
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$PhiPython
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.
- 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/
- Python: Van Rossum, G., & Drake, F. L., Jr. (2009). Python 3 reference manual. CreateSpace.
- IBM SPSS Statistics: IBM Corp. (2025). IBM SPSS Statistics for Macintosh (Version 31.0) [Computer software]. IBM Corp.
- 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
- 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
- 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
- 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 projektBibliografia i dalsza literatura naukowa (APA 7)
- 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
- 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
- McNeish, D. (2018). Thanks coefficient alpha, we’ll take it from here. Psychological Methods, 23(3), 412–433. https://doi.org/10.1037/met0000144
- 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
- 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
- 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}}