Słownik metodologiczny · Modele SEM

Skalowany chi-kwadrat Satorry–Bentlera – test dopasowania przy nienormalnych danych

Skalowany chi-kwadrat Satorry–Bentlera koryguje test dopasowania modelu SEM na nienormalność danych. Pokazujemy współczynnik skalujący, estymator MLM w lavaan, skalowany test różnicy i gotowy opis do pracy.

Strona główna / Słownik / Skalowany chi-kwadrat Satorry–Bentlera
W skrócie: Skalowany chi-kwadrat Satorry–Bentlera to zwykły χ² metody ML podzielony przez współczynnik skalujący c zależny od kurtozy danych. Chroni przed odrzucaniem poprawnych modeli, gdy pozycje mają grube ogony. Modele zagnieżdżone porównuj skalowanym testem różnicy (Satorra i Bentler, 2001), a nie przez odejmowanie skalowanych χ².

Co to jest skalowany chi-kwadrat Satorry–Bentlera?

Skalowany chi-kwadrat Satorry–Bentlera (ang. Satorra–Bentler scaled chi-square, SB χ²) to poprawiona statystyka dopasowania modelu SEM dla danych, które nie mają rozkładu normalnego. Zwykły χ² (CMIN) metody największej wiarygodności dzieli się przez współczynnik skalujący c, oszacowany z momentów czwartego rzędu, czyli z kurtozy danych: SB χ² = χ²ML/c. Liczba stopni swobody się nie zmienia. Przy danych normalnych c jest bliskie 1, a przy grubych ogonach rośnie powyżej 1. Curran i in. (1996) pokazali w symulacji CFA, że zwykły χ² rośnie wraz z nienormalnością, a skalowany pozostaje nieobciążony.

Jak go używać

W lavaan SB χ² daje estymator MLM. Estymator MLR zwraca skalowany test Yuana–Bentlera, asymptotycznie równoważny i dostępny także przy brakach danych. Odporne wersje mają też CFI, TLI i RMSEA.

Skalowanych χ² nie wolno po prostu odejmować. Satorra i Bentler (2001) podali skalowany test różnicy: współczynnik różnicy to cd = (df₀c₀ − df₁c₁)/(df₀ − df₁), a statystyka to różnica zwykłych χ² podzielona przez cd. Gdy cd wychodzi ujemne, użyj wersji z 2010 roku (Satorra i Bentler, 2010).

Przykład

W danych symulowanych 300 osób odpowiedziało na osiem pozycji dwóch czynników. Odpowiedzi miały grube ogony, a model był poprawny. Zwykły test odrzucał model: χ²(19) = 34.44, p = .016. Skalowany go nie odrzucał: SB χ²(19) = 23.93, p = .199, c = 1.439. Po nałożeniu równych ładunków w każdym czynniku skalowany test różnicy dał Δχ²(6) = 13.76, p = .032. Błędne odjęcie skalowanych χ² dało 16.14 (p = .013), a różnica zwykłych χ² aż 31.15 (p < .001).

Jak opisać w pracy

Ze względu na leptokurtyczne rozkłady pozycji model oszacowano metodą ML ze skalowanym testem Satorry–Bentlera (MLM). Model dwuczynnikowy był dobrze dopasowany, SB χ²(19) = 23.93, p = .199 (współczynnik skalujący = 1.439). Nałożenie równych ładunków istotnie pogorszyło dopasowanie, skalowany test różnicy Δχ²(6) = 13.76, p = .032.

Na co uważać

  • Poprawka nie naprawia złego modelu. Koryguje tylko wpływ nienormalności na test i błędy standardowe.
  • Raportuj, którą statystykę podajesz. W tabeli dopasowania podaj SB χ², c i odporne CFI oraz RMSEA.
  • Pozycje porządkowe z małą liczbą kategorii lepiej modelować estymatorem WLSMV (wpis Kategorialna CFA dla skal Likerta).
Przykład reprodukowalny

Skalowany chi-kwadrat Satorry–Bentlera w R

Kod szacuje model dwuczynnikowy i model z równymi ładunkami estymatorem MLM, pokazuje zwykły i skalowany χ² oraz porównuje poprawny skalowany test różnicy z błędnym odejmowaniem.

SB χ² i skalowany test różnicy w lavaan

Dane wejściowe: osiem pozycji dwóch skorelowanych czynników u 300 osób, z grubymi ogonami (wielowymiarowy rozkład t, df = 8) (dane symulowane, set.seed(3061)).

Co odczytać: chisq i chisq.scaled z p, chisq.scaling.factor, kolumnę Chisq diff skalowanego testu różnicy oraz wartości bledna i ml_diff.

R
suppressPackageStartupMessages(library(lavaan))
set.seed(3061)
n <- 300
f1 <- rnorm(n); f2 <- 0.4 * f1 + rnorm(n, 0, sqrt(1 - 0.4^2))   # dwa czynniki, r = .40
poz <- function(f, l) l * f + rnorm(n, 0, sqrt(1 - l^2))
dane <- data.frame(a1 = poz(f1, .7), a2 = poz(f1, .7), a3 = poz(f1, .6), a4 = poz(f1, .6),
                   b1 = poz(f2, .7), b2 = poz(f2, .7), b3 = poz(f2, .6), b4 = poz(f2, .6))
