Słownik metodologiczny · Statystyka opisowa

Macierz korelacji – jak ją policzyć i na co uważać przy wielu korelacjach?

Macierz korelacji zbiera współczynniki korelacji wszystkich par zmiennych. Wyjaśniamy jej właściwości, różnicę między usuwaniem braków parami i całymi przypadkami, problem wielu testów naraz i pokazujemy przykład w R.

Strona główna / Słownik / Macierz korelacji
W skrócie: Macierz korelacji to symetryczna tabela korelacji każdej pary zmiennych, z jedynkami na przekątnej. Przy k zmiennych zawiera k(k − 1)/2 różnych współczynników. Usuwanie braków parami może dać macierz niespójną, a wiele testów naraz wymaga korekty, np. metodą Holma.

Co to jest macierz korelacji?

Macierz korelacji (ang. correlation matrix) to kwadratowa tabela współczynników korelacji, np. Pearsona, dla każdej pary k zmiennych. Ma trzy cechy:

  • jest symetryczna, a na przekątnej ma jedynki;
  • zawiera k(k − 1)/2 różnych korelacji: 10 przy pięciu zmiennych, 45 przy dziesięciu;
  • jest dodatnio półokreślona, czyli nie ma ujemnych wartości własnych.

Z trzeciej cechy wynika, że nie każdy zestaw korelacji jest możliwy. Jeśli zmienna A koreluje z B i z C na poziomie .80, to B i C nie mogą korelować na poziomie −.20. Najmniejsza wartość własna takiej macierzy wynosi −0.236. Sposób pokazania macierzy opisują hasła tabela korelacji w APA i mapa cieplna korelacji. Tu chodzi o jej liczenie.

Braki danych i spójność macierzy

Przy brakach danych masz dwie proste opcje. Usuwanie całych przypadków daje jedną wspólną liczebność. Usuwanie parami liczy każdą korelację na innych osobach, więc macierz może przestać być spójna. Marsh (1998) uzyskał w symulacji macierz niedodatnio określoną dopiero przy 50% braków i n = 200, ale statystyki χ² modeli dopasowanych do takich macierzy były wyraźnie obciążone. Macierz niespójną można zastąpić najbliższą poprawną (Higham, 2002; w R Matrix::nearPD()), choć zwykle lepsza jest imputacja wielokrotna. Ma to znaczenie, gdy macierz trafia do analizy czynnikowej lub PCA.

Wiele korelacji naraz

Dziesięć testów to dziesięć okazji do fałszywie istotnego wyniku. Procedura Holma (1979) kontroluje błąd I rodzaju dla całego zestawu i jest mniej zachowawcza niż korekta Bonferroniego.

Przykład

Pięć zmiennych (stres, lęk, sen, wsparcie, satysfakcja) u 150 osób z brakami danych (dane symulowane). Pełne dane miało 97 osób, a pary od 122 do 132 osób. Najmniejsza wartość własna macierzy wyniosła 0.369, więc macierz jest poprawna. Osiem z 10 korelacji miało p < .05, po korekcie Holma – sześć. Istotność straciły stres–sen i lęk–wsparcie (oba r = −.20, pHolm = .084).

Jak opisać w pracy

Korelacje Pearsona między pięcioma zmiennymi obliczono z usuwaniem braków danych parami (n = 122–132). Ze względu na 10 równoczesnych testów wartości p skorygowano metodą Holma; istotnych pozostało 6 z 10 korelacji. Najsilniej korelowały stres i lęk, r = .52, pHolm < .001.

Na co uważać

  • Podaj całą macierz, a nie tylko istotne korelacje.
  • Obejrzyj wykresy rozrzutu. Jedna obserwacja odstająca albo związek nieliniowy potrafi wyraźnie zmienić r.

Jak opisać taką macierz w tekście, pokazuje wpis jak opisać tabelę korelacji.

Przykład reprodukowalny

Macierz korelacji w R

Kod liczy macierz korelacji z usuwaniem braków parami, liczebności par, najmniejszą wartość własną, wartości własne niemożliwego układu korelacji i liczbę istotnych korelacji przed korektą Holma i po niej.

Macierz, braki danych, wartości własne i korekta Holma

Dane wejściowe: pięć zmiennych u 150 osób z losowymi brakami danych (dane symulowane, set.seed(2984)).

Co odczytać: macierz R, liczbę korelacji, zakres n dla par, n pełnych przypadków, najmniejszą wartość własną, wartości własne macierzy Z oraz liczbę korelacji z p < .05 przed korektą i po niej.

