Как мне изучить «корреляцию» между непрерывной переменной и категориальной переменной?

19

Что такое значимая «корреляционная» мера для изучения взаимосвязи между такими двумя типами переменных?

В R как это сделать?

Luna
источник
1
прежде чем спросить «как ты учишься», у тебя должен быть ответ на вопрос «как ты определяешь» :-) Кстати, если вы проецируете категориальную переменную на целые числа, вы уже можете сделать корреляцию.
Любопытно
2
@ Томас, если вы это сделаете, предполагаемая сила отношений зависит от того, как вы решили пометить точки, что немного страшно :)
Макрос
@ Макро, ты прав - еще один веский аргумент в пользу хорошего определения!
Любопытно
@Macro Если я не понял вашу точку зрения, нет. Корреляция нечувствительна к линейным преобразованиям. Таким образом, cor (X, Y) = cor (a + bX, Y) для конечных a и b. Перемаркировка 0/1 как 1/11 ничего не делает с корреляциями, использующими этот var или его линейное преобразование.
Алексис
@ Любопытно посмотреть мой комментарий к Макро выше. И обратите внимание: (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): одинаковые результаты для обеих корреляций!
Алексис

Ответы:

19

На мгновение давайте проигнорируем непрерывную / дискретную проблему. По сути, корреляция измеряет силу линейных отношений между переменными, и вы, похоже, просите альтернативный способ измерения силы отношений. Возможно, вам будет интересно взглянуть на некоторые идеи из теории информации . В частности, я думаю, что вы можете посмотреть на взаимную информацию . Взаимная информация, по сути, дает вам возможность количественно определить, насколько знание состояния одной переменной говорит вам о другой переменной. Я действительно думаю, что это определение ближе к тому, что имеет в виду большинство людей, когда они думают о корреляции.

Для двух дискретных переменных X и Y вычисление выглядит следующим образом:

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

Для двух непрерывных переменных мы интегрируем, а не берем сумму:

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

Ваш конкретный вариант использования предназначен для одного дискретного и одного непрерывного. Вместо того, чтобы интегрировать по сумме или суммировать по интегралу, я представляю, что было бы легче преобразовать одну из переменных в другой тип. Типичный способ сделать это - дискретизировать вашу непрерывную переменную в дискретные ячейки.

Существует несколько способов дискретизации данных (например, равные интервалы), и я считаю, что пакет энтропии должен быть полезен для вычислений MI, если вы хотите использовать R.

Майкл МакГоуэн
источник
1
Благодарю. Но насколько высокий MI соответствует corr = 1 и насколько низкий MI соответствует corr = 0?
Луна
MI имеет минимум 0, а MI = 0 тогда и только тогда, когда переменные независимы. Хотя MI не имеет постоянной верхней границы (верхняя граница связана с энтропиями переменных), поэтому вы можете захотеть взглянуть на одну из нормализованных версий, если это важно для вас.
Майкл МакГоуэн
6

Если категориальная переменная является порядковой, и вы преобразуете непрерывную переменную в несколько частотных интервалов, вы можете использовать гамму. Для парных данных, представленных в порядковой форме, также доступны тау Кендала, тау Стюарта и Сомерса D. Все они доступны в SAS с использованием Proc Freq. Я не знаю, как они вычисляются с использованием подпрограмм R. Вот ссылка на презентацию, в которой содержится подробная информация: http://faculty.unlv.edu/cstream/ppts/QM722/measuresofassociation.ppt#260,5, меры ассоциации для именных и порядковых переменных.

Майкл Р. Черник
источник
1

Категориальная переменная фактически является просто набором индикаторных переменных. Основная идея теории измерений заключается в том, что такая переменная инвариантна к перемаркировке категорий, поэтому нет смысла использовать числовую маркировку категорий в какой-либо мере взаимосвязи между другой переменной (например, «корреляция»). , По этой причине и мера взаимосвязи между непрерывной переменной и категориальной переменной должна полностью основываться на переменных индикатора, полученных из последней.

Учитывая, что вы хотите измерить «корреляцию» между двумя переменными, имеет смысл взглянуть на корреляцию между непрерывной случайной величиной и индикаторной случайной величиной I, полученной из категориальной переменной. Полагая ϕ P ( I = 1 ), имеем:XIϕP(I=1)

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

который дает:

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

So the correlation between a continuous random variable X and an indicator random variable I is a fairly simple function of the indicator probability ϕ and the standardised gain in expected value of X from conditioning on I=1. Note that this correlation does not require any discretization of the continuous random variable.


For a general categorical variable C with range 1,...,m you would then just extend this idea to have a vector of correlation values for each outcome of the categorical variable. For any outcome C=k we can define the corresponding indicator IkI(C=k) and we have:

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
источник
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
источник
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
источник