Dos variables categóricas
Se puede verificar si dos variables categóricas son independientes con la prueba de independencia Chi-Squared.
Esta es una prueba típica de Chi-cuadrado : si suponemos que dos variables son independientes, entonces los valores de la tabla de contingencia para estas variables deben distribuirse uniformemente. Y luego verificamos qué tan lejos del uniforme están los valores reales.
También existe una V de Crammer que es una medida de correlación que se desprende de esta prueba
Ejemplo
Supongamos que tenemos dos variables
- género: masculino y femenino
- ciudad: Blois y Tours
Observamos los siguientes datos:
¿Son independientes el género y la ciudad? Realicemos una prueba Chi-Squred. Hipótesis nula: son independientes, la hipótesis alternativa es que están correlacionados de alguna manera.
Bajo la hipótesis nula, asumimos una distribución uniforme. Entonces nuestros valores esperados son los siguientes

Entonces ejecutamos la prueba de chi-cuadrado y el valor p resultante aquí puede verse como una medida de correlación entre estas dos variables.
Para calcular la V de Crammer, primero encontramos el factor de normalización chi-cuadrado-máximo, que generalmente es el tamaño de la muestra, dividimos el chi-cuadrado por él y sacamos una raíz cuadrada

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)
Aquí el valor p es 0.08, bastante pequeño, pero aún no es suficiente para rechazar la hipótesis de independencia. Entonces podemos decir que la "correlación" aquí es 0.08
También calculamos V:
sqrt(chi2$statistic / sum(tbl))
Y obtenga 0.14 (cuanto menor sea v, menor será la correlación)
Considere otro conjunto de datos
Gender
City M F
B 51 49
T 24 26
Para esto, daría lo siguiente
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))
El valor p es 0.72, que está mucho más cerca de 1, y v es 0.03, muy cerca de 0
Variables categóricas vs numéricas
Para este tipo, generalmente realizamos la prueba ANOVA unidireccional : calculamos la varianza en el grupo y la varianza dentro del grupo y luego las comparamos.
Ejemplo
Queremos estudiar la relación entre la grasa absorbida de las donas frente al tipo de grasa utilizada para producir donas (el ejemplo se toma de aquí )

¿Hay alguna dependencia entre las variables? Para eso llevamos a cabo la prueba ANOVA y vemos que el valor p es solo 0.007, no hay correlación entre estas 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 salida es
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
Entonces, también podemos tomar el valor p como la medida de correlación aquí.
Referencias