Comment obtenir une corrélation entre deux variables catégorielles et une variable catégorielle et une variable continue?


63

Je construis un modèle de régression et j'ai besoin de calculer ce qui suit pour vérifier les corrélations

  1. Corrélation entre 2 variables qualitatives multiniveaux
  2. Corrélation entre une variable catégorielle à plusieurs niveaux et une variable continue
  3. VIF (facteur d'inflation de la variance) pour une variable catégorielle à plusieurs niveaux

Je pense que son tort d'utiliser le coefficient de corrélation de Pearson pour les scénarios ci-dessus, car Pearson ne fonctionne que pour 2 variables continues.

S'il vous plaît répondre aux questions ci-dessous

  1. Quel coefficient de corrélation fonctionne le mieux dans les cas ci-dessus?
  2. Le calcul VIF ne fonctionne que pour des données continues alors quelle est l'alternative?
  3. Quelles sont les hypothèses que je dois vérifier avant d’utiliser le coefficient de corrélation que vous suggérez?
  4. Comment les implémenter dans SAS & R?

4
Je dirais que CV.SE est un meilleur endroit pour poser des questions sur des statistiques plus théoriques comme celle-ci. Sinon, je dirais que la réponse à vos questions dépend du contexte. Parfois, il est logique d’agréger plusieurs niveaux en variables nominales, d’autres fois il vaut la peine de modéliser vos données en fonction de la distribution multinomiale, etc.
ffriend

Vos variables catégorielles sont-elles ordonnées? Si oui, cela peut influencer le type de corrélation que vous souhaitez rechercher.
nassimhddd

Je dois faire face au même problème dans mes recherches. mais je ne pouvais pas trouver la bonne méthode pour résoudre ce problème. donc si vous pouvez s'il vous plaît avoir la gentillesse de me donner les références que vous avez trouvées.
user89797

voulez-vous dire que la valeur p est identique au coefficient de corrélation r?
Ayo Emma

La solution ci-dessus avec ANOVA pour catégorique vs continu est bonne. Petit hoquet. Plus la valeur p est petite, meilleur est l'ajustement entre les deux variables. Pas l'inverse.
myudelson

Réponses:


73

Deux variables catégoriques

Le test d’indépendance de Chi-Squared permet de vérifier si deux variables catégorielles sont indépendantes.

Ceci est un test typique du chi carré : si nous supposons que deux variables sont indépendantes, les valeurs du tableau de contingence de ces variables doivent être distribuées de manière uniforme. Et ensuite, nous vérifions à quelle distance d'uniformité les valeurs réelles sont.

Il existe également un V de Crammer qui est une mesure de corrélation qui découle de ce test

Exemple

Supposons que nous ayons deux variables

  • genre: homme et femme
  • ville: Blois et Tours

Nous avons observé les données suivantes:

valeurs observées

Le genre et la ville sont-ils indépendants? Faisons un test de Chi-Squred. Hypothèse nulle: ils sont indépendants, l'hypothèse alternative est qu'ils sont corrélés d'une manière ou d'une autre.

Dans l'hypothèse Null, nous supposons une distribution uniforme. Donc, nos valeurs attendues sont les suivantes

valeur attendue

Nous effectuons donc le test du chi carré et la valeur p résultante peut être considérée ici comme une mesure de la corrélation entre ces deux variables.

Pour calculer le V de Crammer, nous trouvons d’abord le facteur de normalisation chi-carré-max qui correspond typiquement à la taille de l’échantillon, divisons le chi-carré par celui-ci et prenons une racine carrée.

crammers v

R

tbl = matrix(data=c(55, 45, 20, 30), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))

chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)

Ici, la valeur p est 0,08 - assez petite, mais pas encore suffisante pour rejeter l’hypothèse d’indépendance. On peut donc dire que la "corrélation" est ici 0.08

Nous calculons aussi V:

sqrt(chi2$statistic / sum(tbl))

Et obtenez 0,14 (plus le v est petit, plus la corrélation est faible)

Considérons un autre jeu de données

    Gender
City  M  F
   B 51 49
   T 24 26

Pour cela, cela donnerait ce qui suit

tbl = matrix(data=c(51, 49, 24, 26), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))

chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)

sqrt(chi2$statistic / sum(tbl))

La valeur p est 0,72, ce qui est beaucoup plus proche de 1 et v est 0,03 - très proche de 0

Variables catégoriques vs numériques

Pour ce type, nous effectuons généralement un test ANOVA unidirectionnel : nous calculons la variance intra-groupe et la variance intra-groupe, puis nous les comparons.

Exemple

Nous voulons étudier la relation entre la graisse absorbée par les beignets et le type de graisse utilisée pour produire des beignets (l'exemple est pris ici ).

beignets

Existe-t-il une dépendance entre les variables? Pour cela, nous effectuons un test ANOVA et constatons que la valeur p est juste de 0,007 - il n'y a pas de corrélation entre ces variables.

R

t1 = c(164, 172, 168, 177, 156, 195)
t2 = c(178, 191, 197, 182, 185, 177)
t3 = c(175, 193, 178, 171, 163, 176)
t4 = c(155, 166, 149, 164, 170, 168)

val = c(t1, t2, t3, t4)
fac = gl(n=4, k=6, labels=c('type1', 'type2', 'type3', 'type4'))

aov1 = aov(val ~ fac)
summary(aov1)

La sortie est

            Df Sum Sq Mean Sq F value  Pr(>F)   
fac          3   1636   545.5   5.406 0.00688 **
Residuals   20   2018   100.9                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Nous pouvons donc aussi prendre la valeur p comme mesure de la corrélation.

Références


1
Merci Alexey pour les détails. Sur la base de plus de recherches que j'ai trouvées sur la corrélation polysérienne et polychlorique. Comment votre approche est-elle meilleure que celles-ci? S'il vous plaît expliquer
GeorgeOfTheRF

1
Je ne suis pas au courant de ces choses, désolé.
Alexey Grigorev

Réponse fantastique par @Alexey. Après avoir lu votre commentaire, j'ai lu les corrélations polychoriques / polyséries en ligne. Ce sont des techniques permettant d’estimer la corrélation entre deux variables latentes, à partir de deux variables observées. Je ne pense pas que c'est ce que vous avez demandé, et ce n'est pas comparable à la réponse d'Alexey.
KarthikS

1
Votre premier exemple ne concerne PAS catégorique ou catégorique, mais plutôt catégorique et numérique. En fait, vous examinez la ville en fonction du nombre d'hommes (femmes, respectivement) qui est numérique. Catégorique vs catégorique serait, par exemple, la ville vs la couleur des yeux ou des formes ou quoi que ce soit d' autre, mais nullement serait - il le nombre de représentant du genre.
gented

1
@AlexeyGrigorev Si nos données ne sont pas distribuées normalement, devrait- kruskal-wallicon utiliser à la place de one-way anova? Merci d'avance.
ebrahimi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.