Corrélations avec des variables qualitatives non ordonnées


123

J'ai une base de données avec de nombreuses observations et de nombreuses variables. Certains sont catégoriques (non ordonnés) et les autres sont numériques.

Je cherche des associations entre ces variables. J'ai pu calculer la corrélation pour les variables numériques (corrélation de Spearman) mais:

  • Je ne sais pas comment mesurer la corrélation entre les variables catégoriques non ordonnées.
  • Je ne sais pas comment mesurer la corrélation entre les variables catégorielles non ordonnées et les variables numériques.

Est-ce que quelqu'un sait comment cela pourrait être fait? Si oui, y a-t-il des fonctions R implémentant ces méthodes?


Réponses:


113

Cela dépend du sens de la corrélation que vous souhaitez. Lorsque vous exécutez la corrélation de moment de produit du prototype de Pearson, vous obtenez une mesure de la force de l'association et un test de la signification de cette association. Plus généralement, cependant, le test de signification et la mesure de la taille de l' effet diffèrent.

Tests de signification:

Taille de l'effet (force de l'association):


5
Une explication très détaillée du cas continu vs nominal peut être trouvée ici: Corrélation entre une variable nominale (IV) et une variable continue (DV) .
gung

3
Dans le cas binaire vs intervalle il y a la corrélation point-biserial .
Glen_b

Quelle serait la meilleure alternative au test du khi-carré pour les grands échantillons?
Waldir Leoncio

2
@WaldirLeoncio, oui, mais si la valeur NULL est vraie, sera seulement du temps. C'est ainsi que cela est censé fonctionner. Si vous voulez connaître la magnitude de l'effet ainsi qu'un test de null, vous pouvez calculer le V de Cramer en même temps que le test du khi-carré. < 0,05 5 %p<.055%
gung

1
Comme @gung l'a souligné, la corrélation entre une variable nominale (IV) et une variable continue (DV) est un excellent lien pour déterminer comment une corrélation peut être effectuée pour des variables mixtes. Hmisc::rcorrfait cela magnifiquement et nous pouvons le vérifier (pour un dataframe à variables mélangées) comme suit:as.data.frame(rcorr(as.matrix(data_frame),type = "pearson")$P) as.data.frame(rcorr(as.matrix(data_frame),type = "pearson")$r)
KarthikS

15

J'ai déjà vu la feuille de triche suivante liée:

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

Cela peut vous être utile. Il contient même des liens vers des bibliothèques R spécifiques.


3
Le problème avec cette aide-mémoire est qu’il ne concerne que les variables catégorielles / ordinales / d’intervalle. Ce que je recherche, c’est une méthode me permettant d’utiliser des variables indépendantes numériques et catégoriques.
Clément F

6

Si vous voulez une matrice de corrélation de variables qualitatives, vous pouvez utiliser la fonction d'encapsuleur suivante (nécessitant le package 'vcd'):

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

Où:

vars est un vecteur chaîne de variables qualitatives que vous souhaitez corréler

dat est un data.frame contenant les variables

Le résultat est une matrice de V de Cramer.


6

XKtiKi=1,,pXtiR2

Une telle analyse peut être vue comme une généralisation de l’analyse des correspondances multiples et est connue sous de nombreux noms, tels que analyse de corrélation canonique, analyse d’homogénéité et bien d’autres. Une implémentation dans R est dans le homalspackage (sur CRAN). googler pour certains de ces noms donnera une mine d'informations, il y a un livre complet: Albert Gifi, "Analyse multivariée non linéaire". Bonne chance!


1
1

Je vais éditer pour prendre en compte ce commentaire.
kjetil b halvorsen

2

J'ai eu un problème similaire et j'ai essayé le test du chi carré comme suggéré, mais je suis devenu très confus en évaluant les valeurs P par rapport à l'hypothèse NULL.

Je vais expliquer comment j'ai interprété les variables catégoriques. Je ne suis pas sûr de sa pertinence dans votre cas. J'avais la variable de réponse Y et deux variables de prédicteur X1 et X2, X2 étant une variable catégorielle à deux niveaux, disons 1 et 2. J'essayais de faire correspondre un modèle linéaire

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

Mais je voulais comprendre comment différents niveaux de X2 correspondent à l'équation ci-dessus. Je suis tombé sur une fonction R par ()

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

Ce code ne fait que tenter de s’intégrer au modèle linéaire pour chaque niveau de X2. Cela m'a donné toute la valeur de p et le carré R, erreur standard résiduelle que je comprends et que je peux interpréter.

Encore une fois, je ne suis pas sûr si c'est ce que vous voulez. J'ai en quelque sorte comparé différentes valeurs de X2 dans la prédiction de Y.


1

Pour mesurer la force du lien entre deux variables catégoriques, je suggérerais plutôt l'utilisation d'un tableau croisé avec la statistique chisquare

pour mesurer la force du lien entre une variable numérique et une variable catégorielle, vous pouvez utiliser une comparaison moyenne pour voir si elle change de manière significative d'une catégorie à une autre


2
Bienvenue sur le site @DaSilvaLionel. Vous remarquerez peut-être que l'utilisation du test du chi-carré avec deux variables qualitatives a déjà été suggérée ci-dessus.
gung
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.