Comment étudier la «corrélation» entre une variable continue et une variable catégorielle?

19

Qu'est-ce qu'une mesure de «corrélation» significative pour étudier la relation entre ces deux types de variables?

En R, comment faire?

Luna
la source
1
avant de demander "comment étudiez-vous", vous devriez avoir la réponse à "comment définissez-vous" :-) BTW, si vous projetez la variable catégorielle en nombres entiers, vous pouvez déjà faire une corrélation.
Curieux
2
@Tomas, si vous faites cela, la force estimée de la relation dépend de la façon dont vous avez décidé d'étiqueter les points, ce qui est plutôt effrayant :)
Macro
@Macro, vous avez raison - un autre argument solide pour avoir une bonne définition!
Curieux
@Macro Sauf si j'ai mal compris votre point, non. La corrélation est insensible aux transformations linéaires. Donc cor (X, Y) = cor (a + bX, Y) pour a et b finis. Le réétiquetage d'un 0/1 en 1/11 ne fait rien aux corrélations utilisant cette var ou sa transformation linéaire.
Alexis
@Curious voir mon commentaire sur la macro ci-dessus. Et notez: (1) X <- sample(c(0,1),replace=TRUE,size=100)(2) Y <- X + rnorm(100,0.5)(3) corr(Y,X)(4) X <- 1 + 10*X(5) corr(X,Y): mêmes résultats pour les deux corrélations!
Alexis

Réponses:

19

Pour un instant, ignorons le problème continu / discret. Fondamentalement, la corrélation mesure la force de la relation linéaire entre les variables, et vous semblez demander une autre façon de mesurer la force de la relation. Vous pourriez être intéressé à regarder quelques idées de la théorie de l' information . Plus précisément, je pense que vous voudrez peut-être examiner les informations mutuelles . Les informations mutuelles vous donnent essentiellement un moyen de quantifier combien la connaissance de l'état d'une variable vous renseigne sur l'autre variable. En fait, je pense que cette définition est plus proche de ce que la plupart des gens veulent dire quand ils pensent à la corrélation.

Pour deux variables discrètes X et Y, le calcul est le suivant:

I(X;Y)=yYxXp(x,y)log(p(x,y)p(x)p(y))

Pour deux variables continues, nous intégrons plutôt que de prendre la somme:

I(X;Y)=YXp(x,y)log(p(x,y)p(x)p(y))dxdy

Votre cas d'utilisation particulier est pour un discret et un continu. Plutôt que d'intégrer sur une somme ou de sommer sur une intégrale, j'imagine qu'il serait plus facile de convertir l'une des variables dans l'autre type. Une façon typique de le faire serait de discrétiser votre variable continue en compartiments discrets.

Il existe un certain nombre de façons de discrétiser des données (par exemple des intervalles égaux), et je pense que le paquet d'entropie devrait être utile pour les calculs de MI si vous souhaitez utiliser R.

Michael McGowan
la source
1
Merci. Mais à quelle hauteur un MI correspond à corr = 1 et à quel point un MI correspond à corr = 0?
Luna
MI a un minimum de 0 et MI = 0 si et seulement si les variables sont indépendantes. MI n'a cependant pas de limite supérieure constante (la limite supérieure est liée aux entropies des variables), donc vous voudrez peut-être regarder l'une des versions normalisées si cela est important pour vous.
Michael McGowan,
6

Si la variable catégorielle est ordinale et que vous regroupez la variable continue en quelques intervalles de fréquence, vous pouvez utiliser Gamma. Le tau de Kendal, le tau de Stuart et le Somers D. sont également disponibles pour les données appariées mises sous forme ordinale. Elles sont toutes disponibles en SAS à l'aide de Proc Freq. Je ne sais pas comment ils sont calculés à l'aide des routines R. Voici un lien vers une présentation qui donne des informations détaillées: http://faculty.unlv.edu/cstream/ppts/QM722/measuresofassociation.ppt#260,5,Mesures of Association for Nominal and Ordinal Variables

Michael R. Chernick
la source
1

Une variable catégorielle n'est en fait qu'un ensemble de variables indicatrices. C'est une idée fondamentale de la théorie de la mesure qu'une telle variable est invariante à la réétiquetage des catégories, il n'est donc pas logique d'utiliser l'étiquetage numérique des catégories dans toute mesure de la relation entre une autre variable (par exemple, «corrélation») . Pour cette raison, la mesure de la relation entre une variable continue et une variable catégorielle doit être entièrement basée sur les variables indicatrices dérivées de cette dernière.

Étant donné que vous voulez une mesure de la «corrélation» entre les deux variables, il est logique d'examiner la corrélation entre une variable aléatoire continue et une variable aléatoire indicateur I dérivée d'une variable catégorielle. Soit ϕ P ( I = 1 ) nous avons:XIϕP(I=1)

Cov(I,X)=E(IX)E(I)E(X)=ϕ[E(X|I=1)E(X)],

qui donne:

Corr(I,X)=ϕ1ϕE(X|I=1)E(X)S(X).

XIϕXI=1


C1,...,mC=kIkI(C=k)

Corr(Ik,X)=ϕk1ϕkE(X|C=k)E(X)S(X).

We can then define Corr(C,X)(Corr(I1,X),...,Corr(Im,X)) as the vector of correlation values for each category of the categorical random variable. This is really the only sense in which it makes sense to talk about 'correlation' for a categorical random variable.

(Note: It is trivial to show that kCov(Ik,X)=0 and so the correlation vector for a categorical random variable is subject to this constraint. This means that given knowledge of the probability vector for the categorical random variable, and the standard deviation of X, you can derive the vector from any m1 of its elements.)


The above exposition is for the true correlation values, but obviously these must be estimated in a given analysis. Estimating the indicator correlations from sample data is simple, and can be done by substitution of appropriate estimates for each of the parts. (You could use fancier estimation methods if you prefer.) Given sample data (x1,c1),...,(xn,cn) we can estimate the parts of the correlation equation as:

ϕ^k1ni=1nI(ci=k).

E^(X)x¯1ni=1nxi.

E^(X|C=k)x¯k1ni=1nxiI(ci=k)/ϕ^k.

S^(X)sX1n1i=1n(xix¯)2.

Substitution of these estimates would yield a basic estimate of the correlation vector. If you have parametric information on X then you could estimate the correlation vector directly by maximum likelihood or some other technique.

Reinstate Monica
la source
0

R package mpmi has the ability to calculate mutual information for mixed variable case, namely continuous and discrete. Although there are other statistical options like (point) biserial correlation coefficient to be useful here, it would be beneficial and highly recommended to calculate mutual information since it can detect associations other than linear and monotonic.

siyisoy
la source
0

If X is a continuous random variable and Y is a categorical r.v.. the observed correlation between X and Y can be measured by

  1. the point-biserial correlation coefficient, if Y is dichotomous;
  2. the point-polyserial correlation coefficient, if Y is polychotomous with ordinal categories.

It should be noted, though, that the point-polyserial correlation is just a generalization of the point-biserial.

For a broader view, here's a table from Olsson, Drasgow & Dorans (1982)[1].

correlation coefficients

[1]: Source: Olsson, U., Drasgow, F., & Dorans, N. J. (1982). The polyserial correlation coefficient. Psychometrika, 47(3), 337–347

Waldir Leoncio
la source