Corrélation entre une variable nominale (IV) et continue (DV)

77

J'ai une variable nominale (différents sujets de conversation, codée comme sujet0 = 0, etc.) et un certain nombre de variables d'échelle (DV) telles que la longueur d'une conversation.

Comment puis-je obtenir des corrélations entre les variables nominales et d'échelle?

Paul Miller
la source
3
La mesure la plus naturelle d'association / corrélation entre une variable nominale (prise comme IV) et une échelle (prise comme DV) est eta.
ttnphns
Si je comprends bien, vous voulez dire quelque chose à propos de la relation entre le sujet de conversation (comme IV?) Et la durée de la conversation (DV). '' Par exemple, hypo = sujet 1 signifie une conversation beaucoup plus courte que le sujet 2 '', si cet exemple est ce que vous vouliez dire: vous utiliseriez une ANOVA pour cela (si plus de MANOVA de DV ou plusieurs de vos anova). Est-ce ce que vous voulez dire? la phrase de votre question est assez ambigu ..
Steven B. Peutz

Réponses:

160

Le titre de cette question suggère un malentendu fondamental. L'idée la plus fondamentale de la corrélation est "lorsqu'une variable augmente, l'autre augmente (corrélation positive), diminue (corrélation négative) ou reste la même (pas de corrélation)" avec une échelle telle que la corrélation positive parfaite soit +1, aucune corrélation n'est 0 et la corrélation négative parfaite est -1. La signification de "parfait" dépend de la mesure de corrélation utilisée: pour Pearson, cela signifie que les points d'un nuage de points se situent sur une ligne droite (inclinés vers le haut pour +1 et vers le bas pour -1), pour la corrélation de Spearman que les rangs sont tout à fait d'accord (ou pas du tout d'accord, donc le premier est associé au dernier, pour -1), et pour le tau de Kendallque toutes les paires d'observations ont des rangs concordants (ou discordants pour -1). Les corrélations de Pearson pour les diagrammes de dispersion suivants ( crédit d’image ) permettent de comprendre comment cela fonctionne dans la pratique :

Corrélation de Pearson pour divers diagrammes de dispersion

L’ analyse du quartet d’Anscombe, où les quatre ensembles de données ont une corrélation de Pearson de +0,816, bien qu’ils suivent le modèle "à mesure que augmente, tend à augmenter" de manière très différente ( crédit image ):yxy

Scatter plots pour Anscombe's Quartet

Si votre variable indépendante est nominale, cela n'a aucun sens de parler de ce qui se passe "à mesure que augmente". Dans votre cas, "Sujet de conversation" n'a pas de valeur numérique qui peut monter et descendre. Vous ne pouvez donc pas associer "Sujet de conversation" à "Durée de la conversation". Mais, comme @ttnphns l’a écrit dans les commentaires, il existe des mesures de la force d’association que vous pouvez utiliser qui sont quelque peu analogues. Voici quelques fausses données et code R qui les accompagne: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")

Qui donne:

> 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

Boîte à moustaches pour fausses données

En utilisant "Gossip" comme niveau de référence pour "Topic" et en définissant des variables nominales binaires pour "Sports" et "Météo", nous pouvons effectuer une régression multiple.

> 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 

On peut interpréter l'estimation de l'interception comme donnant la durée moyenne des conversations Gossip à 7,5 minutes et les coefficients estimés des variables nominales comme indiquant que les conversations sportives étaient en moyenne de 4 minutes plus courtes que celles de Gossip, tandis que les conversations météorologiques étaient de 2 minutes plus courtes que celles de Gossip. Une partie de la sortie est le coefficient de détermination . Une interprétation de ceci est que notre modèle explique 68% de la variance dans la durée de la conversation. Une autre interprétation de est que par racine carrée, on peut trouver la corrélation multiple coefficent .R 2 RR2=0.6809R2R

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

Notez que 0.825 n'est pas la corrélation entre Duration et Topic - nous ne pouvons pas corréler ces deux variables car Topic est nominal. Ce qu'il représente réellement est la corrélation entre les durées observées et celles prédites (ajustées) par notre modèle. Ces deux variables sont numériques, nous pouvons donc les corréler. En fait, les valeurs ajustées ne sont que les durées moyennes de chaque groupe:

> 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 

Juste pour vérifier, la corrélation de Pearson entre les valeurs observées et ajustées est la suivante:

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

Nous pouvons visualiser ceci sur un nuage de points:

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")

Visualiser le coefficient de corrélation multiple entre les valeurs observées et ajustées

La force de cette relation est visuellement très similaire à celle des tracés d'Anscombe's Quartet, ce qui n'est pas surprenant, car ils avaient tous des corrélations de Pearson d'environ 0,82.

Vous pourriez être surpris qu'avec une variable indépendante catégorique, j'ai choisi de faire une régression (multiple) plutôt qu'une ANOVA à une voie . Mais en fait, cela s'avère être une approche équivalente.

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

Cela donne un résumé avec une statistique F et une p-valeur identiques :

            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 

Encore une fois, le modèle ANOVA correspond aux moyennes de groupe, tout comme la régression:

> 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 

Cela signifie que la corrélation entre les valeurs ajustée et observée de la variable dépendante est la même que pour le modèle de régression multiple. La mesure de la "proportion de variance expliquée" pour la régression multiple a un équivalent ANOVA, (eta au carré). Nous pouvons voir qu'ils correspondent.η 2R2η2

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

En ce sens, l'analogue le plus proche d'une "corrélation" entre une variable explicative nominale et une réponse continue serait , la racine carrée de , qui est l'équivalent du coefficient de corrélation multiple pour la régression. Ceci explique le commentaire suivant: "La mesure la plus naturelle d'association / corrélation entre une variable nominale (prise comme IV) et une échelle (prise comme DV) est eta". Si vous êtes plus intéressé par la proportion de variance expliquée, vous pouvez vous en tenir à eta squared (ou son équivalent de régression ). Pour ANOVA, on rencontre souvent les partielsη 2 R R 2ηη2RR2eta au carré. Comme cette ANOVA était à sens unique (il n’existait qu’un seul prédicteur catégorique), l’éta carré partiel est identique à l’éta carré, mais les choses changent dans les modèles comportant davantage de prédicteurs.

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

Cependant, il est fort possible que ni la "corrélation" ni la "proportion de variance expliquée" ne soient la mesure de la taille de l'effet que vous souhaitez utiliser. Par exemple, vous pouvez vous concentrer davantage sur la façon dont les moyennes diffèrent entre les groupes. Cette question et cette réponse contiennent davantage d’informations sur eta squared, eta squared partiel et diverses alternatives.

Poisson d'argent
la source
4
R0.82
ηRηη
r=0.9R=0.9ηRr
ηrR
eta21