Oferty statystyczne Tutoriale Opinie Kontakt

KMO i test sferyczności Bartletta – wzory i przykład

Miara KMO (Kaisera-Meyera-Olkina) i test sferyczności Bartletta sprawdzają, czy dane w ogóle nadają się do analizy czynnikowej. Przykładowe pytanie z pracy dyplomowej: czy cztery pozycje kwestionariusza stresu przed sesją mają ze sobą na tyle dużo wspólnego, że warto szukać w nich wspólnego czynnika?

W prostych słowachAnaliza czynnikowa szuka ukrytej cechy, która „spina” kilka pytań. Test Bartletta sprawdza najprostszą rzecz: czy pytania są w ogóle ze sobą skorelowane. KMO sprawdza coś subtelniejszego: czy korelacje wynikają z czegoś wspólnego dla wszystkich pytań, a nie tylko z powiązań pojedynczych par. Gdy po usunięciu wpływu pozostałych pytań korelacje pary prawie znikają, KMO jest wysokie.

Kiedy stosować KMO i test Bartletta?

  • przed eksploracyjną analizą czynnikową (EFA) lub analizą głównych składowych (PCA), jako sprawdzenie warunków wstępnych;
  • masz kilka pozycji ilościowych lub porządkowych (np. skala 1–5) z tej samej ankiety;
  • masz macierz korelacji tych pozycji i liczbę osób (do testu Bartletta).

Oba wskaźniki dotyczą całej macierzy korelacji Pearsona między pozycjami. KMO opiera się na korelacjach cząstkowych. Po analizie czynnikowej rzetelność skali opiszesz alfą Cronbacha, a w modelu konfirmacyjnym – wskaźnikami CR i AVE. Gotowy raport z całą procedurą zobaczysz w przykładowym raporcie z analizy czynnikowej.

Wzory na KMO i test Bartletta

$$ KMO = \frac{\sum\sum_{i \ne j} r_{ij}^2}{\sum\sum_{i \ne j} r_{ij}^2 + \sum\sum_{i \ne j} a_{ij}^2} \qquad \chi^2 = -\left(n - 1 - \frac{2p + 5}{6}\right) \ln\lvert R\rvert, \quad df = \frac{p(p-1)}{2} $$

Na głos: „KMO to suma kwadratów zwykłych korelacji podzielona przez tę samą sumę plus sumę kwadratów korelacji cząstkowych; chi-kwadrat Bartletta to minus logarytm wyznacznika macierzy korelacji, pomnożony przez poprawkę zależną od n i p”.

\(r_{ij}\)
zwykła korelacja pozycji i z pozycją j
\(a_{ij}\)
korelacja cząstkowa pozycji i oraz j po usunięciu wpływu wszystkich pozostałych pozycji
\(\sum\sum_{i \ne j}\)
suma po wszystkich parach różnych pozycji (liczenie każdej pary raz lub dwa razy nie zmienia wyniku, byle tak samo w liczniku i mianowniku)
\(\lvert R\rvert\)
wyznacznik macierzy korelacji: 1, gdy pozycje są zupełnie nieskorelowane, i coraz bliżej 0, gdy są silnie skorelowane
\(\ln\)
logarytm naturalny (w R: log())
\(n,\ p\)
liczba osób i liczba pozycji
\(df\)
stopnie swobody: liczba par pozycji

Przykład krok po kroku

Trzydzieścioro studentów wypełniło cztery pozycje skali „stres przed sesją”. Dla prostoty przyjmijmy, że każda para pozycji koreluje dokładnie na poziomie r = 0,50.

