Diferencias estadísticas 1: z-test, t-test y ANOVA

Hasta ahora hemos visto ejercicios en los que tratábamos de hallar la relación entre las variables de un ejercicio. Algo que suele ser de utilidad en muchos ejercicios de econometría, pero no son los únicos.

En este apartado concreto vamos a estudiar cómo contrastar la existencia de cambios entre periodos o muestras. No estamos interesados, por tanto, en saber si una variable afecta a otra, sino si, por ejemplo, en el transcurso del tiempo, en el movimiento de una muestra, o en la comparación entre dos elementos, las diferencias son suficientes como para que estas no se hayan producido por azar.

Pero aunque el ejercicio parezca muy diferente, los conceptos y puntos de partida siguen siendo los mismos. En este caso, de lo que se trata de testear es de si los valores medios de un grupo o variable “a” son diferentes a otros “b” (que bien puede ser la misma identidad que se encuentra en otro momento temporal o geográfico):

\[H_0:μ_a=μ_b\\ H_1:μ_a≠μ_b\]

O lo que es lo mismo:

\[H_0:μ_a-μ_b=0\\ H_1:μ_a−μ_b≠0 \]

Prueba t-test

Los métodos paramétricos en econometría son técnicas que asumen que los datos se ajustan a un modelo específico y que la distribución de los errores en el modelo sigue una distribución conocida, como la distribución normal. Los métodos paramétricos son ampliamente utilizados en econometría para estimar modelos de regresión y predecir resultados futuros.

El t-test es una técnica estadística paramétrica que se utiliza para comparar la media de dos grupos, determinando si las diferencias observadas son estadísticamente significativas. El t-test utiliza la distribución t de Student, que se utiliza cuando el tamaño de la muestra es pequeño (n<30) y la desviación estándar de la población es desconocida. Esta prueba nos permite detectar si es probable que exista de forma arbitraria una distinción entre dos agrupaciones.

La fórmula para encontrar el valor de la prueba t depende del tipo de prueba t que se esté realizando. Hay dos tipos principales de pruebas t: la prueba t de una muestra y la prueba t de dos muestras.

Para la prueba t de una muestra, la fórmula es:

\[ t = \frac{(\bar x - \mu)}{(s/\sqrt{n})} = \frac{(\bar x - \mu)}{(SE)} \] donde: \(\bar x\) es la media muestral, \(\mu\) es la media poblacional con el que queremos comparar la media muestral, s es la desviación estándar muestral, y n es el tamaño de la muestra. SE es el error estándar. Este ejercicio lo que determina es si la distribución de nuestra muestra es acorde a la distribución t:

Pero esta fórmula puede reinterpretarse para encontrar la significatividad de la diferencia en la distribución de dos muestras, de modo que:

\[ t = \frac{(\bar x_1 - \bar x_2)}{SE_{xy}} = \frac{(\bar x_1 - \bar x_2)}{{\sqrt{[(s_1^2/n_1) + (s_2^2/n_2)]}}} \] siendo \(\bar y\) y \(\bar x\) las medias de dos muestras independientes. El valor de \(s^2_i\) puede calcularse cómo: \[ s^2_i=\frac {\sum_{j=1}^{n_i}(x_j-\bar x_1)^2}{n_i-1} \] El estadístico t aumenta su valor según lo haga la diferencia entre las medias del numerador, las varianzas disminuyen, o el tamaño muestral se incrementa. Según se incrementa el valor de t, tendremos más certeza de asumir la hipótesis alternativa, es decir, que o bien la distribución de la muestra no sigue una distribución de Student, o bien que hay una diferencia significativa entre las medias de las variables \(x_1\) y \(x_2\).

Para determinar si el valor t está o no dentro de unos niveles críticos que permitan la aceptación o rechazo de las hipótesis nula y alternativa, se debe acudir a las tablas estadísticas, utilizando los valores de significancia \(\alpha = 0.05\) y n-1 grados de libertad en el caso de la primera prueba \((x - \mu)\), y \(n_1+n_2-2\) grados de libertad en el caso de la segunda prueba \((x_1 - x_2)\).

