Słownik metodologiczny · Testy statystyczne

Test Steigera – jak porównać dwie korelacje z tej samej próby?

Test Steigera porównuje dwie korelacje policzone na tych samych osobach, ze wspólną zmienną albo bez niej. Pokazujemy oba przypadki, przykład w R z pakietem psych, opis do pracy i najczęstsze błędy.

Strona główna / Słownik / Test Steigera
W skrócie: Test Steigera sprawdza, czy dwie korelacje policzone na tych samych osobach różnią się istotnie – ze wspólną zmienną (np. dwa predyktory i jedno kryterium) albo bez niej (ten sam związek w dwóch pomiarach). Uwzględnia zależność między korelacjami, którą pomija zwykły test dla grup niezależnych.

Co to jest test Steigera?

Test Steigera (ang. Steiger's test) to test różnicy dwóch korelacji zależnych, czyli policzonych na tych samych osobach. Steiger (1980) przejrzał testy do porównywania elementów jednej macierzy korelacji, wskazał statystyki, których należy unikać, i przedstawił metody bezpieczne przy średnich i dużych próbach. Korelacje z tej samej próby są ze sobą skorelowane, więc zwykły test dla dwóch niezależnych grup daje błędny błąd standardowy różnicy.

Dwa przypadki

  • Ze wspólną zmienną (ang. overlapping): czy dwa predyktory korelują z tym samym kryterium równie silnie, np. r(stres, sen) a r(stres, nastrój). Meng, Rosenthal i Rubin (1992) podali dla tego przypadku proste metody z transformacją Fishera z: test, przedział ufności i kontrasty dla kilku korelacji.
  • Bez wspólnej zmiennej (ang. non-overlapping): czy ten sam związek jest równie silny w dwóch pomiarach, np. r(stres, sen) w pierwszym i w drugim badaniu tych samych osób.

Test wymaga znajomości wszystkich korelacji między czterema (lub trzema) zmiennymi, nie tylko dwóch porównywanych. W R funkcja r.test z pakietu psych liczy według dokumentacji test Williamsa dla korelacji ze wspólną zmienną i test Steigera dla korelacji bez niej. Diedenhofen i Musch (2015) zebrali wiele takich testów w pakiecie cocor.

Przykład

W symulowanych danych 150 osób korelacja stresu ze snem wyniosła r = .47 w pierwszym pomiarze i r = .12 w drugim. Test Steigera dla korelacji bez wspólnej zmiennej dał z = 3.90, p < .001. Porównanie r(stres T1, sen T1) = .47 z r(stres T1, sen T2) = .21 (wspólna zmienna) testem Williamsa dało t(147) = 3.49, p < .001. Te same testy znajdziesz w kalkulatorze porównania korelacji, a wybór metody wyjaśnia poradnik jak porównać dwie korelacje.

Jak opisać w pracy

Związek stresu z jakością snu był silniejszy w pierwszym pomiarze (r = .47) niż w drugim (r = .12). Różnica między tymi zależnymi korelacjami, sprawdzona testem Steigera (1980), była istotna, z = 3.90, p < .001.

Na co uważać

  • Istotna i nieistotna to nie różnica. To, że jedna korelacja jest istotna, a druga nie, nie zastępuje testu różnicy.
  • Test dla grup niezależnych. Porównanie dwóch r z tej samej próby testem z dla niezależnych grup pomija ich zależność.
  • Inne pytanie. Korelacja cząstkowa kontroluje trzecią zmienną, ale nie testuje, czy dwie korelacje się różnią.
Przykład reprodukowalny

Test Steigera w R

Kod symuluje stres i sen tych samych osób w dwóch pomiarach i porównuje korelacje zależne funkcją r.test z pakietu psych – bez wspólnej zmiennej i ze wspólną zmienną.

Porównanie korelacji zależnych

Dane wejściowe: 150 symulowanych osób, cztery zmienne (stres i sen w T1 i T2); set.seed(4321).

Co odczytać: macierz korelacji, z i p testu Steigera oraz t i p testu Williamsa.

R
library(psych)
set.seed(4321)
n <- 150   # stres i sen tych samych osób w dwóch pomiarach (T1, T2)
S <- matrix(c(1, .45, .55, .30,  .45, 1, .30, .60,
              .55, .30, 1, .25,  .30, .60, .25, 1), 4)
d <- MASS::mvrnorm(n, rep(0, 4), S)
colnames(d) <- c("stres1", "sen1", "stres2", "sen2")
R <- cor(d); round(R, 2)
# bez wspólnej zmiennej: r(stres1, sen1) a r(stres2, sen2) – test Steigera (z)
s <- r.test(n, r12 = R[1, 2], r34 = R[3, 4], r13 = R[1, 3], r14 = R[1, 4],
            r23 = R[2, 3], r24 = R[2, 4])
round(c(z = s$z, p = s$p), 4)
# ze wspólną zmienną: r(stres1, sen1) a r(stres1, sen2) – test Williamsa (t, df = n - 3)
w <- r.test(n, r12 = R[1, 2], r13 = R[1, 4], r23 = R[2, 4])
round(c(t = w$t, p = w$p), 4)
Wynik w R
       stres1 sen1 stres2 sen2
stres1   1.00 0.47   0.56 0.21
sen1     0.47 1.00   0.32 0.49
stres2   0.56 0.32   1.00 0.12
sen2     0.21 0.49   0.12 1.00
     z      p
3.8991 0.0001
     t      p
3.4924 0.0006

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 z pakietami psych 2.6.5 i MASS 7.3-65. 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. psych (wersja 2.6.5): Revelle, W. (2026). psych: Procedures for psychological, psychometric, and personality research (R package version 2.6.5) [Computer software]. Northwestern University. https://CRAN.R-project.org/package=psych
  3. MASS (wersja 7.3-65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer. https://www.stats.ox.ac.uk/pub/MASS4/

Najczęstsze pytania

Kiedy dwie korelacje są zależne?

Gdy obie policzono na tych samych osobach, np. dwa predyktory z jednym kryterium albo ten sam związek w dwóch pomiarach. Korelacje z dwóch odrębnych grup są niezależne i porównuje się je testem z Fishera.

Czym test Steigera różni się od testu Williamsa?

Test Williamsa porównuje dwie zależne korelacje ze wspólną zmienną. Nazwa testu Steigera dotyczy najczęściej testu z dla korelacji bez wspólnej zmiennej; tak oba przypadki rozróżnia funkcja r.test z pakietu psych.

Jak policzyć test Steigera w R?

Funkcją r.test() z pakietu psych: podaj n, dwie porównywane korelacje i korelacje między pozostałymi parami zmiennych. Przy trzech korelacjach (wspólna zmienna) funkcja liczy test Williamsa.

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. Diedenhofen, B., & Musch, J. (2015). cocor: A comprehensive solution for the statistical comparison of correlations. PLOS ONE, 10(4), Article e0121945. https://doi.org/10.1371/journal.pone.0121945 ● Otwarty dostęp
  2. Meng, X.-L., Rosenthal, R., & Rubin, D. B. (1992). Comparing correlated correlation coefficients. Psychological Bulletin, 111(1), 172–175. https://doi.org/10.1037/0033-2909.111.1.172 ● Otwarty dostęp: pełny tekst
  3. Steiger, J. H. (1980). Tests for comparing elements of a correlation matrix. Psychological Bulletin, 87(2), 245–251. https://doi.org/10.1037/0033-2909.87.2.245

Cytowania BibTeX

@article{diedenhofen2015cocor, author={Diedenhofen, Birk and Musch, Jochen}, title={{cocor: A comprehensive solution for the statistical comparison of correlations}}, journal={PLOS ONE}, year={2015}, volume={10}, number={4}, eid={e0121945}, doi={10.1371/journal.pone.0121945}}
@article{meng1992comparing, author={Meng, Xiao-li and Rosenthal, Robert and Rubin, Donald B.}, title={{Comparing correlated correlation coefficients}}, journal={Psychological Bulletin}, year={1992}, volume={111}, number={1}, pages={172--175}, doi={10.1037/0033-2909.111.1.172}}
@article{steiger1980tests, author={Steiger, James H.}, title={{Tests for comparing elements of a correlation matrix}}, journal={Psychological Bulletin}, year={1980}, volume={87}, number={2}, pages={245--251}, doi={10.1037/0033-2909.87.2.245}}
R