Tabela 1. Korelacje zwykłe i cząstkowe dla wszystkich par pozycji
pararr²cząstkowa aa²
1–20,500,250,250,0625
1–30,500,250,250,0625
1–40,500,250,250,0625
2–30,500,250,250,0625
2–40,500,250,250,0625
3–40,500,250,250,0625
suma1,500,375
  1. Kwadraty zwykłych korelacji. Każda para: 0,50 · 0,50 = 0,25. Par jest 6, więc suma to 6 · 0,25 = 1,50.
  2. Korelacja cząstkowa – krok pierwszy (wzór dla 3 zmiennych). Usuwamy wpływ pozycji 3 z korelacji pozycji 1 i 2: \(r_{12 \cdot 3} = (0{,}5 - 0{,}5 \cdot 0{,}5) / \sqrt{(1 - 0{,}25)(1 - 0{,}25)} = 0{,}25 / 0{,}75 = 0{,}333\).
  3. Krok drugi. Ten sam wzór, ale na korelacjach już oczyszczonych z pozycji 3 – teraz usuwamy pozycję 4. Wszystkie one wynoszą 0,333, a 0,333 · 0,333 = 0,111. \(a_{12} = (0{,}333 - 0{,}111) / (1 - 0{,}111) = 0{,}222 / 0{,}889 = 0{,}25\). Przez symetrię każda para ma tę samą wartość.
  4. Kwadraty cząstkowych. 0,25 · 0,25 = 0,0625; sześć par: 6 · 0,0625 = 0,375.
  5. KMO. 1,50 / (1,50 + 0,375) = 1,50 / 1,875 = 0,80.
  6. Wyznacznik. Dla macierzy, w której wszystkie korelacje są równe r, wyznacznik to \((1 - r)^{p-1}(1 + (p-1)r) = 0{,}5^3 \cdot 2{,}5 = 0{,}125 \cdot 2{,}5 = 0{,}3125\). Logarytm: ln 0,3125 = −1,163.
  7. Poprawka. (2 · 4 + 5) / 6 = 13 / 6 = 2,167. Mnożnik: 30 − 1 − 2,167 = 26,833.
  8. Chi-kwadrat Bartletta. \(\chi^2 = -26{,}833 \cdot (-1{,}163) = 31{,}21\), df = 4 · 3 / 2 = 6.
  9. Decyzja. Wartość krytyczna chi-kwadrat dla df = 6 i α = 0,05 to 12,59 (tablice albo w R: qchisq(0.95, 6)). 31,21 jest dużo większe, p < 0,001.

Gdyby skala miała tylko trzy pozycje, wystarczyłby pierwszy krok. Suma r² wyniosłaby 3 · 0,25 = 0,75, a suma a² = 3 · 0,111 = 0,333. KMO = 0,75 / (0,75 + 0,333) = 0,69. Te same korelacje, a niższe KMO – ta miara rośnie z liczbą pozycji.

Dwa panele słupków: po lewej zwykłe korelacje 0,50 i cząstkowe 0,25 dla sześciu par, KMO 0,80; po prawej tylko dwie pary z korelacją 0,50 i cząstkową 0,50, KMO 0,50
Rys. 1. Idea KMO. Po lewej (nasz przykład) korelacje cząstkowe są o połowę mniejsze od zwykłych: pozycje łączy coś wspólnego, więc KMO = 0,80. Po prawej pozycje tworzą dwie niezależne pary. Po usunięciu wpływu pozostałych pozycji nic się nie zmienia, więc KMO spada do 0,50 i jeden wspólny czynnik nie ma sensu.
Sieć korelacji z aplikacji SZTOS: cztery węzły A, B, C i D połączone sześcioma jednakowo grubymi zielonymi liniami ciągłymi
Rys. 2. Sieć korelacji z modułu analizy czynnikowej aplikacji SZTOS dla 30 symulowanych odpowiedzi o dokładnie takiej macierzy korelacji (A–D to pozycje 1–4). Zielony kolor oznacza korelację dodatnią, grubość linii – jej siłę, a linia ciągła – istotność. W tym samym raporcie SZTOS podaje KMO = 0,80 i χ²(6) = 31,21.
Krzywa rozkładu chi-kwadrat z 6 stopniami swobody; wartość krytyczna 12,59 zaznaczona niebieską przerywaną linią, wynik 31,21 czerwoną linią daleko w prawym ogonie
Rys. 3. Test Bartletta. Niebieskie pole na prawo od 12,59 to 5% najbardziej skrajnych wyników przy założeniu, że pozycje w populacji nie są skorelowane. Nasze χ² = 31,21 leży daleko dalej, więc odrzucamy hipotezę zerową o macierzy korelacji jednostkowej.

Jak zinterpretować i opisać wynik?

Kaiser (1974) zaproponował słowną skalę: KMO ≥ 0,90 – znakomite, 0,80–0,89 – bardzo dobre, 0,70–0,79 – średnie, 0,60–0,69 – mierne, 0,50–0,59 – słabe, poniżej 0,50 – nie do przyjęcia. Nasze 0,80 to wynik bardzo dobry. Warto też spojrzeć na KMO każdej pozycji osobno (MSA). Pozycja z MSA poniżej 0,50 to kandydatka do usunięcia. Test Bartletta mówi tylko, że korelacje nie są wszystkie równe zero. Przy dużych próbach wychodzi istotny prawie zawsze, więc sam w sobie niewiele dowodzi. To raczej minimalny warunek niż mocny argument.