Otra forma de determinar si el valor obtenido es estadísticamente significativo es con el valor p, que indica la probabilidad de que el resultado de la prueba se deba al azar y no a una diferencia real entre las dos muestras. Se calcula como:

\[p = P (T > t) + P (T < -t)\] donde \(T\) es la variable aleatoria que sigue una distribución t de Student con n-1 grados de libertad, y \(t\) es el valor de la estadística \(t\) calculada en la prueba.

Si el valor p es menor que el nivel de significancia, se puede rechazar la hipótesis nula y concluir que hay evidencia suficiente para afirmar que hay una diferencia significativa entre las dos muestras.

Ejemplo 1

Supongamos que se quiere determinar si una muestra de tamaño n = 20 sigue una distribución normal utilizando una prueba t de una sola muestra con un nivel de significancia del 5%. Recordemos que la hipótesis nula (H0) es que la muestra sigue una distribución normal y la hipótesis alternativa (Ha) es que la muestra no sigue una distribución normal.

Los datos de la muestra recolectada son: n = 20, \(\bar x = 12.5\), y \(s=2.3\). El valor del t estadístico es:

\[ t = \frac{(\bar x - \mu)}{(s/\sqrt{n})} = \frac{(12.5 - 0)}{(2.3/\sqrt{20})} = 19.72 \] El siguiente paso es comparar el valor de t con el valor crítico de t con n-1 grados de libertad (19 en este caso) y un nivel de significancia del 5% (\(\alpha = 0.05\)). Utilizando una tabla t de Student, el valor crítico de \(t\) es ±2.093.

Como el valor absoluto de t (19.72) es mucho mayor que el valor crítico de t (2.093), se puede rechazar la hipótesis nula y concluir que la muestra no sigue una distribución t de Student. Esto significa que la muestra no se ajusta bien a una distribución normal y que puede haber valores atípicos o sesgo en la muestra.

Ejemplo 2 (con p valor)

Supongamos que se quiere comparar las diferencias en el empleo entre dos ciudades cercanas, A y B, que han llevado a cabo políticas de trabajo diferentes. Se recolectaron los datos de una muestra aleatoria de 50 personas desempleadas de la ciudad A, y 100 personas desempleadas de la ciudad B. Estos fueron los resultados:

\[\mu_A = 0.08;\ \ s_A = 0.02 \\ \mu_B = 0.12;\ \ s_A = 0.03\]

La hipótesis nula (H0) es que no hay diferencia significativa entre las dos tasas de desempleo (μA = μB) y la hipótesis alternativa (Ha) es que hay una diferencia significativa entre las dos tasas de desempleo (μA ≠ μB). Para analizar si hay una diferencia significativa en las tasas de desempleo entre las dos ciudades, se puede realizar una prueba t de dos muestras con un nivel de significancia del 5%.

Calculemos el valor de t:

\[ t = \frac {(0.08 - 0.12)}{\sqrt{[(0.02^2 / 50) + (0.03^2 / 50)]}} = -2.82 \] En las tablas t de student, el valor crítico con un nivel de significancia de \(\alpha = 0.05\) para 98 grados de libertad \((n_1+n_2-2=98)\) es de \(±1.984\). Dado que nuestro valor de t (-2.82) es mayor que el valor crítico de t (1.984), se puede rechazar la hipótesis nula y concluir que hay una diferencia significativa en las tasas de desempleo entre las dos ciudades.

El valor \(p\) correspondiente a este ejercicio se refiere a la probabilidad de obtener un valor de t más extremo que el valor observado (-2.82) bajo la hipótesis nula de que no hay diferencia significativa entre las dos medias muestrales. En este caso, el valor p se puede calcular utilizando una tabla t de Student.

Buscando el valor absoluto más cercano a 2.82, en la tabla con 98 grados de libertad, se encuentra un valor de 0.0052 (o 0.0026 para una prueba de una cola). Este valor indica que la probabilidad de obtener un valor de t tan extremo o más extremo que -2.82 es de aproximadamente 0.52%.

