Modelowanie równań strukturalnych (SEM) łączy model pomiarowy, opisujący relacje między konstruktami a wskaźnikami, z modelem strukturalnym, który przedstawia zależności między konstruktami. Pozwala testować rozbudowane hipotezy, uwzględniać błąd pomiaru i oceniać efekty bezpośrednie oraz pośrednie.
Kiedy SEM ma sens?
SEM jest użyteczne, gdy teoria wskazuje strukturę zmiennych latentnych, badacz chce porównać konkurencyjne modele albo analizuje mediację, zmianę w czasie lub równoważność pomiaru między grupami. Nie jest jednak „lepszą regresją” stosowaną automatycznie do każdego zbioru danych. Złożoność modelu musi wynikać z teorii i jakości pomiaru.
CB-SEM czy PLS-SEM?
W podejściu opartym na kowariancji (CB-SEM) nacisk kładzie się zwykle na odtworzenie macierzy kowariancji i ocenę zgodności modelu teoretycznego z danymi. PLS-SEM jest podejściem kompozytowym, często wybieranym z myślą o predykcji lub konstrukcjach formacyjnych. Wybór nie powinien opierać się wyłącznie na liczebności próby ani na tym, które narzędzie daje „lepsze” współczynniki. Trzeba uwzględnić cel badania, definicję konstruktów i charakter estymowanego modelu.
Rzetelny proces analizy
- Specyfikacja teorii: kierunek zależności i zakres konstruktu ustala się przed analizą.
- Ocena danych: braki, obserwacje wpływowe, rozkłady i sposób powstania danych.
- Model pomiarowy: ładunki, rzetelność, trafność zbieżna i różnicowa oraz ewentualna inwariancja.
- Model strukturalny: współczynniki ścieżek, efekty pośrednie, niepewność i wyjaśniona wariancja.
- Ocena dopasowania i reszt: kilka komplementarnych wskaźników oraz diagnostyka lokalna.
- Walidacja: analiza wrażliwości, porównanie modeli i — jeśli to możliwe — replikacja.
Wskaźniki dopasowania bez „magicznych progów”
Chi-kwadrat, CFI/TLI, RMSEA i SRMR opisują różne aspekty dopasowania. Popularne wartości graniczne są wskazówkami pochodzącymi z określonych warunków symulacyjnych, a nie uniwersalnymi prawami. Decyzja powinna uwzględniać wielkość próby, złożoność modelu, jakość wskaźników, reszty i sens teoretyczny. Modyfikowanie modelu wyłącznie według indeksów modyfikacji łatwo prowadzi do przeuczenia.
Co powinien zawierać raport?
Należy opisać estymator, sposób obsługi braków danych, identyfikację modelu, standaryzację, kryteria oceny, współczynniki z przedziałami ufności oraz wszystkie modyfikacje wprowadzone po obejrzeniu danych. Dobrą praktyką jest diagram modelu, tabela ładunków i ścieżek oraz oddzielenie analiz potwierdzających od eksploracyjnych.
Planujesz CFA, CB-SEM lub PLS-SEM? Pomagamy przełożyć teorię na identyfikowalny model, wykonać analizę w R i przygotować raport odpowiadający standardom publikacyjnym.
Karta specyfikacji SEM
| Teoria | Jakie konstrukty i kierunki zależności przewidujesz? |
|---|---|
| Pomiar | Które wskaźniki mierzą każdy konstrukt i dlaczego? |
| Identyfikacja | Jak ustalono skalę zmiennych latentnych i liczbę stopni swobody? |
| Estymacja | Czy estymator odpowiada skali i rozkładowi danych? |
| Ocena | Jakie reszty, parametry i wskaźniki dopasowania będą analizowane? |
| Walidacja | Czy model zostanie sprawdzony na nowej próbie? |
Wzór raportowania dopasowania
Kiedy nie modyfikować modelu?
Jeżeli indeks modyfikacji sugeruje korelację błędów bez uzasadnienia treściowego, zmiana może tylko dopasować model do szumu. Zapisz ją jako eksploracyjną i sprawdź na niezależnej próbie.
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 (Hu i Bentler, 1999).
Kod w R, Pythonie i IBM SPSS Statistics
Nazwy wskaźników i relacji w kodzie są przykładowe. Estymator, identyfikację, traktowanie zmiennych porządkowych i braków oraz korekty modelu dobierz przed interpretacją współczynników i miar dopasowania.
CFA i SEM: model pomiarowy, dopasowanie i rzetelność złożona
R
library(lavaan)
dane <- read.csv("dane.csv")
model <- '
F1 =~ item1 + item2 + item3
F2 =~ item4 + item5 + item6
F2 ~ F1
'
fit <- sem(model, data = dane, estimator = "MLR", missing = "fiml")
summary(fit, fit.measures = TRUE, standardized = TRUE, ci = TRUE)
fitMeasures(fit, c("fmin", "chisq", "df", "cfi", "tli", "nfi", "pnfi",
"gfi_lisrel", "pgfi", "rmsea", "rmsea.ci.lower",
"rmsea.ci.upper", "srmr"))
modindices(fit, sort. = TRUE, maximum.number = 10)
# CR dla jednego czynnika na podstawie standaryzowanych ładunków.
std <- standardizedSolution(fit)
lambda <- subset(std, op == "=~" & lhs == "F1")$est.std
CR <- sum(lambda)^2 / (sum(lambda)^2 + sum(1 - lambda^2))
CRPython
import pandas as pd
from semopy import Model, calc_stats
df = pd.read_csv("dane.csv")
opis = """
F1 =~ item1 + item2 + item3
F2 =~ item4 + item5 + item6
F2 ~ F1
"""
model = Model(opis)
model.fit(df)
print(model.inspect(std_est=True))
print(calc_stats(model).T)
# semopy jest pakietem dodatkowym; przed raportem sprawdź wersję,
# estymator, obsługę braków i definicje prezentowanych indeksów.IBM SPSS Statistics — Syntax
* IBM SPSS Statistics nie estymuje klasycznych modeli CFA/SEM natywną komendą syntax.
* Użyj IBM SPSS Amos (model graficzny/tekstowy Amos), R/lavaan albo Python/semopy.
* Nie zastępuj CFA komendą FACTOR: EFA i CFA odpowiadają na inne pytania.Bibliografia oprogramowania i wykorzystanych pakietów
W przykładach użyto: R, Python, IBM SPSS Statistics, lavaan, pandas, semopy. 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.
- lavaan: Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1–36. https://doi.org/10.18637/jss.v048.i02
- 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
- semopy: Igolkina, A. A., & Meshcheryakov, G. (2020). semopy: A Python package for structural equation modeling. Structural Equation Modeling: A Multidisciplinary Journal, 27(6), 952–963. https://doi.org/10.1080/10705511.2019.1704289
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.}
}@article{rosseel2012lavaan,
author = {Rosseel, Yves},
title = {lavaan: An R Package for Structural Equation Modeling},
journal = {Journal of Statistical Software},
year = {2012},
volume = {48},
number = {2},
pages = {1--36},
doi = {10.18637/jss.v048.i02}
}@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{igolkina2020semopy,
author = {Igolkina, Anna A. and Meshcheryakov, Georgy},
title = {semopy: A Python Package for Structural Equation Modeling},
journal = {Structural Equation Modeling: A Multidisciplinary Journal},
year = {2020},
volume = {27},
number = {6},
pages = {952--963},
doi = {10.1080/10705511.2019.1704289}
}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)
- Hu, L., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling, 6(1), 1–55. https://doi.org/10.1080/10705519909540118
- Bentler, P. M. (1990). Comparative fit indexes in structural models. Psychological Bulletin, 107(2), 238–246. https://doi.org/10.1037/0033-2909.107.2.238
- 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
- Lang, T. A., & Altman, D. G. (2015). Basic statistical reporting for articles published in biomedical journals: The SAMPL guidelines. International Journal of Nursing Studies, 52(1), 5–9. https://doi.org/10.1016/j.ijnurstu.2014.09.006
- Wilkinson, L., & Task Force on Statistical Inference. (1999). Statistical methods in psychology journals: Guidelines and explanations. American Psychologist, 54(8), 594–604. https://doi.org/10.1037/0003-066X.54.8.594
- Altman, D. G. (2015). Making research articles fit for purpose: Structured reporting of key methods and findings. Trials, 16, 53. https://doi.org/10.1186/s13063-015-0575-7
Cytowania BibTeX
@article{hu1999sem, author={Hu, Li-tze and Bentler, Peter M.}, title={Cutoff criteria for fit indexes in covariance structure analysis}, journal={Structural Equation Modeling}, year={1999}, volume={6}, number={1}, pages={1--55}, doi={10.1080/10705519909540118}}@article{bentler1990cfi, author={Bentler, Peter M.}, title={Comparative fit indexes in structural models}, journal={Psychological Bulletin}, year={1990}, volume={107}, number={2}, pages={238--246}, doi={10.1037/0033-2909.107.2.238}}@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}}@article{lang2015sampl, author={Lang, Thomas A. and Altman, Douglas G.}, title={Basic statistical reporting for articles published in biomedical journals: the SAMPL guidelines}, journal={International Journal of Nursing Studies}, year={2015}, volume={52}, number={1}, pages={5--9}, doi={10.1016/j.ijnurstu.2014.09.006}}@article{wilkinson1999statistical, author={Wilkinson, Leland and {Task Force on Statistical Inference}}, title={Statistical methods in psychology journals: Guidelines and explanations}, journal={American Psychologist}, year={1999}, volume={54}, number={8}, pages={594--604}, doi={10.1037/0003-066X.54.8.594}}@article{altman2015reporting, author={Altman, Douglas G.}, title={Making research articles fit for purpose: structured reporting of key methods and findings}, journal={Trials}, year={2015}, volume={16}, pages={53}, doi={10.1186/s13063-015-0575-7}}