Las pruebas de asociación son un conjunto de técnicas estadísticas que permiten determinar si existe una relación entre dos variables categóricas. En este documento se presenta las prueba de asociación más común, la prueba de Chi-cuadrado.
Las tablas de contingencia son una herramienta para visualizar la relación entre dos variables categóricas. A continuación se presenta un ejemplo de una tabla de contingencia.
# Crear una tabla de contingencia
tabla <- matrix(c(10, 20, 30, 40), nrow = 2, byrow = TRUE)
rownames(tabla) <- c("Hombres", "Mujeres")
colnames(tabla) <- c("Bajo Peso", "Peso Normal")
tabla
## Bajo Peso Peso Normal
## Hombres 10 20
## Mujeres 30 40
El estadístico de Chi-cuadrado se utiliza para determinar si existe una relación entre dos variables categóricas. A continuación se presenta un ejemplo de cómo calcular el estadístico de Chi-cuadrado.
La fórmula para el estadístico de Chi-cuadrado es la siguiente:
\[\chi^2 = \sum \frac{(O - E)^2}{E}\]
Donde:
El cálculo del valor esperado a partir de la tabla de contingencia es el siguiente:
\[E = \frac{(\text{Total de la fila} \times \text{Total de la columna})}{\text{Total de la tabla}}\]
total_tabla <- sum(tabla)
total_tabla
## [1] 100
total_filas <- apply(tabla, 1, sum)
total_columnas <- apply(tabla, 2, sum)
total_filas
## Hombres Mujeres
## 30 70
total_columnas
## Bajo Peso Peso Normal
## 40 60
# calcular usando índice y %*%
valores_esperados <- total_filas %*% t(total_columnas) / total_tabla
# nombre de las filas
rownames(valores_esperados) <- rownames(tabla)
# nombre de las columnas
colnames(valores_esperados) <- colnames(tabla)
valores_esperados
## Bajo Peso Peso Normal
## Hombres 12 18
## Mujeres 28 42
chi_cuadrado <- sum((tabla - valores_esperados)^2 / valores_esperados)
chi_cuadrado
## [1] 0.7936508
# Grados de libertad
grados_libertad <- (nrow(tabla) - 1) * (ncol(tabla) - 1)
# Valor crítico de la distribución de Chi-cuadrado
valor_critico <- qchisq(0.95, df = grados_libertad)
valor_critico
## [1] 3.841459
El estadístico de Chi-cuadrado se compara con el valor crítico de la distribución de Chi-cuadrado (\(\chi2_{\alpha=0.05}\)) para determinar si existe una relación significativa entre las variables categóricas. Si el estadístico de Chi-cuadrado es mayor que el valor crítico, se rechaza la hipótesis nula de independencia entre las variables.
En R, se puede realizar una prueba de Chi-cuadrado utilizando la
función chisq.test()
. A continuación se presenta un ejemplo
de cómo realizar una prueba de Chi-cuadrado con R.
# Realizar una prueba de Chi-cuadrado
resultado_chi_cuadrado <- chisq.test(tabla)
resultado_chi_cuadrado
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla
## X-squared = 0.44643, df = 1, p-value = 0.504
vcd
para tablas de contingenciaEl paquete vcd
es una herramienta útil para realizar
análisis de tablas de contingencia en R. A continuación se presenta un
ejemplo de cómo utilizar el paquete vcd
para analizar
tablas de contingencia.
# Instalar y cargar el paquete vcd
library(vcd)
## Loading required package: grid
# Example data
datos <- data.frame(
Sexo = c("Hombres", "Hombres", "Mujeres", "Mujeres"),
Peso = c("Bajo Peso", "Peso Normal", "Bajo Peso", "Peso Normal"),
Count = c(5, 60, 35, 40)
)
# Create contingency table
contingency_table <- xtabs(Count ~ Sexo + Peso, data = datos)
contingency_table
## Peso
## Sexo Bajo Peso Peso Normal
## Hombres 5 60
## Mujeres 35 40
Prueba de Chi-cuadrado con el paquete vcd
# Perform chi-squared test
chi_test <- chisq.test(contingency_table)
# Observed values
observed <- chi_test$observed
# Expected values
expected <- chi_test$expected
# Print results
print(observed)
## Peso
## Sexo Bajo Peso Peso Normal
## Hombres 5 60
## Mujeres 35 40
addmargins(observed)
## Peso
## Sexo Bajo Peso Peso Normal Sum
## Hombres 5 60 65
## Mujeres 35 40 75
## Sum 40 100 140
print(expected)
## Peso
## Sexo Bajo Peso Peso Normal
## Hombres 18.57143 46.42857
## Mujeres 21.42857 53.57143
print(chi_test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: contingency_table
## X-squared = 24.043, df = 1, p-value = 9.419e-07
Las tablas de contingencia se pueden visualizar de diferentes maneras
para facilitar la interpretación de los resultados. A continuación se
presenta un ejemplo de cómo visualizar una tabla de contingencia con el
paquete ggplot2
usando barras.
# Load necessary libraries
library(ggplot2)
# Convert contingency table to data frame
contingency_df <- as.data.frame.table(contingency_table)
# Plot using ggplot2
ggplot(contingency_df, aes(x = Sexo, y = Freq, fill = Peso)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = NULL, x = "Sexo", y = "Frecuencia", fill = "Peso")
Figura 1. Gráfico de barras a partir de los datos de la tabla de contingencia.
mosaic
en
vcd
El paquete vcd
también proporciona una función para
visualizar tablas de contingencia en forma de mosaico. A continuación se
presenta un ejemplo de cómo visualizar una tabla de contingencia en
forma de mosaico.
# Load necessary libraries
library(vcd)
# Mosaic plot
mosaic(contingency_table, shade = TRUE)
Figura 2. Gráfico de mosaico de la tabla de contingencia. Muestra los residuales estandarizados en cada celda.
La prueba de Chi-cuadrado tiene varios supuestos que deben cumplirse para que los resultados sean válidos. Algunos de los supuestos más importantes son:
Las pruebas de asociación, como la prueba de Chi-cuadrado, son una herramienta útil para determinar si existe una relación significativa entre dos variables categóricas. Estas pruebas nos permiten evaluar la independencia entre las variables y determinar si una supuesta asociación observada es estadísticamente significativa.
Vamos a considerar un estudio clínico en el que se evalúa la eficacia de dos tratamientos para una enfermedad. Se registraron los resultados de los pacientes tratados con los dos tratamientos y se desea determinar si hay una asociación entre el tratamiento y la recuperación de los pacientes.
Los datos se presentan en la siguiente tabla de contingencia:
# Instalar y cargar el paquete vcd
library(vcd)
# Example data
datos2 <- data.frame(
Tratamiento = c("Droga", "Droga", "Droga", "Placebo", "Placebo", "Placebo"),
Respuesta = c("Mejoría", "Igual", "Empeora", "Mejoría", "Igual", "Empeora"),
Count = c(30, 5, 5, 20, 10, 10)
)
# Create contingency table
contingency_table2 <- xtabs(Count ~ Tratamiento + Respuesta, data = datos2)
contingency_table2
## Respuesta
## Tratamiento Empeora Igual Mejoría
## Droga 5 5 30
## Placebo 10 10 20
Realiza una prueba de Chi-cuadrado para determinar si hay una asociación significativa entre el tratamiento y la recuperación de los pacientes. Interpreta los resultados obtenidos.
# Perform chi-squared test
chi_test2 <- chisq.test(contingency_table2)
# Observed values
observed2 <- chi_test2$observed
# Expected values
expected2 <- chi_test2$expected
# Print results
observed2
## Respuesta
## Tratamiento Empeora Igual Mejoría
## Droga 5 5 30
## Placebo 10 10 20
addmargins(expected2)
## Respuesta
## Tratamiento Empeora Igual Mejoría Sum
## Droga 7.5 7.5 25 40
## Placebo 7.5 7.5 25 40
## Sum 15.0 15.0 50 80
expected2
## Respuesta
## Tratamiento Empeora Igual Mejoría
## Droga 7.5 7.5 25
## Placebo 7.5 7.5 25
chi_test2
##
## Pearson's Chi-squared test
##
## data: contingency_table2
## X-squared = 5.3333, df = 2, p-value = 0.06948
Crear una gráfica de barras a partir de los datos de la tabla de contingencia.
# Load necessary libraries
library(ggplot2)
# Convert contingency table to data frame
contingency_df2 <- as.data.frame.table(contingency_table2)
# Plot using ggplot2
ggplot(contingency_df2, aes(x = Tratamiento, y = Freq, fill = Respuesta)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = NULL, x = "Tratamiento", y = "Frecuencia", fill = "Respuesta")
Figura 3. Gráfico de barras a partir de los datos de la tabla de contingencia.
Ahora una gráfica de mosaico para la tabla de contingencia:
# Load necessary libraries
library(vcd)
# Mosaic plot
mosaic(contingency_table2, shade = TRUE)