Como este valor es menor que el nivel de significancia del 5%, se puede concluir que la diferencia observada entre las tasas de desempleo en las dos ciudades es estadísticamente significativa y se puede rechazar la hipótesis nula de que no hay diferencia significativa entre las dos medias muestrales. En otras palabras, se puede afirmar con un nivel de confianza del 95% que las políticas de empleo implementadas en la ciudad A han resultado en una tasa de desempleo significativamente menor que las políticas de empleo implementadas en la ciudad B.

Cálculo en rstudio

Para calcular el t-estadísticoy su significatividad vamos a suponer dos muestras, x e y, con n = 20

# Definir las dos muestras
x <- c(1.9, 2.2, 2.5, 2.3, 2.1, 1.8, 1.5, 1.7, 2.0, 1.8, 1.6, 2.3, 2.2, 2.4, 2.1, 1.9, 1.8, 2.2, 2.5, 2.4)
y <- c(1.4, 1.7, 1.8, 2.0, 2.2, 2.4, 2.1, 1.9, 1.8, 1.7, 1.5, 1.3, 1.6, 1.9, 2.2, 2.3, 2.1, 1.8, 1.5, 1.6)

Ahora, simplemente realizamos el t-test, con el siguiente comando

# Realizar una prueba t
t.test(x, y)
## 
##  Welch Two Sample t-test
## 
## data:  x and y
## t = 2.2806, df = 37.956, p-value = 0.02827
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.02471188 0.41528812
## sample estimates:
## mean of x mean of y 
##      2.06      1.84

Para saber la significatividad del valor de t=2 podríamos verlo en la tabla estadística de t, buscando el valor de significancia 0.05, para 38 grados de libertad. Sin embargo, al tener un p-valor inverior a 0.05, ya sabemos que podemos rechazar la hipótesis nula con un 95% de probabilidad, y que por tanto las medias de \(x\) y de \(y\) son significativamente distintas.

Esto podemos codificarlo de la siguiente forma:

# Realizar una prueba t
ttest <- t.test(x, y)
tvalue <- ttest$statistic
pvalue <- ttest$p.value

# Imprimir el resultado
if (pvalue < 0.05) {
  cat("El valor de p es", round(pvalue, 4), "y es menor que el nivel de significancia de 0.05. Por lo tanto, se rechaza la hipótesis nula.")
} else {
  cat("El valor de p es", round(pvalue, 4), "y es mayor que el nivel de significancia de 0.05. Por lo tanto, no se rechaza la hipótesis nula.")
}
## El valor de p es 0.0283 y es menor que el nivel de significancia de 0.05. Por lo tanto, se rechaza la hipótesis nula.

Prueba z-test

La principal diferencia entre el t-test y el Z-test es la distribución de probabilidad que se utiliza para calcular cada estadístico. El Z-test utiliza la distribución normal estándar, y se utiliza cuando el tamaño de la muestra es grande y se conoce la desviación estándar de la población. Esto quiere decir que se conoce cuánto se espera que difieran los valores de la variable en toda la población alrededor de su media.

En definitiva, el z-test es una herramienta más precisa que el t-test, pero más compleja de usar. No siempre es fácil conocer la desviación estándar de la población, ya que por lo general solo tenemos datos de una muestra poblacional. Su cálculo se obtiene como:

\[z = \frac{\bar{x} - \mu}{\sigma/\sqrt{n}}\]

donde: \(\bar{x}\) es la media muestral, \(\mu\) es la media poblacional, \(\sigma\) es la desviación estándar poblacional, \(n\) es el tamaño de la muestra. Con esta fórmula determinamos si una muestra es estadísticamente significativa en relación a una población, al comparar la media muestral con la media poblacional hipotética y la desviación estándar poblacional conocida. Si el valor resultante es mayor que el valor crítico de la distribución normal estándar, entonces se rechaza la hipótesis nula y se concluye que la muestra es estadísticamente significativa.

La principal diferencia entre esta fórmula y el t-test es la desviación estándar poblacional en la fórmula de la prueba z, mientras que en la fórmula de la prueba t se utiliza la desviación estándar muestral como una estimación de la desviación estándar poblacional.