dane <- dane * sqrt(6 / rchisq(n, 8))                       # grube ogony: wielowymiarowy rozkład t (df = 8)
m2 <- "A =~ a1 + a2 + a3 + a4
       B =~ b1 + b2 + b3 + b4"
m1 <- "A =~ a*a1 + a*a2 + a*a3 + a*a4
       B =~ b*b1 + b*b2 + b*b3 + b*b4"                  # zagnieżdżony: równe ładunki
fit2 <- cfa(m2, data = dane, estimator = "MLM")
fit1 <- cfa(m1, data = dane, estimator = "MLM")
round(fitMeasures(fit2, c("chisq", "df", "pvalue", "chisq.scaled", "pvalue.scaled",
                          "chisq.scaling.factor")), 3)
lavTestLRT(fit1, fit2, method = "satorra.bentler.2001")      # skalowany test różnicy
bledna <- unname(fitMeasures(fit1, "chisq.scaled") - fitMeasures(fit2, "chisq.scaled")) # błędne odejmowanie
ml_diff <- unname(fitMeasures(fit1, "chisq") - fitMeasures(fit2, "chisq"))         # różnica zwykłych χ² ML
round(c(bledna = bledna, p_bledna = pchisq(bledna, 6, lower.tail = FALSE),
        ml_diff = ml_diff, p_ml = pchisq(ml_diff, 6, lower.tail = FALSE)), 3)
Wynik w R
               chisq                   df               pvalue 
              34.442               19.000                0.016 
        chisq.scaled        pvalue.scaled chisq.scaling.factor 
              23.933                0.199                1.439 

Scaled Chi-Squared Difference Test (method = “satorra.bentler.2001”)

lavaan->lavTestLRT():  
   lavaan NOTE: The “Chisq” column contains standard test statistics, not the 
   robust test that should be reported per model. A robust difference test is 
   a function of two standard (not robust) statistics.

     Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)  
fit2 19 6414.2 6477.2 34.442                                         
fit1 25 6433.4 6474.1 65.596      13.76 0.098798       6    0.03243 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  bledna p_bledna  ml_diff     p_ml 
  16.136    0.013   31.154    0.000

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje cfa() i lavTestLRT() pakietu lavaan). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. lavaan (wersja 0.7-2): 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

Najczęstsze pytania

Co oznacza współczynnik skalujący większy niż 1?

Że dane mają grubsze ogony niż rozkład normalny i zwykły χ² jest zawyżony. W przykładzie c = 1.439, więc skalowany χ² był o około 30% mniejszy od zwykłego.

Czym estymator MLM różni się od MLR?

MLM daje skalowany χ² Satorry–Bentlera i wymaga pełnych danych. MLR daje asymptotycznie równoważny test Yuana–Bentlera i działa także z brakami danych (FIML).

Jak policzyć skalowany test różnicy Satorry–Bentlera w R?

Dopasuj oba modele z estimator = "MLM" i wywołaj lavTestLRT(m_ograniczony, m_pelny, method = "satorra.bentler.2001"). Gdy wynik jest ujemny, użyj method = "satorra.bentler.2010".

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Curran, P. J., West, S. G., & Finch, J. F. (1996). The robustness of test statistics to nonnormality and specification error in confirmatory factor analysis. Psychological Methods, 1(1), 16–29. https://doi.org/10.1037/1082-989x.1.1.16
  2. Satorra, A., & Bentler, P. M. (2001). A scaled difference chi-square test statistic for moment structure analysis. Psychometrika, 66(4), 507–514. https://doi.org/10.1007/bf02296192
  3. Satorra, A., & Bentler, P. M. (2010). Ensuring positiveness of the scaled difference chi-square test statistic. Psychometrika, 75(2), 243–248. https://doi.org/10.1007/s11336-009-9135-y ● Otwarty dostęp: pełny tekst

Cytowania BibTeX

@article{curran1996robustness, author={Curran, Patrick J. and West, Stephen G. and Finch, John F.}, title={{The robustness of test statistics to nonnormality and specification error in confirmatory factor analysis}}, journal={Psychological Methods}, year={1996}, volume={1}, number={1}, pages={16--29}, doi={10.1037/1082-989x.1.1.16}}
@article{satorra2001scaled, author={Satorra, Albert and Bentler, Peter M.}, title={{A scaled difference chi-square test statistic for moment structure analysis}}, journal={Psychometrika}, year={2001}, volume={66}, number={4}, pages={507--514}, doi={10.1007/bf02296192}}
@article{satorra2010ensuring, author={Satorra, Albert and Bentler, Peter M.}, title={{Ensuring positiveness of the scaled difference chi-square test statistic}}, journal={Psychometrika}, year={2010}, volume={75}, number={2}, pages={243--248}, doi={10.1007/s11336-009-9135-y}}
R