Słownik metodologiczny · Testy statystyczne

Test Stuarta–Maxwella – czy rozkład kategorii się zmienił?

Test Stuarta–Maxwella sprawdza, czy w tabeli k × k dla tych samych osób rozkład kategorii w obu pomiarach jest taki sam. Pokazujemy, czym różni się od testu symetrii Bowkera, przykład w R, opis do pracy i pułapki.

Strona główna / Słownik / Test Stuarta–Maxwella
W skrócie: Test Stuarta–Maxwella sprawdza, czy w kwadratowej tabeli k × k dla tych samych osób (dwa pomiary, dwóch sędziów) rozkład kategorii w wierszach jest taki sam jak w kolumnach. Jest uogólnieniem testu McNemara, ma df = k − 1 i testuje słabszą hipotezę niż test symetrii Bowkera.

Co to jest test Stuarta–Maxwella?

Test Stuarta–Maxwella (ang. Stuart–Maxwell test, test jednorodności brzegów) sprawdza, czy w kwadratowej tabeli krzyżowej k × k dla tych samych osób rozkład kategorii w wierszach jest taki sam jak w kolumnach. Stuart (1955) zaproponował go jako test jednorodności rozkładów brzegowych, a Maxwell (1970) zastosował do porównania klasyfikacji tych samych osób przez dwóch niezależnych sędziów. Jest uogólnieniem testu McNemara na więcej kategorii; przy k = 2 daje ten sam wynik co McNemar bez poprawki na ciągłość. Statystyka ma w przybliżeniu rozkład chi-kwadrat z df = k − 1.

Jednorodność brzegów a symetria

Test symetrii Bowkera pyta o coś mocniejszego: czy z kategorii i do j przeszło tyle samo osób co z j do i (df = k(k − 1)/2). Tabela symetryczna zawsze ma jednorodne brzegi, ale nie odwrotnie. Gdy osoby przechodzą „w kółko” (z niskiego na średni, ze średniego na wysoki, z wysokiego na niski), liczebności brzegowe się nie zmieniają, a tabela jest niesymetryczna. Test Stuarta–Maxwella odpowiada więc na pytanie, czy zmienił się rozkład w grupie, a Bowker – czy zmiany w obu kierunkach się równoważą.

Przykład

Wykorzystaliśmy tabelę z hasła o teście Bowkera: poziom wiedzy 120 osób przed szkoleniem i po nim. Liczba osób z niskim poziomem spadła z 46 do 24, a z wysokim wzrosła z 20 do 40. Test Stuarta–Maxwella: χ²(2) = 22.62, p < .001. W drugiej tabeli ze zmianami „w kółko” χ² = 0, a test Bowkera dał χ²(3) = 16.00, p = .001.

Jak opisać w pracy

Zmianę rozkładu poziomu wiedzy (niski, średni, wysoki) przed szkoleniem i po nim oceniono testem jednorodności brzegów Stuarta–Maxwella. Rozkład poziomów różnił się między pomiarami, χ²(2) = 22.62, p < .001: odsetek osób z wysokim poziomem wzrósł z 16.7% do 33.3%, a z niskim spadł z 38.3% do 20.0%.

Na co uważać

  • Tylko dane zależne. Dla dwóch niezależnych grup użyj testu chi-kwadrat niezależności.
  • Jednorodność to nie zgodność. Dwóch sędziów może mieć identyczne brzegi, a mimo to często się nie zgadzać. Zgodność opisuje kappa Cohena.
  • Rzadkie kategorie. Gdy w jakiejś kategorii nikt nie zmienił odpowiedzi ani do niej nie przeszedł, macierz kowariancji różnic może być osobliwa i test nie da wyniku – połącz wtedy kategorie.
Przykład reprodukowalny

Test Stuarta–Maxwella w R

Kod liczy test Stuarta–Maxwella funkcją StuartMaxwellTest() z pakietu DescTools, sprawdza wynik wzorem macierzowym, a na drugiej tabeli pokazuje, że brzegi mogą być jednorodne, choć tabela nie jest symetryczna.

Jednorodność brzegów a symetria tabeli 3 × 3

Dane wejściowe: tabela 3 × 3 dla 120 uczestników (poziom wiedzy przed szkoleniem i po nim, dane przykładowe – te same co w haśle o teście Bowkera) oraz druga tabela z równymi brzegami.

Co odczytać: brzegi przed i po, χ², df = 2 i p; wynik ręczny musi być taki sam jak z StuartMaxwellTest(); dla drugiej tabeli χ² = 0 w teście Stuarta–Maxwella i istotny test Bowkera.