En general, los gráficos de dispersión t y z son similares en términos de su estructura y función. Ambos gráficos son utilizados para visualizar distribuciones de probabilidad y mostrar la ubicación de una muestra específica en relación con la población. La principal diferencia visual entre los gráficos de dispersión t y z es que la distribución t es más ancha y aplastada que la distribución z. Esto se debe a que la distribución t tiene una varianza mayor que la distribución z. Otra diferencia importante es que la distribución t tiene colas más gruesas que la distribución z. Esto se debe a que la distribución t se basa en muestras más pequeñas y, por lo tanto, tiene una mayor probabilidad de producir valores atípicos.

En términos generales, la forma de ambas distribuciones es similar, ya que ambas siguen una distribución normal. Sin embargo, la distribución t es más sesgada debido a la mayor probabilidad de valores atípicos en muestras más pequeñas. En muestras grandes, el comportamiento es similar.

Ejemplo

Supongamos que en una clase de economía se desea comparar el desempeño en un examen de dos grupos de estudiantes: uno que recibió un programa de tutorías (grupo de seguimiento) y otro que no recibió ninguna intervención (grupo de control). Se espera que el grupo de seguimiento tenga un desempeño significativamente mejor que el grupo de control.

Se quiere realizar una prueba de hipótesis con un nivel de significancia del 5% y se utilizará un z test para comparar las medias de ambas muestras. La hipótesis alternativa se plantea como una sola cola, ya que se espera que el grupo de tratamiento tenga un desempeño mayor que el grupo de control.

H0: La media del grupo de tratamiento es igual a la media del grupo de control. Ha: La media del grupo de tratamiento es mayor que la media del grupo de control.

# Generar datos aleatorios para dos muestras de estudiantes
set.seed(123)
seguimiento <- rnorm(50, mean = 70, sd = 10)
control <- rnorm(50, mean = 65, sd = 10)

# Calcular la media y desviación estándar de cada muestra
media_seguimiento <- mean(seguimiento)
media_control <- mean(control)
sd_seguimiento <- sd(seguimiento)
sd_control <- sd(control)

# Calcular el estadístico de prueba z
z_stat <- (media_seguimiento - media_control) / sqrt((sd_seguimiento^2/length(seguimiento)) + (sd_control^2/length(control)))

#Calcular el p-valor
p_value <- 1 - pnorm(z_stat)

# Imprimir el resultado
if (p_value < 0.05) {
  cat("El valor de z es ", round(z_stat, 4), "con un valor de p igual a", round(p_value, 4), "que es menor que el nivel de significancia de 0.05. Por lo tanto, se rechaza la hipótesis nula.")
} else {
  cat("El valor de z es ", round(z_stat, 4), "con un valor de p igual a", round(pvalue, 4), "que es mayor que el nivel de significancia de 0.05. Por lo tanto, no se rechaza la hipótesis nula.")
}
## El valor de z es  2.1185 con un valor de p igual a 0.0171 que es menor que el nivel de significancia de 0.05. Por lo tanto, se rechaza la hipótesis nula.

De forma rápida, se puede calcular como:

#install.packages("BSDA")
library(BSDA)
## Loading required package: lattice
## 
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
## 
##     Orange
# Realizar el test z con cola superior
resultado_test<-
  z.test(
  x=seguimiento,
  y=control,
  alternative = "greater", #para dos colas: "two.sided"
  mu = 0,
  sigma.x = sd_seguimiento,
  sigma.y = sd_control,
  conf.level = 0.95
)

resultado_test
## 
##  Two-sample z-Test
## 
## data:  seguimiento and control
## z = 2.1185, p-value = 0.01706
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  0.8675168        NA
## sample estimates:
## mean of x mean of y 
##  70.34404  66.46408

Visualmente quedaría de la siguiente forma:

Test ANOVA

La metodología ANOVA (Análisis de Varianza) es una técnica estadística utilizada para analizar la variabilidad en un conjunto de datos. Es una extensión del t-test, que se utiliza para determinar si existe alguna diferencia significativa entre las medias de diferentes grupos.

