Metodolog.pl · praktyczna baza wiedzy

Modelowanie równań strukturalnych (SEM): od teorii do raportu

SEM bez skrótów myślowych: model pomiarowy i strukturalny, CB-SEM a PLS-SEM, dopasowanie, założenia oraz raportowanie wyników.

Strona główna / Blog / Modelowanie równań strukturalnych (SEM): od teorii do raportu

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

  1. Specyfikacja teorii: kierunek zależności i zakres konstruktu ustala się przed analizą.
  2. Ocena danych: braki, obserwacje wpływowe, rozkłady i sposób powstania danych.
  3. Model pomiarowy: ładunki, rzetelność, trafność zbieżna i różnicowa oraz ewentualna inwariancja.
  4. Model strukturalny: współczynniki ścieżek, efekty pośrednie, niepewność i wyjaśniona wariancja.
  5. Ocena dopasowania i reszt: kilka komplementarnych wskaźników oraz diagnostyka lokalna.
  6. 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

Zestawienie informacji omawianych w tej sekcji
TeoriaJakie konstrukty i kierunki zależności przewidujesz?
PomiarKtóre wskaźniki mierzą każdy konstrukt i dlaczego?
IdentyfikacjaJak ustalono skalę zmiennych latentnych i liczbę stopni swobody?
EstymacjaCzy estymator odpowiada skali i rozkładowi danych?
OcenaJakie reszty, parametry i wskaźniki dopasowania będą analizowane?
WalidacjaCzy model zostanie sprawdzony na nowej próbie?

Wzór raportowania dopasowania

Model oszacowano metodą [ML/MLR/WLSMV] na podstawie N = [...]. Dopasowanie wyniosło: χ²(df) = [...], p = [...], CFI = [...], TLI = [...], RMSEA = [...] 90% CI [...], SRMR = [...]. Ocenę oparto również na resztach, wielkości i precyzji parametrów oraz sensie teoretycznym.

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.

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

Przykład reprodukowalny

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

Dane wejściowe: item1–item6 to wskaźniki dwóch konstruktów; y jest wynikiem. Specyfikacja musi wynikać z teorii.

Co odczytać: Raportuj estymator, χ², df, CFI/TLI, RMSEA z CI, SRMR, parametry z CI i diagnostykę. Nie modyfikuj modelu mechanicznie.

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))
CR
Python
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.

  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. 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
  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. 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 projekt

Bibliografia i dalsza literatura naukowa (APA 7)

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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}}
R