Korelacja między zmienną nominalną (IV) a zmienną ciągłą (DV)

77

Mam zmienną nominalną (różne tematy konwersacji, zakodowane jako topic0 = 0 itd.) I kilka zmiennych skalowych (DV), takich jak długość konwersacji.

Jak mogę ustalić korelacje między zmiennymi nominalnymi i skalowanymi?

Paul Miller
źródło
3
Najbardziej naturalną miarą powiązania / korelacji między zmiennymi nominalnymi (przyjmowanymi jako IV) i skalowymi (przyjmowanymi jako DV) jest eta.
ttnphns
Jeśli dobrze rozumiem, chcesz powiedzieć coś na temat relacji między tematem rozmowy (jako IV?) I czasem trwania rozmowy (DV). '' np. hypo = temat 1 oznacza znacznie krótszą rozmowę niż temat 2 '', jeśli ten przykład miałeś na myśli: użyłbyś do tego ANOVA (jeśli więcej MANOVA DV lub kilka anova) Czy to masz na myśli? zdanie z twoim pytaniem jest dość dwuznaczne ..
Steven B. Peutz
Powiązane pytanie: Współczynnik korelacji dla
niedychotomicznej

Odpowiedzi:

160

Tytuł tego pytania sugeruje podstawowe nieporozumienie. Najbardziej podstawową ideą korelacji jest „w miarę wzrostu jednej zmiennej, czy druga zmienna rośnie (korelacja dodatnia), maleje (korelacja ujemna) lub pozostaje taka sama (brak korelacji)” w skali takiej, że idealna korelacja dodatnia wynosi +1, brak korelacji wynosi 0, a idealna korelacja ujemna wynosi -1. Znaczenie „idealna” zależy od zastosowanej miary korelacji: dla korelacji Pearsona oznacza to, że punkty na wykresie rozrzutu leżą dokładnie na linii prostej (nachylone w górę dla +1 i w dół dla -1), dla korelacji Spearmana, że szeregi dokładnie się zgadzają (lub dokładnie się nie zgadzają, więc pierwszy jest łączony z ostatnim, dla -1), a dla tau Kendallaże wszystkie pary obserwacji mają zgodne szeregi (lub niezgodne dla -1). Intuicyjność tego, jak to działa w praktyce, można uzyskać na podstawie korelacji Pearsona dla następujących wykresów rozrzutu ( uznanie obrazu ):

Korelacja Pearsona dla różnych wykresów rozrzutu

xy

Wykresy rozrzutu dla kwartetu Anscombe

x

data.df <- data.frame(
    topic = c(rep(c("Gossip", "Sports", "Weather"), each = 4)),
    duration  = c(6:9, 2:5, 4:7)
)
print(data.df)
boxplot(duration ~ topic, data = data.df, ylab = "Duration of conversation")

Co daje:

> print(data.df)
     topic duration
1   Gossip        6
2   Gossip        7
3   Gossip        8
4   Gossip        9
5   Sports        2
6   Sports        3
7   Sports        4
8   Sports        5
9  Weather        4
10 Weather        5
11 Weather        6
12 Weather        7

Wykresy pudełkowe dla fałszywych danych

Używając „Plotki” jako poziomu odniesienia dla „Tematu” i definiując binarne zmienne zmienne dla „Sportu” i „Pogody”, możemy wykonać regresję wielokrotną.

> model.lm <- lm(duration ~ topic, data = data.df)
> summary(model.lm)

Call:
lm(formula = duration ~ topic, data = data.df)

Residuals:
   Min     1Q Median     3Q    Max 
 -1.50  -0.75   0.00   0.75   1.50 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)    7.5000     0.6455  11.619 1.01e-06 ***
topicSports   -4.0000     0.9129  -4.382  0.00177 ** 
topicWeather  -2.0000     0.9129  -2.191  0.05617 .  
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.291 on 9 degrees of freedom
Multiple R-squared: 0.6809,     Adjusted R-squared: 0.6099 
F-statistic:   9.6 on 2 and 9 DF,  p-value: 0.005861 

R2=0.6809R2R

> rsq <- summary(model.lm)$r.squared
> rsq
[1] 0.6808511
> sqrt(rsq)
[1] 0.825137

Zauważ, że 0,825 nie jest korelacją między czasem trwania a tematem - nie możemy skorelować tych dwóch zmiennych, ponieważ temat jest nominalny. To, co faktycznie reprezentuje, to korelacja między obserwowanymi czasami trwania a przewidywanymi (dopasowanymi) przez nasz model. Obie te zmienne są numeryczne, więc jesteśmy w stanie je skorelować. W rzeczywistości dopasowane wartości są tylko średnimi czasami trwania dla każdej grupy:

> print(model.lm$fitted)
  1   2   3   4   5   6   7   8   9  10  11  12 
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5 

Aby to sprawdzić, korelacja Pearsona między wartościami zaobserwowanymi i dopasowanymi wynosi:

> cor(data.df$duration, model.lm$fitted)
[1] 0.825137

Możemy to sobie wyobrazić na wykresie punktowym:

plot(x = model.lm$fitted, y = data.df$duration,
     xlab = "Fitted duration", ylab = "Observed duration")
abline(lm(data.df$duration ~ model.lm$fitted), col="red")

Wizualizuj wielokrotny współczynnik korelacji między wartościami zaobserwowanymi i dopasowanymi

Siła tego związku jest wizualnie bardzo podobna do tych z wykresów Kwartetu Anscombe, co nie jest zaskakujące, ponieważ wszyscy mieli korelacje Pearsona około 0,82.

Możesz być zaskoczony, że z kategoryczną zmienną niezależną wybrałem regresję (wielokrotną) zamiast ANOVA jednokierunkowej . Ale w rzeczywistości okazuje się to równoważnym podejściem.

library(heplots) # for eta
model.aov <- aov(duration ~ topic, data = data.df)
summary(model.aov)

To daje podsumowanie z identyczną statystyką F i wartością p :

            Df Sum Sq Mean Sq F value  Pr(>F)   
topic        2     32  16.000     9.6 0.00586 **
Residuals    9     15   1.667                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

Ponownie, model ANOVA pasuje do średnich grupy, podobnie jak regresja:

> print(model.aov$fitted)
  1   2   3   4   5   6   7   8   9  10  11  12 
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5 

R2η2

> etasq(model.aov, partial = FALSE)
              eta^2
topic     0.6808511
Residuals        NA

ηη2RR2eta do kwadratu. Ponieważ ta ANOVA była jednokierunkowa (istniał tylko jeden predyktor kategoryczny), częściowe eta do kwadratu jest takie samo jak eta do kwadratu, ale rzeczy zmieniają się w modelach z większą liczbą predyktorów.

> etasq(model.aov, partial = TRUE)
          Partial eta^2
topic         0.6808511
Residuals            NA

Jest jednak całkiem możliwe, że ani „korelacja”, ani „wyjaśniona proporcja wariancji” nie jest miarą wielkości efektu, której chcesz użyć. Na przykład możesz skupić się bardziej na tym, jak różnią się środki między grupami. To pytanie i odpowiedź zawierają więcej informacji na temat kwadratu eta, kwadratu częściowego eta i różnych alternatyw.

Silverfish
źródło
4
R0.82
ηRηη
r=0.9R=0.9ηRr
ηrR
eta21