R
suppressPackageStartupMessages(library(DescTools))
poziomy <- c("niski", "sredni", "wysoki")
tab <- matrix(c(18, 22,  6,
                 5, 30, 19,
                 1,  4, 15), nrow = 3, byrow = TRUE,
              dimnames = list(przed = poziomy, po = poziomy))  # dane przykładowe, N = 120
rbind(przed = rowSums(tab), po = colSums(tab))                 # rozkłady brzegowe
StuartMaxwellTest(tab)                                         # jednorodność brzegów, df = k − 1
# ręcznie: d – różnice brzegów, S – macierz kowariancji d (bez ostatniej kategorii)
k <- nrow(tab); d <- (rowSums(tab) - colSums(tab))[-k]
S <- -(tab + t(tab))[-k, -k]
diag(S) <- (rowSums(tab) + colSums(tab) - 2 * diag(tab))[-k]
chi2 <- drop(t(d) %*% solve(S) %*% d)
round(c(chi2 = chi2, df = k - 1, p = pchisq(chi2, k - 1, lower.tail = FALSE)), 6)
# tabela z równymi brzegami, ale niesymetryczna: zmiany "w kółko"
tab2 <- matrix(c(20, 10,  2,
                  2, 20, 10,
                 10,  2, 20), nrow = 3, byrow = TRUE,
               dimnames = list(przed = poziomy, po = poziomy))
as.numeric(StuartMaxwellTest(tab2)$statistic)                 # brzegi jednorodne: chi2 = 0
mcnemar.test(tab2)                                             # test symetrii Bowkera
Wynik w R
      niski sredni wysoki
przed    46     54     20
po       24     56     40

	Stuart-Maxwell test

data:  tab
chi-squared = 22.616, df = 2, p-value = 1.228e-05

     chi2        df         p 
22.615860  2.000000  0.000012 
[1] 0

	McNemar's Chi-squared test

data:  tab2
McNemar's chi-squared = 16, df = 3, p-value = 0.001134

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet DescTools). 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. DescTools (wersja 0.99.60): Signorell, A. (2025). DescTools: Tools for descriptive statistics (R package version 0.99.60) [Computer software]. https://doi.org/10.32614/CRAN.package.DescTools

Najczęstsze pytania

Kiedy wybrać test Stuarta–Maxwella, a kiedy test Bowkera?

Stuart–Maxwell odpowiada na pytanie, czy zmienił się rozkład kategorii w grupie. Bowker pyta, czy przejścia między każdą parą kategorii są równie częste w obu kierunkach. Do pytania „czy po szkoleniu jest więcej osób z wysokim poziomem” wystarczy Stuart–Maxwell.

Jak policzyć test Stuarta–Maxwella w R?

Funkcją StuartMaxwellTest(tab) z pakietu DescTools, gdzie tab to kwadratowa tabela z tymi samymi kategoriami w wierszach i kolumnach. Wbudowana funkcja mcnemar.test() dla tabeli k × k liczy test Bowkera, nie Stuarta–Maxwella.

Czy test Stuarta–Maxwella mierzy zgodność dwóch sędziów?

Nie. Sprawdza tylko, czy sędziowie równie często używają poszczególnych kategorii. Mogą mieć identyczne brzegi i mimo to często się nie zgadzać, dlatego zgodność opisuje się kappą Cohena.

Powiązane hasła

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. Bowker, A. H. (1948). A test for symmetry in contingency tables. Journal of the American Statistical Association, 43(244), 572–574. https://doi.org/10.1080/01621459.1948.10483284
  2. Maxwell, A. E. (1970). Comparing the classification of subjects by two independent judges. British Journal of Psychiatry, 116(535), 651–655. https://doi.org/10.1192/bjp.116.535.651
  3. Stuart, A. (1955). A test for homogeneity of the marginal distributions in a two-way classification. Biometrika, 42(3–4), 412–416. https://doi.org/10.1093/biomet/42.3-4.412

Cytowania BibTeX

@article{bowker1948test, author={Bowker, Albert H.}, title={{A test for symmetry in contingency tables}}, journal={Journal of the American Statistical Association}, year={1948}, volume={43}, number={244}, pages={572--574}, doi={10.1080/01621459.1948.10483284}}
@article{maxwell1970comparing, author={Maxwell, A. E.}, title={{Comparing the classification of subjects by two independent judges}}, journal={British Journal of Psychiatry}, year={1970}, volume={116}, number={535}, pages={651--655}, doi={10.1192/bjp.116.535.651}}
@article{stuart1955test, author={Stuart, Alan}, title={{A test for homogeneity of the marginal distributions in a two-way classification}}, journal={Biometrika}, year={1955}, volume={42}, number={3–4}, pages={412--416}, doi={10.1093/biomet/42.3-4.412}}
R