La principal diferencia entre ANOVA y t-test y z-test es que ANOVA utiliza la varianza para determinar si las medias son diferentes, mientras que t-test y z-test utilizan la desviación estándar.

La hipótesis nula de un test ANOVA establece que no hay diferencias significativas entre las medias de los grupos o poblaciones comparadas. Por otro lado, la hipótesis alternativa indica que hay al menos una diferencia significativa entre las medias de los grupos o poblaciones comparadas.

En términos formales, la hipótesis nula del test ANOVA es:

H0: μ1 = μ2 = μ3 = … = μk

Donde μ1, μ2, μ3, …, μk son las medias de los k grupos o poblaciones que se están comparando. La hipótesis alternativa es cualquier otra situación distinta a la hipótesis nula, es decir:

Ha: al menos una de las medias es significativamente diferente a las demás.

La fórmula para calcular ANOVA es:

\[F = \frac{SS_{between}/df_{between}}{SS_{within}/df_{within}}\]

Donde: \(SS_{between}\) es la suma de cuadrados entre grupos, \(df_{between}\) es el número de grados de libertad entre grupos, \(SS_{within}\) es la suma de cuadrados dentro de los grupos, \(df_{within}\) es el número de grados de libertad dentro de los grupos. El valor de p se calcula utilizando la distribución F de Fisher.

Ejemplo 1

Un ejemplo de uso de ANOVA en turismo podría ser el análisis sobre los precios en los destinos turísticos. Se realiza una encuesta a un grupo de hoteles en cada tipo de destino y se les pregunta acerca de los precios medios. El objetivo es determinar si hay alguna diferencia significativa en los precios establecidos en cada uno de los tres destinos.

# Crear dataset de destinos turísticos
destinos <- data.frame(
  categoria = c(rep("rural", 15), rep("urbano", 15), rep("sol y playa", 15)),
  precio = c(
    rnorm(15, mean = 50, sd = 5),
    rnorm(15, mean = 75, sd = 10),
    rnorm(15, mean = 100, sd = 15)
  )
)

Antes de proceder con el ejercicio, podemos explorar los datos. El diagrama de cajas y bigotes muestra claramente las diferencias entre las medias de cada categoría y la magnitud de las diferencias. Podemos observar que la categoría rural tiene una media más alta que las otras dos categorías, mientras que la categoría sol y playa tiene la media más baja. Además, la categoría rural tiene una mayor dispersión en sus datos que las otras dos categorías.

# Gráfico de cajas y bigotes
library(ggplot2)
ggplot(destinos, aes(x = categoria, y = precio)) +
  geom_boxplot() +
  labs(x = "Categoría", y = "Precio") +
  ggtitle("Precios en destinos turísticos") +
  theme_minimal()

Para proceder con el análisis ANOVA en R, utilizamos la función aov.

# Análisis de ANOVA
modelo <- lm(precio ~ categoria, data = destinos)
anova_resultados <- anova(modelo)

anova_resultados
## Analysis of Variance Table
## 
## Response: precio
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## categoria  2  17128  8563.9  58.088 8.058e-13 ***
## Residuals 42   6192   147.4                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La salida mostrará el valor de F y el p-valor para determinar si hay alguna diferencia significativa. Como vemos, el p valor en este caso indica una alta significatividad. Además, se puede realizar un análisis post-hoc para determinar qué grupos son significativamente diferentes entre sí. Hay diferentes métodos para realizar este análisis, como Tukey HSD, Bonferroni correction, Scheffé o Least Significant Difference.

A continuación, se presenta un ejemplo utilizando el método de Tukey HSD en R, para comparar las diferencias entre los tres grupos de destinos turísticos (rural, urbano y sol y playa):

# Análisis post-hoc con método Tukey
posthoc <- TukeyHSD(aov(precio ~ categoria, data = destinos))
posthoc
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = precio ~ categoria, data = destinos)
## 
## $categoria
##                         diff       lwr       upr    p adj
## sol y playa-rural   47.78194  37.01046  58.55341 0.00e+00
## urbano-rural        24.55191  13.78043  35.32338 5.40e-06
## urbano-sol y playa -23.23003 -34.00151 -12.45856 1.44e-05

