Tengo una variable nominal (diferentes temas de conversación, codificada como topic0 = 0, etc.) y varias variables de escala (DV), como la duración de una conversación.
¿Cómo puedo derivar correlaciones entre las variables nominales y de escala?
Tengo una variable nominal (diferentes temas de conversación, codificada como topic0 = 0, etc.) y varias variables de escala (DV), como la duración de una conversación.
¿Cómo puedo derivar correlaciones entre las variables nominales y de escala?
Respuestas:
El título de esta pregunta sugiere un malentendido fundamental. La idea más básica de correlación es "a medida que una variable aumenta, la otra variable aumenta (correlación positiva), disminuye (correlación negativa) o permanece igual (sin correlación)" con una escala tal que la correlación positiva perfecta es +1, ninguna correlación es 0, y la correlación negativa perfecta es -1. El significado de "perfecto" depende de que se utiliza medida de correlación: para correlación de Pearson significa que los puntos en un gráfico de dispersión mentira a la derecha en una línea recta (en pendiente hacia arriba para 1 y hacia abajo para -1), para de correlación de Spearman que la los rangos están exactamente de acuerdo (o exactamente en desacuerdo, por lo que el primero se combina con el último, para -1) y para la tau de Kendallque todos los pares de observaciones tienen rangos concordantes (o discordantes para -1). Una intuición de cómo funciona esto en la práctica se puede deducir de las correlaciones de Pearson para los siguientes diagramas de dispersión ( crédito de imagen ):
Se obtiene más información al considerar el Cuarteto de Anscombe, donde los cuatro conjuntos de datos tienen una correlación de Pearson +0.816, a pesar de que siguen el patrón "a medida que aumenta, tiende a aumentar" de maneras muy diferentes ( crédito de imagen ):y
Si su variable independiente es nominal, entonces no tiene sentido hablar de lo que sucede "a medida que aumenta". En su caso, el "Tema de conversación" no tiene un valor numérico que pueda subir y bajar. Por lo tanto, no puede correlacionar "Tema de conversación" con "Duración de la conversación". Pero como escribió @ttnphns en los comentarios, hay medidas de fuerza de asociación que puede usar que son algo análogas. Aquí hay algunos datos falsos y el código R que lo acompaña:
data.df <- data.frame(
topic = c(rep(c("Gossip", "Sports", "Weather"), each = 4)),
duration = c(6:9, 2:5, 4:7)
)
print(data.df)
boxplot(duration ~ topic, data = data.df, ylab = "Duration of conversation")
Lo que da:
> print(data.df)
topic duration
1 Gossip 6
2 Gossip 7
3 Gossip 8
4 Gossip 9
5 Sports 2
6 Sports 3
7 Sports 4
8 Sports 5
9 Weather 4
10 Weather 5
11 Weather 6
12 Weather 7
Al usar "Gossip" como nivel de referencia para "Topic" y definir variables ficticias binarias para "Sports" y "Weather", podemos realizar una regresión múltiple.
> model.lm <- lm(duration ~ topic, data = data.df)
> summary(model.lm)
Call:
lm(formula = duration ~ topic, data = data.df)
Residuals:
Min 1Q Median 3Q Max
-1.50 -0.75 0.00 0.75 1.50
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.5000 0.6455 11.619 1.01e-06 ***
topicSports -4.0000 0.9129 -4.382 0.00177 **
topicWeather -2.0000 0.9129 -2.191 0.05617 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.291 on 9 degrees of freedom
Multiple R-squared: 0.6809, Adjusted R-squared: 0.6099
F-statistic: 9.6 on 2 and 9 DF, p-value: 0.005861
Podemos interpretar que la intercepción estimada da la duración media de las conversaciones de chismes como 7,5 minutos, y los coeficientes estimados para las variables ficticias que muestran que las conversaciones deportivas fueron en promedio 4 minutos más cortas que las de chismes, mientras que las conversaciones sobre el clima fueron 2 minutos más cortas que las de chismes. Parte del resultado es el coeficiente de determinación . Una interpretación de esto es que nuestro modelo explica el 68% de la variación en la duración de la conversación. Otra interpretación de es que junto a la plaza de raíces, podemos encontrar la correlación múltiple coeficiente .R 2 R
> rsq <- summary(model.lm)$r.squared
> rsq
[1] 0.6808511
> sqrt(rsq)
[1] 0.825137
Tenga en cuenta que 0.825 no es la correlación entre Duración y Tema: no podemos correlacionar esas dos variables porque el Tema es nominal. Lo que realmente representa es la correlación entre las duraciones observadas y las predichas (ajustadas) por nuestro modelo. Ambas variables son numéricas, por lo que podemos correlacionarlas. De hecho, los valores ajustados son solo las duraciones medias para cada grupo:
> print(model.lm$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
Solo para verificar, la correlación de Pearson entre los valores observados y ajustados es:
> cor(data.df$duration, model.lm$fitted)
[1] 0.825137
Podemos visualizar esto en un diagrama de dispersión:
plot(x = model.lm$fitted, y = data.df$duration,
xlab = "Fitted duration", ylab = "Observed duration")
abline(lm(data.df$duration ~ model.lm$fitted), col="red")
La fortaleza de esta relación es visualmente muy similar a la de las parcelas del Cuarteto de Anscombe, lo cual no es sorprendente ya que todos tenían correlaciones de Pearson de alrededor de 0.82.
Es posible que se sorprenda de que con una variable independiente categórica, elegí hacer una regresión (múltiple) en lugar de un ANOVA unidireccional . Pero, de hecho, esto resulta ser un enfoque equivalente.
library(heplots) # for eta
model.aov <- aov(duration ~ topic, data = data.df)
summary(model.aov)
Esto da un resumen con idéntico estadístico F y valor p :
Df Sum Sq Mean Sq F value Pr(>F)
topic 2 32 16.000 9.6 0.00586 **
Residuals 9 15 1.667
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Nuevamente, el modelo ANOVA se ajusta a las medias grupales, tal como lo hizo la regresión:
> print(model.aov$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
Esto significa que la correlación entre los valores ajustados y observados de la variable dependiente es la misma que para el modelo de regresión múltiple. La medida de "proporción de varianza explicada" para regresión múltiple tiene un ANOVA equivalente, (eta al cuadrado). Podemos ver que coinciden.η 2
> etasq(model.aov, partial = FALSE)
eta^2
topic 0.6808511
Residuals NA
En este sentido, el análogo más cercano a una "correlación" entre una variable explicativa nominal y una respuesta continua sería , la raíz cuadrada de , que es el equivalente del coeficiente de correlación múltiple para la regresión. Esto explica el comentario de que "La medida más natural de asociación / correlación entre una variable nominal (tomada como IV) y una escala (tomada como DV) es eta". Si está más interesado en la proporción de varianza explicada, puede quedarse con eta al cuadrado (o su regresión equivalente ). Para ANOVA, a menudo se encuentra el parcialη 2 R R 2eta al cuadrado. Como este ANOVA era unidireccional (solo había un predictor categórico), el eta cuadrado parcial es el mismo que el cuadrado eta, pero las cosas cambian en los modelos con más predictores.
> etasq(model.aov, partial = TRUE)
Partial eta^2
topic 0.6808511
Residuals NA
Sin embargo, es muy posible que ni la "correlación" ni la "proporción de varianza explicada" sean la medida del tamaño del efecto que desea utilizar. Por ejemplo, su enfoque puede estar más en cómo los medios difieren entre los grupos. Esta pregunta y respuesta contienen más información sobre eta al cuadrado, eta al cuadrado parcial y varias alternativas.