Zapis w stylu APA: Dane spełniały warunki analizy czynnikowej. Miara adekwatności doboru próby Kaisera-Meyera-Olkina wyniosła KMO = 0,80, a test sferyczności Bartletta był istotny statystycznie, χ²(6) = 31,21; p < 0,001.

Jak policzyć KMO i test Bartletta w R?

R <- matrix(0.5, 4, 4); diag(R) <- 1          # 4 pozycje skali stresu, każda para r = 0.5
n <- 30; p <- ncol(R)                          # 30 studentów, 4 pozycje

# 1) „ręcznie”: korelacja cząstkowa w dwóch krokach (wzór dla 3 zmiennych)
cz <- function(rxy, rxz, ryz) (rxy - rxz * ryz) / sqrt((1 - rxz^2) * (1 - ryz^2))
r12_3  <- cz(0.5, 0.5, 0.5)                    # bez wpływu pozycji 3: 0.333
r12_34 <- cz(r12_3, r12_3, r12_3)              # bez wpływu 3 i 4:    0.25
KMO <- 6 * 0.5^2 / (6 * 0.5^2 + 6 * r12_34^2) # 1.5 / (1.5 + 0.375)
chi2 <- -(n - 1 - (2 * p + 5) / 6) * log(det(R))
round(c(r12_3 = r12_3, r12_34 = r12_34, KMO = KMO, wyznacznik = det(R), chi2 = chi2), 4)
pchisq(chi2, df = p * (p - 1) / 2, lower.tail = FALSE)   # wartość p

# 2) gotowe funkcje z pakietu psych
psych::KMO(R)$MSA
psych::cortest.bartlett(R, n = 30)

Wynik w konsoli R:

     r12_3     r12_34        KMO wyznacznik       chi2 
    0.3333     0.2500     0.8000     0.3125    31.2112 
[1] 2.310057e-05
[1] 0.8
$chisq
[1] 31.21121

$p.value
[1] 2.310057e-05

$df
[1] 6

Na surowych danych wpisujesz po prostu psych::KMO(dane) i psych::cortest.bartlett(dane) – funkcje same policzą macierz korelacji i liczbę osób. psych::KMO() zwraca też MSA dla każdej pozycji.

Co zrobić, gdy KMO jest za niskie?

Najpierw sprawdź MSA poszczególnych pozycji i treść pytań o najniższych wartościach. Często to pozycja, która mierzy coś innego niż reszta skali, albo pytanie odwrócone, którego nie przekodowano. Usuń ją i policz KMO jeszcze raz. Pomaga też większa próba i dodanie pozycji, które dobrze pasują do skali. Nie usuwaj jednak pozycji „na ślepo”, tylko po to, by podbić wynik. Każdą decyzję uzasadnij treścią pytania.

Najczęstsze błędy

  • Traktowanie istotnego testu Bartletta jako dowodu, że analiza czynnikowa „wyjdzie” – to tylko warunek minimalny.
  • Podawanie samego ogólnego KMO bez sprawdzenia MSA pojedynczych pozycji.
  • Liczenie KMO na pozycjach z różnych, niezwiązanych skal naraz.
  • Pomijanie liczby osób przy liczeniu testu Bartletta z macierzy korelacji – wynik zależy od n.
  • Zapominanie o przekodowaniu pozycji odwróconych przed policzeniem korelacji.

Bibliografia

  1. Bartlett, M. S. (1950). Tests of significance in factor analysis. British Journal of Statistical Psychology, 3(2), 77–85.
  2. Kaiser, H. F. (1974). An index of factorial simplicity. Psychometrika, 39(1), 31–36. https://doi.org/10.1007/BF02291575
  3. Dziuban, C. D., & Shirkey, E. C. (1974). When is a correlation matrix appropriate for factor analysis? Some decision rules. Psychological Bulletin, 81(6), 358–361.
  4. Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE.
  5. Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/

Zobacz też

Przygotowujesz artykuł, doktorat lub grant?

Zaplanujemy i wykonamy analizy, przygotujemy raport z tabelami, wykresami i kodem R oraz pomożemy odpowiedzieć na uwagi recenzentów dotyczące statystyki.

Na skróty