Najpierw ustal, które korelacje porównujesz
Wybór testu zależy od tego, skąd pochodzą obie korelacje. Jeśli policzyłeś je w dwóch różnych grupach osób, są niezależne. Jeśli obie pochodzą z tej samej próby, są zależne, a test musi uwzględnić, że opierają się na tych samych osobach. Diedenhofen i Musch (2015) wyróżniają trzy sytuacje:
| Sytuacja | Przykład | Test |
|---|---|---|
| Dwie grupy osób (korelacje niezależne) | Stres a sen u studentów stacjonarnych i niestacjonarnych | Test z dla różnicy korelacji po transformacji Fishera |
| Ta sama próba, wspólna zmienna | Stres a wyczerpanie i stres a sen, te same osoby | Test Williamsa lub inne testy dla korelacji zależnych |
| Ta sama próba, bez wspólnej zmiennej | Stres a sen w pierwszym i drugim pomiarze | Test Steigera dla korelacji zależnych bez wspólnej zmiennej |
Przegląd testów dla korelacji zależnych i wzory podaje Steiger (1980). Zou (2007) pokazał, jak dla każdej z tych sytuacji policzyć przedział ufności różnicy, i ten przedział warto podać obok wartości p. Poniżej dwa przykłady na danych symulowanych: 72 studentów stacjonarnych i 58 niestacjonarnych, razem 130 osób.
Pułapka: jedna korelacja istotna, druga nie
Najczęstszy błąd wygląda tak: „u studentów stacjonarnych korelacja jest istotna, a u niestacjonarnych nie, więc związek różni się między grupami”. To rozumowanie nie jest testem różnicy. Gelman i Stern (2006) pokazują, że nawet duża różnica wartości p może odpowiadać małej i nieistotnej różnicy samych efektów. Diedenhofen i Musch (2015) podkreślają, że o różnicy korelacji można wnioskować tylko z bezpośredniego testu tej różnicy.
Dwie grupy: test z Fishera
W przykładzie stres koreluje z problemami ze snem na poziomie r = .40 u 72 studentów stacjonarnych (p < .001) i r = .14 u 58 niestacjonarnych (p = .298). Pierwsza korelacja jest istotna, druga nie. Żeby je porównać, zamień każdą na z Fishera (z = atanh r) i podziel różnicę przez jej błąd standardowy:
Wynik: z = 1.55, p = .121. Różnica korelacji wynosi .26, ale jej 95% przedział ufności według metody Zou (2007) to [−.07, .58]. Obejmuje zero i bardzo duże różnice, więc dane nie pozwalają rozstrzygnąć, czy związek w grupach jest taki sam. Nie piszesz więc, że grupy się różnią, ani że się nie różnią.
Miarą wielkości tej różnicy jest q Cohena (1992), czyli różnica dwóch z Fishera. Tutaj q = 0.28. Żeby wykryć taką różnicę z mocą .80 przy α = .05, potrzeba 103 osób w każdej grupie. Porównanie korelacji między grupami wymaga więc zwykle znacznie większej próby niż sama korelacja. Warto to policzyć przed badaniem (zob. dobór liczebności próby).
Ta sama próba: korelacje zależne
Inne pytanie: czy w całej próbie (N = 130) stres silniej wiąże się z wyczerpaniem niż z problemami ze snem? Obie korelacje mają wspólną zmienną (stres) i pochodzą od tych samych osób. Stres koreluje z wyczerpaniem na poziomie r = .54, a ze snem na poziomie r = .28. Test musi uwzględnić także trzecią korelację, między snem a wyczerpaniem (r = .37).
Test Williamsa daje t(127) = 3.03, p = .003, a różnica wynosi .26, 95% CI [.09, .43]. Różnica ma tę samą wielkość co w porównaniu grup, a mimo to jest istotna. Tym razem obie korelacje policzono na wszystkich 130 osobach, a test korzysta z tego, że ich oszacowania są ze sobą powiązane. Gdyby porównać te korelacje testem dla grup niezależnych, wynik byłby błędny.
Gdy korelacje nie mają wspólnej zmiennej, np. ten sam związek w dwóch pomiarach, potrzebny jest test Steigera. W R wykona go funkcja r.test() z pakietu psych z argumentami r12, r34 i czterema korelacjami krzyżowymi. Pakiet cocor oferuje wiele testów naraz z przedziałem Zou (Diedenhofen i Musch, 2015).
Kiedy zamiast korelacji porównać nachylenia
Korelacja w grupie zależy nie tylko od siły związku, ale też od rozrzutu wyników. Jeśli w jednej grupie stres ma mniejszy zakres, korelacja spadnie, nawet gdy stres wpływa na sen tak samo. Jeśli pytasz, czy wpływ jednej zmiennej na drugą zależy od grupy, porównaj nachylenia w regresji z interakcją. To jest moderacja (zob. efekt interakcji i poradnik analiza moderacji krok po kroku). Porównanie korelacji odpowiada na pytanie o siłę związku w standaryzowanych jednostkach, a nachylenia – o wielkość zmiany w jednostkach skali.
Podstawy korelacji, w tym przedział ufności dla pojedynczego r i wybór między korelacją Pearsona a Spearmana, opisujemy w poradniku korelacja Pearsona i Spearmana krok po kroku. O tym, jak oceniać samą siłę r, piszemy we wpisie czy korelacja .30 to dużo, a inne testy znajdziesz w przewodniku testy statystyczne – przewodnik po wyborze.
Jak to opisać w pracy
Dwie grupy:
Ta sama próba:
Porównanie dwóch korelacji w R
Kod liczy test z Fishera dla dwóch grup (ręcznie i funkcją psych::r.test()), przedział ufności Zou dla różnicy, q Cohena z potrzebną liczebnością oraz test Williamsa dla korelacji zależnych.
Korelacje niezależne i zależne
R
# Porównanie dwóch korelacji: grupy niezależne i korelacje zależne (dane symulowane)
library(MASS); library(psych)
set.seed(1427)
sym <- function(n, R) { d <- as.data.frame(mvrnorm(n, rep(0, 3), R))
names(d) <- c("stres", "sen", "wyczerpanie"); d }
R1 <- matrix(c(1, .45, .55, .45, 1, .40, .55, .40, 1), 3) # studia stacjonarne
R2 <- matrix(c(1, .20, .50, .20, 1, .35, .50, .35, 1), 3) # studia niestacjonarne
d <- rbind(cbind(tryb = "stacjonarne", sym(72, R1)), cbind(tryb = "niestacjonarne", sym(58, R2)))
# Funkcje: CI dla r (Fisher) i CI Zou (2007) dla różnicy dwóch korelacji
ci_r <- function(r, n) tanh(atanh(r) + c(-1, 1) * qnorm(.975) / sqrt(n - 3))
zou <- function(r1, n1, r2, n2, c12 = 0) { # c12 = korelacja między r1 i r2 (0 dla grup niezależnych)
l1 <- ci_r(r1, n1); l2 <- ci_r(r2, n2)
c(r1 - r2 - sqrt((r1 - l1[1])^2 + (l2[2] - r2)^2 - 2 * c12 * (r1 - l1[1]) * (l2[2] - r2)),
r1 - r2 + sqrt((l1[2] - r1)^2 + (r2 - l2[1])^2 - 2 * c12 * (l1[2] - r1) * (r2 - l2[1])))
}
# 1. Dwie grupy niezależne: stres a problemy ze snem
s <- split(d, d$tryb)
k <- sapply(s, function(g) { t <- cor.test(g$stres, g$sen)
c(n = nrow(g), r = unname(t$estimate), p = t$p.value) })
round(k, 4)
z <- (atanh(k["r", "stacjonarne"]) - atanh(k["r", "niestacjonarne"])) /
sqrt(1 / (k["n", "stacjonarne"] - 3) + 1 / (k["n", "niestacjonarne"] - 3))
c(z = round(unname(z), 2), p = round(2 * pnorm(-abs(unname(z))), 3))
rt <- r.test(n = 72, r12 = k["r", "stacjonarne"], r34 = k["r", "niestacjonarne"], n2 = 58) # to samo w psych
round(c(z = rt$z, p = rt$p), 3)
round(zou(k["r", "stacjonarne"], 72, k["r", "niestacjonarne"], 58), 2) # 95% CI różnicy
q <- atanh(k["r", "stacjonarne"]) - atanh(k["r", "niestacjonarne"]); round(unname(q), 2) # q Cohena
ceiling(((qnorm(.975) + qnorm(.80)) / q)^2 + 3) # n na grupę dla mocy .80 przy takim q
# 2. Korelacje zależne ze wspólną zmienną (cała próba): stres–sen a stres–wyczerpanie
N <- nrow(d); r <- cor(d[, c("stres", "sen", "wyczerpanie")])
round(r, 2)
rw <- r.test(n = N, r12 = r["stres", "wyczerpanie"], r13 = r["stres", "sen"], r23 = r["sen", "wyczerpanie"])
round(c(t = rw$t, df = N - 3, p = rw$p), 4) # test Williamsa
r12 <- r["stres", "wyczerpanie"]; r13 <- r["stres", "sen"]; r23 <- r["sen", "wyczerpanie"]
c12 <- ((r23 - .5 * r12 * r13) * (1 - r12^2 - r13^2 - r23^2) + r23^3) / ((1 - r12^2) * (1 - r13^2))
round(c(roznica = r12 - r13, ci = zou(r12, N, r13, N, c12)), 2)Wynik w R
niestacjonarne stacjonarne
n 58.0000 72.0000
r 0.1391 0.3971
p 0.2977 0.0006
z p
1.550 0.121
z p
1.550 0.121
[1] -0.07 0.58
[1] 0.28
[1] 103
stres sen wyczerpanie
stres 1.00 0.28 0.54
sen 0.28 1.00 0.37
wyczerpanie 0.54 0.37 1.00
t df p
3.0252 127.0000 0.0030
roznica ci1 ci2
0.26 0.09 0.43 Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 z pakietami MASS (wersja 7.3.65) i psych (wersja 2.6.5).
- 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/
- psych: 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
- MASS (wersja 7.3.65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer.
Najczęstsze pytania
Czy jeśli korelacja jest istotna w jednej grupie, a w drugiej nie, to grupy się różnią?
Nie. Taki wniosek wymaga bezpośredniego testu różnicy korelacji. W przykładzie z tego wpisu korelacja .40 była istotna, a .14 nie, ale test różnicy dał p = .121, a przedział ufności różnicy objął zero.
Jak porównać dwie korelacje bez programu statystycznego?
Wystarczą dwie korelacje i liczebności grup. Zamień każdą korelację na z Fishera (z = atanh r), odejmij wyniki i podziel różnicę przez pierwiastek z 1/(n1 − 3) + 1/(n2 − 3). Wartość p odczytasz z rozkładu normalnego, np. w kalkulatorze wartości p.
Jak porównać dwie korelacje policzone na tych samych osobach?
Użyj testu dla korelacji zależnych, który uwzględnia trzecią korelację między porównywanymi zmiennymi, np. testu Williamsa, gdy korelacje mają wspólną zmienną. Test dla grup niezależnych daje tu błędny wynik. W R wykonasz go funkcją psych::r.test().
Ile osób potrzeba, żeby porównać dwie korelacje?
Zwykle znacznie więcej niż do jednej korelacji. Aby z mocą .80 wykryć różnicę o wielkości q = 0.28 (np. .40 wobec .14), potrzeba około 103 osób w każdej grupie.
Powiązane hasła
Przeczytaj też
Korelacja Pearsona i Spearmana krok po kroku
Wybór miary, wykres rozrzutu, przedział ufności z transformacji Fishera, siła r, korelacja cząstkowa, macierz w APA i opis wyników z kodem R.
Czytaj →PoradnikCzy korelacja .30 to dużo?
Jak ocenić r = .30: konwencja Cohena a typowe korelacje w psychologii, R² = .09, przedział ufności przy różnej liczebności próby i wzór opisu APA.
Czytaj →PoradnikAnaliza moderacji krok po kroku
Hipoteza, centrowanie, model z interakcją, proste nachylenia, Johnson–Neyman, wykresy, moc, kod R, PROCESS w SPSS i opis APA – na jednym przykładzie.
Czytaj →Chcesz porównać związki w dwóch grupach?
Dobierzemy właściwy test różnicy korelacji, policzymy przedział ufności i wyjaśnimy wynik tak, żebyś umiał(a) go opisać i obronić.
Oferta dla studentówWyceń analizęBibliografia i dalsza literatura naukowa (APA 7)
- Cohen, J. (1992). A power primer. Psychological Bulletin, 112(1), 155–159. https://doi.org/10.1037/0033-2909.112.1.155
- 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
- Gelman, A., & Stern, H. (2006). The difference between “significant” and “not significant” is not itself statistically significant. The American Statistician, 60(4), 328–331. https://doi.org/10.1198/000313006x152649
- 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
- Zou, G. Y. (2007). Toward using confidence intervals to compare correlations. Psychological Methods, 12(4), 399–413. https://doi.org/10.1037/1082-989x.12.4.399
Cytowania BibTeX
@article{cohen1992power, author={Cohen, Jacob}, title={{A power primer}}, journal={Psychological Bulletin}, year={1992}, volume={112}, number={1}, pages={155--159}, doi={10.1037/0033-2909.112.1.155}}@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{gelman2006difference, author={Gelman, Andrew and Stern, Hal}, title={{The difference between “significant” and “not significant” is not itself statistically significant}}, journal={The American Statistician}, year={2006}, volume={60}, number={4}, pages={328--331}, doi={10.1198/000313006x152649}}@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}}@article{zou2007toward, author={Zou, Guang Yong}, title={{Toward using confidence intervals to compare correlations}}, journal={Psychological Methods}, year={2007}, volume={12}, number={4}, pages={399--413}, doi={10.1037/1082-989x.12.4.399}}