El análisis post hoc con el método Tukey nos permite comparar cada pareja de medias y determinar si existe una diferencia significativa entre ellas. En nuestro ejemplo, el análisis post hoc reveló que la media de la categoría rural es significativamente diferente de la media de la categoría urbana (p < 0.05), la media de la categoría rural es significativamente diferente de la media de la categoría sol y playa (p < 0.05), y la media de la categoría urbana es significativamente diferente de la media de la categoría sol y playa (p < 0.05). Las diferencias pueden verse gráficamente de la siguiente forma:

plot(TukeyHSD((aov(precio ~ categoria, data = destinos)), conf.level = 0.95 ), las = 2 )

Ejemplo 2

Supongamos que tenemos una base de datos con información sobre la llegada de turistas y el PIB per cápita de varios países de América y Europa. Queremos analizar si hay una relación entre el impacto turístico y la economía de los países. Para ello, podríamos utilizar un modelo ANOVA para comparar la media del PIB per cápita entre los países que reciben muchos turistas y los que reciben pocos.

set.seed(123)

# Crear vector de países
continente <- c(rep("América", 10), rep("Europa", 10))

# Generar valores aleatorios para la llegada de turistas
turistas <- rnorm(20, mean = 100000, sd = 20000)

# Generar valores aleatorios para el PIB per cápita
pib <- rnorm(20, mean = 20000, sd = 5000)

# Crear data frame con la información
datos_turismo <- data.frame(Continente = continente, Llegadas = turistas, PIB = pib, relTURPIB = (turistas/pib))

#Modelo ANOVA
modelo_anova <- aov(relTURPIB ~ Continente, data = datos_turismo)
summary(modelo_anova)
##             Df Sum Sq Mean Sq F value Pr(>F)
## Continente   1   8.25   8.247   2.325  0.145
## Residuals   18  63.84   3.547

La tabla ANOVA muestra los resultados del análisis de varianza para el modelo lineal que utilizamos. La variable respuesta es el PIB y las variables predictoras son la llegada de turistas y el continente.

La primera columna indica los grados de libertad (Df) para cada fuente de variación. La segunda columna muestra la suma de cuadrados (Sum Sq) para cada fuente de variación. La tercera columna indica la media de cuadrados (Mean Sq), que se obtiene dividiendo la suma de cuadrados entre los grados de libertad. La cuarta columna muestra el valor F, que se utiliza para evaluar si la media de los grupos es significativamente diferente. La quinta columna muestra el valor p, que indica la significación estadística de cada fuente de variación.

En este caso, como vemos, la variable Continente no explicaría cambios en la relación entre el Turismo y el PIB entendida como una división entre el número de turistas entre la riqueza de un país. Pero hay otra forma de hacerlo que nos proporciona todavía más información:

# Realizar el ANOVA
modelo_turismo <- lm(PIB ~ Llegadas * Continente, data = datos_turismo)
anova(modelo_turismo)
## Analysis of Variance Table
## 
## Response: PIB
##                     Df    Sum Sq  Mean Sq F value  Pr(>F)  
## Llegadas             1   2752581  2752581  0.1995 0.66112  
## Continente           1  72007874 72007874  5.2187 0.03634 *
## Llegadas:Continente  1  31648872 31648872  2.2937 0.14940  
## Residuals           16 220769819 13798114                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

En este caso, podemos ver que la llegada de turistas no es significativa para explicar la variación en la economía de un país, pero sí lo es el Continente para explicar el PIB, con un p-valor inferior a 0.05. La interacción entre la llegada de turistas y el continente tampoco es significativa (p=0.15), lo que sugiere que la relación entre la llegada de turistas y el PIB no debería variar dependiendo del continente.

En resumen, el modelo ANOVA no muestra fehacientemente que la relación entre llegadas y el continente tenga una capacidad suficiente como para que el PIB se diferencie, aunque la pertenencia en un continente u otro sí tiene capacidad explicativa.