R
set.seed(2984)
S <- matrix(c(1, .50, -.30, -.40, -.20,  .50, 1, -.15, -.20, -.30,  -.30, -.15, 1, .20, .30,
              -.40, -.20, .20, 1, .45,  -.20, -.30, .30, .45, 1), 5)
X <- matrix(rnorm(150 * 5), 150) %*% chol(S)        # dane symulowane, n = 150
X[cbind(sample(150, 60, replace = TRUE), sample(5, 60, replace = TRUE))] <- NA  # braki danych
d <- setNames(as.data.frame(X), c("stres", "lek", "sen", "wsparcie", "satysfakcja"))
R <- cor(d, use = "pairwise.complete.obs")
round(R, 2)
choose(ncol(d), 2)                                  # liczba różnych korelacji
range(crossprod(!is.na(d))[upper.tri(R)])           # n dla par zmiennych
sum(complete.cases(d))                              # n przy usuwaniu całych przypadków
round(min(eigen(R)$values), 3)                      # > 0: macierz poprawna
Z <- matrix(c(1, .8, .8,  .8, 1, -.2,  .8, -.2, 1), 3)  # układ, którego nie da się uzyskać z danych
round(eigen(Z)$values, 3)
pary <- which(upper.tri(R), arr.ind = TRUE)
p <- apply(pary, 1, function(i) cor.test(d[[i[1]]], d[[i[2]]])$p.value)
c(p_ponizej_05 = sum(p < .05), po_Holmie = sum(p.adjust(p, "holm") < .05))
Wynik w R
            stres   lek   sen wsparcie satysfakcja
stres        1.00  0.52 -0.20    -0.40       -0.42
lek          0.52  1.00 -0.13    -0.20       -0.44
sen         -0.20 -0.13  1.00     0.15        0.35
wsparcie    -0.40 -0.20  0.15     1.00        0.45
satysfakcja -0.42 -0.44  0.35     0.45        1.00
[1] 10
[1] 122 132
[1] 97
[1] 0.369
[1]  2.036  1.200 -0.236
p_ponizej_05    po_Holmie 
           8            6 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (bez dodatkowych pakietów).

  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/

Najczęstsze pytania

Ile korelacji zawiera macierz korelacji?

Przy k zmiennych jest k(k − 1)/2 różnych korelacji: 10 dla pięciu zmiennych, 45 dla dziesięciu. Drugi trójkąt macierzy powtarza pierwszy, a przekątna to same jedynki.

Usuwać braki danych parami czy całymi przypadkami przy macierzy korelacji?

Usuwanie parami wykorzystuje więcej danych, ale każda korelacja ma inne n, a macierz może być niespójna. Przy większych brakach lepsza jest imputacja wielokrotna albo FIML.

Co znaczy, że macierz korelacji nie jest dodatnio określona?

Ma ujemną wartość własną, więc takiego układu korelacji nie da się uzyskać z żadnych pełnych danych. Zdarza się przy usuwaniu braków parami i blokuje analizę czynnikową czy SEM.

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. Higham, N. J. (2002). Computing the nearest correlation matrix—a problem from finance. IMA Journal of Numerical Analysis, 22(3), 329–343. https://doi.org/10.1093/imanum/22.3.329
  2. Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70. https://www.jstor.org/stable/4615733
  3. Marsh, H. W. (1998). Pairwise deletion for missing data in structural equation models: Nonpositive definite matrices, parameter estimates, goodness of fit, and adjusted sample sizes. Structural Equation Modeling: A Multidisciplinary Journal, 5(1), 22–36. https://doi.org/10.1080/10705519809540087

Cytowania BibTeX

@article{higham2002computing, author={Higham, Nicholas J.}, title={{Computing the nearest correlation matrix—a problem from finance}}, journal={IMA Journal of Numerical Analysis}, year={2002}, volume={22}, number={3}, pages={329--343}, doi={10.1093/imanum/22.3.329}}
@article{holm1979simple, author={Holm, Sture}, title={{A simple sequentially rejective multiple test procedure}}, journal={Scandinavian Journal of Statistics}, year={1979}, volume={6}, number={2}, pages={65--70}, url={https://www.jstor.org/stable/4615733}}
@article{marsh1998pairwise, author={Marsh, Herbert W.}, title={{Pairwise deletion for missing data in structural equation models: Nonpositive definite matrices, parameter estimates, goodness of fit, and adjusted sample sizes}}, journal={Structural Equation Modeling: A Multidisciplinary Journal}, year={1998}, volume={5}, number={1}, pages={22--36}, doi={10.1080/10705519809540087}}
R