Korelacje z nieuporządkowanymi zmiennymi kategorialnymi

123

Mam ramkę danych z wieloma obserwacjami i wieloma zmiennymi. Niektóre z nich są kategoryczne (nieuporządkowane), a inne są numeryczne.

Szukam skojarzeń między tymi zmiennymi. Byłem w stanie obliczyć korelację dla zmiennych numerycznych (korelacja Spearmana), ale:

  • Nie wiem, jak zmierzyć korelację między nieuporządkowanymi zmiennymi kategorialnymi.
  • Nie wiem, jak zmierzyć korelację między nieuporządkowanymi zmiennymi kategorycznymi a zmiennymi numerycznymi.

Czy ktoś wie, jak można to zrobić? Jeśli tak, to czy są funkcje R implementujące te metody?

Clément F.
źródło

Odpowiedzi:

113

To zależy od tego, jaki sens korelacji chcesz. Po uruchomieniu prototypowej korelacji momentu Pearsona z produktem otrzymujesz miarę siły powiązania i test znaczenia tego powiązania. Częściej jednak test istotności i miara wielkości efektu różnią się.

Testy istotności:

Wielkość efektu (siła skojarzenia):

gung
źródło
5
Bardzo dokładne wyjaśnienie przypadku ciągłego względem nominalnego można znaleźć tutaj: Korelacja między zmienną nominalną (IV) a ciągłą (DV) .
gung
3
W przypadku binarnym vs przedziałowym istnieje korelacja punktowo-biserialna .
Glen_b
Jaka byłaby lepsza alternatywa dla testu chi-kwadrat dla dużych próbek?
Waldir Leoncio,
2
@WaldirLeoncio, tak, ale jeśli null jest prawdą, będzie tylko czasu. Tak ma to działać. Jeśli chcesz poznać wielkość efektu, a także test zerowy, możesz obliczyć V Cramera wraz z testem chi-kwadrat. < 0,05 5 %p<.055%
gung
1
Jak zauważył @gung, korelacja między zmienną nominalną (IV) a zmienną ciągłą (DV) jest doskonałym łącznikiem do tego, jak można dokonać korelacji dla zmiennych mieszanych. Hmisc::rcorrrobi to pięknie i możemy to sprawdzić (dla ramki danych zmiennych mieszanych) w następujący sposób:as.data.frame(rcorr(as.matrix(data_frame),type = "pearson")$P) as.data.frame(rcorr(as.matrix(data_frame),type = "pearson")$r)
KarthikS
15

Już wcześniej widziałem następujący ściąg:

https://stats.idre.ucla.edu/other/mult-pkg/whatstat/

Może ci się przydać. Ma nawet linki do określonych bibliotek R.

DSea
źródło
3
Problem z tym oszustwem polega na tym, że dotyczy on tylko zmiennych jakościowych / porządkowych / przedziałowych. To, czego szukam, to metoda pozwalająca mi używać zarówno liczbowych, jak i kategorycznych zmiennych niezależnych.
Clément F,
6

Jeśli chcesz macierz korelacji zmiennych jakościowych, możesz użyć następującej funkcji otoki (wymagającej pakietu „vcd”):

catcorrm <- function(vars, dat) sapply(vars, function(y) sapply(vars, function(x) assocstats(table(dat[,x], dat[,y]))$cramer))

Gdzie:

vars jest wektorem łańcuchowym zmiennych kategorialnych, które chcesz skorelować

dat jest ramką danych zawierającą zmienne

Wynikiem jest macierz V Cramera.

Dan
źródło
6

XKtiKi=1,,pXtiR2

Taka analiza może być postrzegana jako uogólnienie analizy wielokrotnej korespondencji i jest znana pod wieloma nazwami, takimi jak analiza korelacji kanonicznej, analiza jednorodności i wiele innych. Implementacja w R znajduje się w homalspakiecie (w CRAN). przeglądanie niektórych z tych nazw da mnóstwo informacji, jest pełna książka: Albert Gifi, „Nieliniowa analiza wielowymiarowa”. Powodzenia!

kjetil b halvorsen
źródło
1
1
Będę edytować, aby uwzględnić ten komentarz.
kjetil b halvorsen
2

Miałem podobny problem i wypróbowałem test chi-kwadrat, jak to sugerowałem, ale byłem bardzo zdezorientowany w ocenie wartości P w stosunku do hipotezy NULL.

Wyjaśnię, jak interpretowałem zmienne kategoryczne. Nie jestem pewien, czy ma to znaczenie w twoim przypadku. Miałem zmienną odpowiedzi Y i dwie zmienne predykcyjne X1 i X2, gdzie X2 jest zmienną kategorialną z dwoma poziomami, powiedzmy 1 i 2. Próbowałem dopasować model liniowy

ols = lm(Y ~ X1 + X2, data=mydata)

Chciałem jednak zrozumieć, jak różny poziom X2 pasuje do powyższego równania. Natknąłem się na funkcję R przez ()

by(mydata,X2,function(x) summary(lm(Y~X1,data=x)))

To, co robi ten kod, próbuje dopasować się do Modelu liniowego dla każdego poziomu X2. To dało mi całą wartość P i R-kwadrat, resztkowy błąd standardowy, który rozumiem i mogę interpretować.

Ponownie nie jestem pewien, czy tego właśnie chcesz. W pewnym stopniu porównałem różne wartości X2 w przewidywaniu Y.

Sohsum
źródło
1

Aby zmierzyć siłę połączenia między dwiema zmiennymi kategorialnymi, wolałbym raczej zastosować tabulator krzyżowy ze statystyką chisquare

aby zmierzyć siłę połączenia między zmienną liczbową a kategoryczną, możesz użyć porównania średniego, aby sprawdzić, czy zmienia się ono znacząco z jednej kategorii do innej

Da Silva Lionel
źródło
2
Witamy na stronie @DaSilvaLionel. Można zauważyć, że użycie testu chi-kwadrat z dwiema zmiennymi kategorialnymi zostało już zasugerowane powyżej.
gung