1 Lo esencial

En esencia la anova resuelve los siguientes hipótesis.

Efecto Hipótesis Nula (H₀) Hipótesis Alternativa (H₁) Ejemplo práctico Decisión con α = 0.05
Factor A (efecto A) Las medias marginales de todos los niveles de A son iguales: Al menos una media marginal de A difiere de las demás: Pregunta: “¿Tiene el factor 1 efecto sobre la variable dependiente?”
- H₀: “No, el factor 1 no afecta la variable; las medias en todos sus niveles son iguales.”
- H₁: “Sí, el factor 1 impacta la variable; al menos una media de sus niveles difiere.”
Si \(p_A \le 0.05\): rechazar H₀⁽ᴬ⁾ (hay efecto de A).
Si \(p_A > 0.05\): no rechazar H₀⁽ᴬ⁾ (no hay evidencia de efecto).
\(H₀^A: μ_{A1·} = μ_{A2·} = ... = μ_{Ak·}\) \(H₁^A:\) no se cumple que todas sean iguales (∃ i,j: \(μ_{Ai·} ≠ μ_{Aj·}\)). (“·” indica promedio sobre niveles de B).
Factor B (efecto B) Las medias marginales de todos los niveles de B son iguales: Al menos una media marginal de B difiere de las demás: Pregunta: “¿Tiene el factor 2 efecto sobre la variable dependiente?”
- H₀: “No, el factor 2 no afecta la variable; las medias en todos sus niveles son iguales.”
- H₁: “Sí, el factor 2 impacta la variable; al menos una media de sus niveles difiere.”
Si \(p_B \le 0.05\): rechazar H₀⁽ᴮ⁾ (hay efecto de B).
Si \(p_B > 0.05\): no rechazar H₀⁽ᴮ⁾ (no hay evidencia de efecto).
\(H₀^B: μ_{·B1} = μ_{·B2} = ... = μ_{·Bm}\) \(H₁^B:\) no se cumple que todas sean iguales (∃ i,j: \(μ_{·Bi} ≠ μ_{·Bj}\)). (“·” indica promedio sobre niveles de A).
Interacción A × B No hay interacción entre A y B: los efectos de A son consistentes para todos niveles de B (y viceversa): Existe interacción: el efecto de A depende del nivel de B (o viceversa). Pregunta: “¿El efecto del factor 1 varía según el nivel del factor 2?”
- H₀: “No, el efecto del factor 1 es igual en todos los niveles de factor 2 (y viceversa).”
- H₁: “Sí, el efecto del factor 1 cambia según el nivel de factor 2.”
Si \(p_{AB} \le 0.05\): rechazar H₀⁽ᴬᴮ⁾ (interacción significativa).
Si \(p_{AB} > 0.05\): no rechazar H₀⁽ᴬᴮ⁾ (no hay evidencia de interacción).
\(H₀^{AB}:\) Para todo i,j: \(μ_{ij} - μ_{i·} - μ_{·j} + μ_{··} = 0\) \(H₁^{AB}:\) No se cumple la condición de aditividad (∃ i,j: \(μ_{ij} - μ_{i·} - μ_{·j} + μ_{··} ≠ 0\)).

1.1 ¿Qué es un ANOVA de dos vías?

El análisis de varianza de dos vías (o de dos factores) comprueba si hay diferencias entre más de dos muestras independientes divididas en dos variables o factores.

1.1.1 ¿Qué es un factor?

Un factor es, por ejemplo:

  • El sexo de una persona (hombre, mujer).

  • El tipo de terapia utilizada (terapia A, B y C).

  • El campo de estudio (medicina, administración de empresas, psicología, matemáticas).

En el análisis de varianza, un factor es una variable categórica utilizada para evaluar si influye en una variable dependiente.

Ejemplos:

  • ¿El sexo influye en el salario?

  • ¿El tipo de terapia influye en la tensión arterial?

  • ¿El campo de estudio influye en la duración de los estudios?

En estos casos, si hay un solo factor, se utiliza un ANOVA de un solo factor.
Si hay dos factores, se debe usar un ANOVA de dos vías.

1.1.2 ¿Qué es un tratamiento?

  • Un tratamiento es la condición experimental concreta aplicada a una unidad experimental. A menudo se refiere a un nivel particular de un factor o a la combinación de niveles de varios factores.

  • En diseños de un factor, cada nivel del factor se llama a veces “tratamiento”. Por ejemplo, si el factor “dosis” tiene niveles 0 mg, 50 mg, 100 mg, solemos decir “tratamientos: 0 mg, 50 mg, 100 mg”.

  • En diseños multifactoriales, el término “tratamiento” puede usarse para referirse a cada combinación de niveles de los factores. Por ejemplo, con factor A = “fertilizante” (A1, A2) y factor B = “riego” (B1, B2), cada combinación (A1-B1, A1-B2, A2-B1, A2-B2) puede considerarse un “tratamiento” o “condición experimental” particular.

1.1.3 ¿Qué es un bloque (factor de bloqueo)?

  • Un bloque es una agrupación de unidades experimentales que comparten cierta característica o condición que puede influir en la variable respuesta, pero que no es el objetivo principal del estudio.

    El propósito de bloquear es reducir la variabilidad no explicada: al agrupar unidades similares y asignar tratamientos dentro de cada bloque, se controla la influencia de la característica bloqueante.

    Ejemplos de bloque:

  • En agricultura, parcelas con distinto tipo de suelo o ubicación. Cada bloque agrupa parcelas similares de suelo.

  • En medicina, pacientes agrupados por edad o por hospital (cada hospital sería un bloque) cuando se prueba un fármaco.

  • En estudios de comportamiento, sujetos agrupados por género o por un factor demográfico relevante como nivel socioeconómico.

  • El bloque no es un tratamiento al cual queremos comparar efectos de niveles; más bien es una variable categórica que consideramos para eliminar su variabilidad del error residual, mejorando la precisión de la comparación de tratamientos.

1.2 ¿Por qué usar ANOVA de dos vías?

Cuando se quiere evaluar dos factores simultáneamente. Ejemplos:

  • Sexo y nivel educativo sobre el salario.

  • Terapia y sexo sobre la tensión arterial.

  • Campo de estudio y universidad sobre la duración de los estudios.

1.2.1 El ANOVA de dos vías permite responder tres preguntas:

  1. ¿El factor 1 tiene efecto sobre la variable dependiente?

  2. ¿El factor 2 tiene efecto sobre la variable dependiente?

  3. ¿Existe una interacción entre ambos factores?

1.3 Interpretación de resultados

1.3.1 ¿Cómo interpretar los valores p?

  • Si p<0.05, se rechaza H0 y se concluye que el factor tiene un efecto significativo.

  • Si p>0.05, se mantiene H0, indicando que el factor no tiene un efecto significativo.

Ejemplo de interpretación de resultados:

  • Factor A (p=0.323): No tiene efecto significativo.

  • Factor B (p=0.686): No tiene efecto significativo.

  • Interacción A*B (p=0.55): No hay interacción significativa.

1.4 Resumen

Supongamos que tenemos tres grupos para comparar, como se ilustra en la imagen a continuación. La línea discontinua indica la media del grupo. La figura muestra la variación entre las medias de los grupos (panel A) y la variación dentro de cada grupo (panel B), también conocida como varianza residual .

La idea detrás de la prueba ANOVA es muy simple: si la variación promedio entre grupos es lo suficientemente grande en comparación con la variación promedio dentro de los grupos, entonces se podría concluir que al menos la media de un grupo no es igual a las demás.

Por lo tanto, es posible evaluar si las diferencias entre las medias de los grupos son significativas comparando las dos estimaciones de varianza. Por ello, el método se denomina análisis de varianza, aunque el objetivo principal es comparar las medias de los grupos.

1.5 Suposiciones

La prueba ANOVA hace las siguientes suposiciones sobre los datos:

  • Independencia de las observaciones . Cada sujeto debe pertenecer a un solo grupo. No existe relación entre las observaciones de cada grupo. No se permiten mediciones repetidas para los mismos participantes.

  • No hay valores atípicos significativos en ninguna celda del diseño

  • Normalidad : los datos de cada celda de diseño deben tener una distribución aproximadamente normal.

  • Homogeneidad de varianzas . La varianza de la variable de resultado debe ser igual en todas las celdas del diseño.

Antes de calcular la prueba ANOVA, es necesario realizar algunas pruebas preliminares para verificar si se cumplen los supuestos.

1.6 post hoc

es un análisis de comparaciones múltiples que se aplica tras obtener un resultado significativo en un ANOVA (o en cualquier prueba global). Su fin es:

  • Identificar exactamente qué pares de grupos (niveles de un factor) difieren entre sí.

  • Controlar el riesgo de error Tipo I que aumenta al hacer muchas pruebas individuales.

Su característica clave es que ajustan los umbrales de significancia o los p-valores (usando métodos como Tukey, Bonferroni, Holm, Scheffé, Dunnett, etc.) para mantener la tasa de falsas alarmas dentro de un nivel predefinido (por ejemplo, α = 0.05) en el conjunto de todas las comparaciones. De este modo, podemos concluir con confianza dónde están las diferencias sin inflar el riesgo de detectar efectos que en realidad no existen.

Advertencia

Téngase en cuenta que, si no se cumplen los supuestos anteriores, existe una alternativa no paramétrica ( prueba de Kruskal-Wallis ) al ANOVA de un factor.

Lamentablemente, no existen alternativas no paramétricas al ANOVA de dos y tres vías. Por lo tanto, si no se cumplen los supuestos, se podría considerar ejecutar el ANOVA de dos y tres vías con los datos transformados y sin transformar para comprobar si existen diferencias significativas.

Si ambas pruebas le llevan a las mismas conclusiones, es posible que no opte por transformar la variable de resultado y continúe con el ANOVA de dos o tres vías en los datos originales.

También es posible realizar una prueba ANOVA robusta utilizando el paquete WRS2 R.

Sea cual sea tu elección, debes informar lo que hiciste en tus resultados.

2 Ejercicios

2.1 Satisfacción laboral

Vamos a usar el dataset jobsatisfaction del paquete datarium

Utilizaremos el jobsatisfactionconjunto de datos [paquete datarium], que contiene el puntaje de satisfacción laboral organizado por género y niveles de educación.

En este estudio, se busca evaluar si existe una interacción bidireccional significativa entre gendery education_levelpara explicar la puntuación de satisfacción laboral. Un efecto de interacción se produce cuando el efecto de una variable independiente sobre una variable de resultado depende del nivel de las demás variables independientes. Si no existe un efecto de interacción, se podrían reportar los efectos principales.

Variables independientes gendery education_levelpara y la variable dependiente o de estudio el score (puntuación de satisfacción laboral.

En este ejemplo, el efecto de “nivel_educativo” es nuestra variable focal , es decir, nuestra principal preocupación. Se cree que el efecto de “nivel_educativo” dependerá de otro factor, “género”, denominado variable moderadora (variable bloqueo) .

2.2 Preguntas

Quiero detenerme un poco en lo que es realmente iimportante del ejercio y es como investigador mas halla de saber codificar que es importante, debemos ser creativos y planear una serie de preguntas, que como investigadores debemos planteranos en un analisis estadisticos, yo continuation tengo las siguientes.

  1. ¿Influye el nivel educativo en la satisfacción?

  2. ¿Influye el género en la satisfacción laboral?

  3. ¿El efecto del género depende del nivel educativo?

  4. ¿El efecto del nivel educativo depende del genero?

  5. ¿Cuánta varianza explica cada efecto o efecto simple?

  6. ¿Qué tanto difiere cada nivel respecto a cada variacion educativa?

  7. ¿Qué tanto difiere cada Genero?

  8. ¿Qué porcentaje de la varianza total explican mis factores en conjunto?

  9. ¿Las diferencias que hallo son prácticamente relevantes, no sólo “significativas”?

  10. ¿Qué porcentaje de la varianza total explican mis factores en conjunto?

Es claro que con estadística descriptiva podemos dar respuesta a otras preguntas y con regresiones lineales tambien pero nuestro objeto de estudio es Anova o estudio de la varianza.

2.2.1 Preparación de datos

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ purrr::%||%()   masks base::%||%()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr)
library(rstatix)
## 
## Adjuntando el paquete: 'rstatix'
## 
## The following object is masked from 'package:stats':
## 
##     filter
set.seed(123)

data("jobsatisfaction", package = "datarium")
jobsatisfaction %>% sample_n_by(gender, education_level, size = 1)
## # A tibble: 6 × 4
##   id    gender education_level score
##   <fct> <fct>  <fct>           <dbl>
## 1 3     male   school           5.07
## 2 12    male   college          6.45
## 3 28    male   university       8.7 
## 4 30    female school           5.94
## 5 44    female college          7.1 
## 6 53    female university       9.42
#tabla de contingencia
# Tabla de contingencia entre gender y education_level con sumatorias de filas y columnas
tabla_contingencia <- table(jobsatisfaction$gender, jobsatisfaction$education_level)
tabla_con_sum <- addmargins(tabla_contingencia)

# Mostrar la tabla con márgenes
print(tabla_con_sum)
##         
##          school college university Sum
##   male        9       9         10  28
##   female     10      10         10  30
##   Sum        19      19         20  58

Como podemos notar, tenemos de genero 2 niveles, hombre y mujer y de eduación tenemos 3 niveles school,college y school.

En la tabla de contingencia podemos notar que se tiene los datos de 28 hombre en los diferentes niveles de estudio y 30 mujeres en los diferentes niveles de estudio. visualmente esta muy equilibrado, pero vamos a verlo en nuestro análisis exploratorio.

2.2.2 Estadísticas resumidas

Calcular la media y la DE (desviación estándar) de los scoregrupos:

jobsatisfaction %>%
  group_by(gender, education_level) %>%
  get_summary_stats(score, type = "mean_sd")
## # A tibble: 6 × 6
##   gender education_level variable     n  mean    sd
##   <fct>  <fct>           <fct>    <dbl> <dbl> <dbl>
## 1 male   school          score        9  5.43 0.364
## 2 male   college         score        9  6.22 0.34 
## 3 male   university      score       10  9.29 0.445
## 4 female school          score       10  5.74 0.474
## 5 female college         score       10  6.46 0.475
## 6 female university      score       10  8.41 0.938

Podemos notar que la mayor dispersión la tienen las mujeres universitarias, puede deberse a temas económicos,en otros niveles de estudio y genero no se nota.

2.2.3 Visualización

Cree un diagrama de caja de la puntuación por niveles de género, coloreado según los niveles de educación:

bxp <- ggboxplot(
  jobsatisfaction, x = "gender", y = "score",
  color = "education_level", palette = "jco"
  )
bxp

2.2.4 Comprobar suposiciones

2.2.4.1 Valores atípicos - outliers

dentifique valores atípicos en cada diseño de celda

(Si encontramos es mejor omitirlo)

jobsatisfaction %>%
  group_by(gender, education_level) %>%
  identify_outliers(score)
## [1] gender          education_level id              score          
## [5] is.outlier      is.extreme     
## <0 rows> (o 0- extensión row.names)

2.2.4.2 Supuesto de normalidad

Verifique el supuesto de normalidad mediante el análisis de los residuos del modelo . Se utilizan el gráfico QQ y la prueba de normalidad de Shapiro-Wilk.

# Build the linear model
model  <- lm(score ~ gender*education_level,
             data = jobsatisfaction)
# Create a QQ plot of residuals
ggqqplot(residuals(model))

Los datos cruzan la linea recta, podemos decir que cumple el supuesto de normalidad.

Verificar el supuesto de normalidad por grupos . Calcular la prueba de Shapiro-Wilk para cada combinación de niveles de factor:

# Compute Shapiro-Wilk test of normality
shapiro_test(residuals(model))
## # A tibble: 1 × 3
##   variable         statistic p.value
##   <chr>                <dbl>   <dbl>
## 1 residuals(model)     0.968   0.127
En el gráfico QQ, como todos los puntos se encuentran aproximadamente a lo largo de la línea de referencia, podemos asumir normalidad. Esta conclusión está respaldada por la prueba de Shapiro-Wilk. El valor p no es significativo (p = 0,13), por lo que podemos asumir normalidad.

Cree gráficos QQ para cada celda del diseño:

ggqqplot(jobsatisfaction, "score", ggtheme = theme_bw()) +
  facet_grid(gender ~ education_level)

jobsatisfaction %>%
  group_by(gender, education_level) %>%
  shapiro_test(score)
## # A tibble: 6 × 5
##   gender education_level variable statistic     p
##   <fct>  <fct>           <chr>        <dbl> <dbl>
## 1 male   school          score        0.980 0.966
## 2 male   college         score        0.958 0.779
## 3 male   university      score        0.916 0.323
## 4 female school          score        0.963 0.819
## 5 female college         score        0.963 0.819
## 6 female university      score        0.950 0.674
Todos los puntos se encuentran aproximadamente a lo largo de la línea de referencia para cada celda. Por lo tanto, podemos asumir la normalidad de los datos.

2.2.4.3 Supuesto de homogeneidad de varianza

Homogeneidad de varianza (u homoscedasticidad) significa que los diferentes grupos o poblaciones que comparamos tienen aproximadamente la misma dispersión en la variable de interés; es decir, sus varianzas poblacionales son iguales o muy similares.

Esto se puede comprobar mediante la prueba de Levene:

jobsatisfaction %>% levene_test(score ~ gender*education_level)
## # A tibble: 1 × 4
##     df1   df2 statistic      p
##   <int> <int>     <dbl>  <dbl>
## 1     5    52      2.20 0.0686

La prueba de Levene no es significativa (p > 0,05). Por lo tanto, podemos asumir la homogeneidad de las varianzas en los diferentes grupos.

2.2.5 Cálculo

# uso anova_test que es anova Tipo II, para diseños desbalanceado, ya que el numero de muestars de mujeres y hombres fue diferente, usara un tipo I para diseños completamente balacendos usando simplemente aov normal
res.aov <- jobsatisfaction %>% anova_test(score ~ gender * education_level)
res.aov
## ANOVA Table (type II tests)
## 
##                   Effect DFn DFd       F        p p<.05   ges
## 1                 gender   1  52   0.745 3.92e-01       0.014
## 2        education_level   2  52 187.892 1.60e-24     * 0.878
## 3 gender:education_level   2  52   7.338 2.00e-03     * 0.220
# 2. Ajusta el modelo ANOVA
model_aov <- aov(score ~ gender * education_level,
             data = jobsatisfaction)
#summary.lm(model_aov)
# 3. R² global del modelo (desde summary.lm)
R2 <- summary.lm(model_aov)$r.squared
cat("R² global del modelo: ", round(R2, 3), "\n\n")
## R² global del modelo:  0.883
R2a <- summary.lm(model_aov)$adj.r.squared
cat("R² ajustado del modelo: ", round(R2a, 3), "\n\n")
## R² ajustado del modelo:  0.872

2.2.6 Interpretación de la ANOVA de dos vías

(variable respuesta score; factores gender y education_level)

Recordemos que creemos que el genero tiene efecto en el nivel educativo, por lo tanto, el genero va ser una variable moderadora, y ns preocuparemos en el efecto que tiene el genero en el nivel de satisfacción laboral.

2.2.6.1 1. Factor education_level

  • p < 0.001 → evidencia muy fuerte de que el nivel educativo influye en score.
  • GES = 0.878 → ≈ 88 % de la varianza explicable se asocia a education_level → efecto muy grande.
  • Hipótesis
    • H₀: μ_Primaria = μ_Secundaria = μ_Universitaria
    • H₁: al menos una media difiere → se acepta H₁.
  • Acción: realizar comparaciones post hoc (por ejemplo, emmeans) para identificar qué pares de niveles difieren.

2.2.6.2 2. Factor gender

  • p = 0.392 (> 0.05) → no hay evidencia de diferencias globales hombre vs. mujer en la satisfacción (promediando todos los niveles educativos).
  • GES = 0.014 → efecto muy pequeño.
  • Conclusión: se mantiene H₀ para gender. no es necesario hacer prueba post hoc para el factor gender

2.2.6.3 3. Interacción gender × education_level

  • p = 0.002 (< 0.05) → el efecto del género depende del nivel educativo (y viceversa).
  • GES = 0.220 → la interacción explica ≈ 22 % de la varianza adicional (efecto grande).
  • Implicación:
    • Aunque el efecto principal de gender no sea significativo globalmente, cambia dentro de ciertos niveles de educación.
    • Ejemplo: en primaria hombres y mujeres puntúan parecido, pero en universidad las mujeres tienen score más alto.
  • Acción: analizar efectos simples:
    • Comparar género dentro de cada nivel educativo:

      emmeans(anova_res, pairwise ~ gender | education_level)
    • O comparar niveles educativos dentro de cada género:

      emmeans(anova_res, pairwise ~ education_level | gender)

      Tabla comparativa

Efecto Hipótesis nula (H₀) F gl₁ gl₂ p-valor Decisión (α = 0.05) GES (η² generalizado) Magnitud
gender Las medias de score son iguales en hombres y mujeres 0.745 1 52 0.392 No rechazar H₀ 0.014 Pequeña
education_level Las medias de score son iguales entre los 3 niveles educativos 187.9 2 52 1.6 × 10⁻²⁴ Rechazar H₀ 0.878 Muy grande
gender × education_level El efecto de gender es el mismo en todos los niveles educativos 7.338 2 52 0.002 Rechazar H₀ 0.220 Grande

Podemos notar en nuestra anova que el efecto Ges (cuantifica el tamaño de efecto ajustado para que sea comparable entre diseños).

  • 0.878: el nivel educativo explica ~88 % de la varianza relevante (grandísimo efecto).

  • 0.220: la interacción explica ~22 % extra (efecto grande).

  • 0.014: el género explica ~1 % (efecto pequeño).

2.2.7 Pruebas post-hoct

2.2.7.1 Factor education_level

Vamos a realizar pruebas de este factura ya que en la anova global nos dio que existe diferencias significativas, vamos a estudiar cuales niveles de eduacion tienen diferencias significativas

library(emmeans)
## Welcome to emmeans.
## Caution: You lose important information if you filter this package's results.
## See '? untidy'
post <- emmeans(model_aov, pairwise ~ education_level, adjust = "tukey") 
## NOTE: Results may be misleading due to involvement in interactions
post
## $emmeans
##  education_level emmean    SE df lower.CL upper.CL
##  school            5.58 0.126 52     5.33     5.84
##  college           6.34 0.126 52     6.09     6.60
##  university        8.85 0.123 52     8.60     9.10
## 
## Results are averaged over the levels of: gender 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast             estimate    SE df t.ratio p.value
##  school - college       -0.759 0.179 52  -4.249  0.0003
##  school - university    -3.265 0.176 52 -18.517  <.0001
##  college - university   -2.506 0.176 52 -14.211  <.0001
## 
## Results are averaged over the levels of: gender 
## P value adjustment: tukey method for comparing a family of 3 estimates
df_emm <- as.data.frame(post$emmeans)

ggplot(df_emm, aes(x = education_level, y = emmean, color = education_level)) +
  geom_point(size = 4) +
  geom_errorbar(aes(ymin = lower.CL, ymax = upper.CL), width = 0.2, size = 1) +
  scale_color_brewer(palette = "Set2") +         # paleta con colores vibrantes
  labs(
    x = "Nivel educativo",
    y = "Media ajustada de satisfacción",
    title = "Medias marginales ajustadas con IC 95%",
    color = "Nivel educativo"
  ) +
  theme_minimal() +
  theme(legend.position = "right")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Tenemos un claro ejemplo de que el nivel de estudio si influye en la satisfacción laboral.

  • Que entre la escuela y la universidad se tiene una diferencia puntual de 3.2.

  • Entre la escuela y la preparatoria la diferencia es mucho mas corta.

  • Notamos definitivamente que entre ir o no a la universidad influye mucho en la satisfacción laboral.

  • Solo existe una corta diferencia de 0.79 entre la escuela y la preparatoria, podemos decir que en satisfacción laboral no existe una gran diferencia entre solo ir a la escuela o haberme quedado en la preparatoria.

2.2.7.2 Factor de interacion education_level:gender

Una interacción bidireccional significativa indica que el impacto de un factor (p. ej., nivel educativo) en la variable de resultado (p. ej., nivel de satisfacción laboral) depende del nivel del otro factor (p. ej., género) (y viceversa). Por lo tanto, se puede descomponer una interacción bidireccional significativa en:

  • Efecto principal simple : ejecutar el modelo unidireccional de la primera variable en cada nivel de la segunda variable.

  • Comparaciones simples por pares : si el efecto principal simple es significativo, ejecute múltiples comparaciones por pares para determinar qué grupos son diferentes.

Para una interacción bidireccional no significativa , es necesario determinar si existen efectos principales estadísticamente significativos a partir del resultado del ANOVA. Un efecto principal significativo puede evaluarse mediante comparaciones por pares entre grupos.

2.2.7.2.1 Procedimiento para interacción bidireccional significativa
2.2.7.2.1.1 Calcular efectos principales simples
2.2.7.2.1.2 En nuestro ejemplo, usted podría por tanto investigar el efecto de education_levelen cada nivel de gendero investigar el efecto de genderen cada nivel de la variable education_level.

Aquí, ejecutaremos un ANOVA unidireccional de education_levelen cada nivel de gender.

Expliquemos un poco mejor este paso para notar la diferencia entre efecto principal y efecto simple

De manera simple los efectos principal son los que se hacen a nivel de factor si el nivel educativo (universidad, colegio y preparatoria) influye en la satisfacción laboral, hablando en terminos de grupo si entre el grupo existe diferencias; existe diferencia para la satisfacción laboral ir a la universidad vs ir al colegio?. En cambio efectos simple los voy a ver solo en interacciones entre dos factores para nuestro ejemplo genero y nivel educativo

2.2.7.2.2 Efecto principal (main effect)

¿Qué es?La diferencia global en la media de la variable respuesta entre los niveles de un factor, promediando (“marginalizando”) sobre todos los niveles de los demás factores.

¿Para qué sirve?
Te dice si, en términos generales, ese factor por sí solo influye en la respuesta, ignorando cualquier interacción que pueda existir.

Ejemplo:

En un experimento 2×3 con factores A (niveles A1, A2) y B (niveles B1, B2, B3), el efecto principal de A compara el promedio de la respuesta en A1 vs. A2, calculado sobre los tres niveles de B.

2.2.7.2.3 Efecto simple (simple effect)
2.2.7.2.4 ¿Cuándo y cómo se usan?

Sin interacción significativa
‣ Se interpretan directamente los efectos principales.

Con interacción significativa

  • Primero detectas la interacción global con ANOVA.

  • Luego calculas efectos simples (“slice & dice”) para ver en qué niveles del segundo factor se produce el cambio.

En el código R a continuación, agruparemos los datos por género y analizaremos los efectos principales del nivel educativo en la puntuación de satisfacción laboral. El argumento errorse utiliza para especificar el modelo ANOVA a partir del cual se calcularán la suma de cuadrados del error agrupado y los grados de libertad.

2.2.7.2.5 Efectos principales de gender
library(emmeans)
# Group the data by gender and fit  anova
model <- lm(score ~ gender * education_level, data = jobsatisfaction)
jobsatisfaction %>%
  group_by(gender) %>%
  anova_test(score ~ education_level, error = model)
## # A tibble: 2 × 8
##   gender Effect            DFn   DFd     F        p `p<.05`   ges
## * <fct>  <chr>           <dbl> <dbl> <dbl>    <dbl> <chr>   <dbl>
## 1 male   education_level     2    52 132.  3.92e-21 *       0.836
## 2 female education_level     2    52  62.8 1.35e-14 *       0.707
#tambien pude hacerlo con
# 3.1. Efecto simple de GENDER dentro de cada nivel de EDUCATION_LEVEL
emm_gender_by_edu <- emmeans(
  model_aov,
  pairwise ~ gender | education_level,   # “slice” por education_level
  adjust = "bonferroni"                  # ajuste según tu preferencia (Tukey no aplica en binarias)
)

pwc <- jobsatisfaction %>% 
  group_by(gender) %>%
  emmeans_test(score ~ education_level, p.adjust.method = "bonferroni") 
pwc
## # A tibble: 6 × 10
##   gender term            .y.   group1  group2     df statistic        p    p.adj
## * <fct>  <chr>           <chr> <chr>   <chr>   <dbl>     <dbl>    <dbl>    <dbl>
## 1 male   education_level score school  college    52     -3.07 3.37e- 3 1.01e- 2
## 2 male   education_level score school  univer…    52    -15.3  6.87e-21 2.06e-20
## 3 male   education_level score college univer…    52    -12.1  8.42e-17 2.53e-16
## 4 female education_level score school  college    52     -2.94 4.95e- 3 1.49e- 2
## 5 female education_level score school  univer…    52    -10.8  6.07e-15 1.82e-14
## 6 female education_level score college univer…    52     -7.90 1.84e-10 5.52e-10
## # ℹ 1 more variable: p.adj.signif <chr>
print(emm_gender_by_edu)
## $emmeans
## education_level = school:
##  gender emmean    SE df lower.CL upper.CL
##  male     5.43 0.183 52     5.06     5.79
##  female   5.74 0.174 52     5.39     6.09
## 
## education_level = college:
##  gender emmean    SE df lower.CL upper.CL
##  male     6.22 0.183 52     5.86     6.59
##  female   6.46 0.174 52     6.11     6.81
## 
## education_level = university:
##  gender emmean    SE df lower.CL upper.CL
##  male     9.29 0.174 52     8.94     9.64
##  female   8.41 0.174 52     8.06     8.76
## 
## Confidence level used: 0.95 
## 
## $contrasts
## education_level = school:
##  contrast      estimate    SE df t.ratio p.value
##  male - female   -0.314 0.253 52  -1.244  0.2191
## 
## education_level = college:
##  contrast      estimate    SE df t.ratio p.value
##  male - female   -0.240 0.253 52  -0.948  0.3473
## 
## education_level = university:
##  contrast      estimate    SE df t.ratio p.value
##  male - female    0.886 0.246 52   3.602  0.0007
ggplot(jobsatisfaction,
       aes(x = education_level, y = score, fill = education_level)) +
  geom_boxplot(alpha = 0.65) +
  facet_wrap(~ gender) +
  labs(title = "Distribución de score por educación (facetas de género)",
       x = "Nivel educativo", y = "Score") +
  theme_bw() +
  guides(fill = "none")

# Plot con medias marginales estimadas
#emmip(model, gender ~ education_level, CIs = TRUE,
#      xlab = "Nivel educativo", ylab = "Mean score") +
 # ggtitle("Efectos simples según emmeans (IC 95 %)") +
 # theme_bw()

Como podemos observar existe diferencias significativas, tanto para hombres como para mujeres, con diferentes niveles educativos, en la satisfacción laboral.

En la segunda tabla podemos concluir que existe una diferencia significativa entre todas las combinaciones de niveles de genero y nivel educativo en relacion a la satisfacción laboral, pero que es poco significativo entre school-college tanto para hombres y mujeres, puedo concluir que aunque estadísticamente es diferente, no tiene mucha relevancia, es mas si cambiaramos el nivel de significancia del 0.05 en 0.01, nos daría que sus medias son iguales.

Podemos concluir que existe una mayor diferencia de satisfacción laboral entre hombres que fueran a la universidad vs hombres que solo fueron a la escuela que de mujeres en la misma combinación.

En la prueba de contraste, podemos notar que el genero no incide mucho, pues no existe diferencia entre las medias de satisfacción entre hombres y mujeres que solo fueron school y college; solo notamos una diferencia significativa entre los hombres y mujeres que fueron a la universidad, y esta es la causa real de la interacción; ahora, a que se debe la causa de esta diferencia de aproximadamente 0.886 puntos de satisfacción entre hombres y mujeres, muy seguramente a causas sociales, como salios mas bajos, maternidad o escalar altos cargos.

El efecto principal simple de “nivel_educativo” en el puntaje de satisfacción laboral fue estadísticamente significativo tanto para hombres como para mujeres (p < 0,0001).

En otras palabras, existe una diferencia estadísticamente significativa en la puntuación media de satisfacción laboral entre los hombres con estudios de secundaria, terciario o universitarios (F(2, 52) = 132, p < 0,0001). La misma conclusión se aplica a las mujeres (F(2, 52) = 62,8, p < 0,0001).

2.2.7.3 Simplificación de estduio

# Group the data by gender and fit  anova
model <- lm(score ~ gender * education_level, data = jobsatisfaction)
jobsatisfaction %>%
  group_by(gender) %>%
  anova_test(score ~ education_level, error = model)
## # A tibble: 2 × 8
##   gender Effect            DFn   DFd     F        p `p<.05`   ges
## * <fct>  <chr>           <dbl> <dbl> <dbl>    <dbl> <chr>   <dbl>
## 1 male   education_level     2    52 132.  3.92e-21 *       0.836
## 2 female education_level     2    52  62.8 1.35e-14 *       0.707

El efecto principal simple de “nivel_educativo” en el puntaje de satisfacción laboral fue estadísticamente significativo tanto para hombres como para mujeres (p < 0,0001).

En otras palabras, existe una diferencia estadísticamente significativa en la puntuación media de satisfacción laboral entre los hombres con estudios de secundaria, terciario o universitarios (F(2, 52) = 132, p < 0,0001). La misma conclusión se aplica a las mujeres (F(2, 52) = 62,8, p < 0,0001).

Compara la puntuación de los diferentes niveles educativos por genderniveles:

# pairwise comparisons
library(emmeans)
pwc <- jobsatisfaction %>% 
  group_by(gender) %>%
  emmeans_test(score ~ education_level, p.adjust.method = "bonferroni") 
pwc
## # A tibble: 6 × 10
##   gender term            .y.   group1  group2     df statistic        p    p.adj
## * <fct>  <chr>           <chr> <chr>   <chr>   <dbl>     <dbl>    <dbl>    <dbl>
## 1 male   education_level score school  college    52     -3.07 3.37e- 3 1.01e- 2
## 2 male   education_level score school  univer…    52    -15.3  6.87e-21 2.06e-20
## 3 male   education_level score college univer…    52    -12.1  8.42e-17 2.53e-16
## 4 female education_level score school  college    52     -2.94 4.95e- 3 1.49e- 2
## 5 female education_level score school  univer…    52    -10.8  6.07e-15 1.82e-14
## 6 female education_level score college univer…    52     -7.90 1.84e-10 5.52e-10
## # ℹ 1 more variable: p.adj.signif <chr>

Hubo una diferencia significativa en la puntuación de satisfacción laboral entre todos los grupos, tanto para hombres como para mujeres (p < 0,05).

2.2.7.3.1 Calcular comparaciones por pares
jobsatisfaction %>%
  pairwise_t_test(
    score ~ education_level, 
    p.adjust.method = "bonferroni"
    )
## # A tibble: 3 × 9
##   .y.   group1  group2        n1    n2        p p.signif    p.adj p.adj.signif
## * <chr> <chr>   <chr>      <int> <int>    <dbl> <chr>       <dbl> <chr>       
## 1 score school  college       19    19 3.27e- 4 ***      9.82e- 4 ***         
## 2 score school  university    19    20 3.43e-23 ****     1.03e-22 ****        
## 3 score college university    19    20 3.8 e-18 ****     1.14e-17 ****
  • Comparaciones por pares mediante la prueba de medias de Em. Es necesario especificar el modelo general, a partir del cual se calcularán los grados de libertad. Esto facilitará la detección de diferencias estadísticamente significativas, si las hubiera.
model <- lm(score ~ gender * education_level, data = jobsatisfaction)
jobsatisfaction %>% 
  emmeans_test(
    score ~ education_level, p.adjust.method = "bonferroni",
    model = model
    )
## NOTE: Results may be misleading due to involvement in interactions
## # A tibble: 3 × 9
##   term        .y.   group1 group2    df statistic        p    p.adj p.adj.signif
## * <chr>       <chr> <chr>  <chr>  <dbl>     <dbl>    <dbl>    <dbl> <chr>       
## 1 education_… score school colle…    52     -4.25 8.91e- 5 2.67e- 4 ***         
## 2 education_… score school unive…    52    -18.5  1.51e-24 4.53e-24 ****        
## 3 education_… score colle… unive…    52    -14.2  1.52e-19 4.56e-19 ****

2.2.8 Informe

Se realizó un ANOVA de dos vías para examinar los efectos del género y el nivel educativo en el puntaje de satisfacción laboral.

Se realizó un análisis de residuos para comprobar los supuestos del ANOVA de dos vías. Los valores atípicos se evaluaron mediante el método de diagrama de cajas, la normalidad se evaluó mediante la prueba de normalidad de Shapiro-Wilk y la homogeneidad de varianzas se evaluó mediante la prueba de Levene.

No hubo valores atípicos extremos, los residuos se distribuyeron normalmente (p > 0,05) y hubo homogeneidad de varianzas (p > 0,05).

Hubo una interacción estadísticamente significativa entre el género y el nivel de educación en la puntuación de satisfacción laboral, F(2, 52) = 7.33, p = 0.0016, eta2[g] = 0.22.

En consecuencia, se realizó un análisis de efectos principales simples para el nivel educativo, con significancia estadística y ajuste de Bonferroni. Se observó una diferencia estadísticamente significativa en las puntuaciones medias de satisfacción laboral tanto para hombres ( F(2, 52) = 132, p < 0.0001) como para mujeres ( F(2, 52) = 62.8, p < 0.0001) con estudios de nivel escolar, universitario o de nivel medio.

Se analizaron todas las comparaciones por pares entre los diferentes education_levelgrupos organizados por [ número gender]. Se observó una diferencia significativa en la puntuación de satisfacción laboral entre todos los grupos, tanto para hombres como para mujeres (p < 0,05)..

# Visualization: box plots with p-values
pwc <- pwc %>% add_xy_position(x = "gender")
bxp +
  stat_pvalue_manual(pwc) +
  labs(
    subtitle = get_test_label(res.aov, detailed = TRUE),
    caption = get_pwc_label(pwc)
    )

3 Bibliografía

  1. https://www.datanovia.com/en/lessons/anova-in-r/#two-way-independent-anova

  2. https://www.youtube.com/watch?v=GwCLFS1L86w

  3. https://www.youtube.com/watch?v=1L0nRB0FhiU

  4. https://datatab.es/tutorial/two-factorial-anova-without-repeated-measures

  5. https://bookshelf.vitalsource.com/reader/books/9781456269777/pageid/381

  6. https://excalidraw.com/#room=abce83d434a8aca21e4c,STA2i9d8zWRdt03Uljgbtw

  7. https://www.datanovia.com/en/lessons/anova-in-r/#two-way-independent-anova

  8. https://cienciadedatos.net/documentos/19_anova#:~:text=El%20an%C3%A1lisis%20de%20varianza%20de,cada%20uno%20con%20varios%20niveles

  9. https://rpubs.com/luis_fernandez_bernal/anova_2_vias 

  10. https://datatab.es/tutorial/two-factorial-anova-without-repeated-measures 

  11. https://support.minitab.com/es-mx/minitab/help-and-how-to/statistical-modeling/time-series/how-to/box-cox-transformation/methods-and-formulas/methods-and-formulas/ 

  12. https://chatgpt.com/share/676acc07-a59c-8013-95e3-f08075322e4f 

  13. https://support.minitab.com/es-mx/minitab/help-and-how-to/statistical-modeling/time-series/how-to/box-cox-transformation/before-you-start/overview/ 

  14. https://www.technologynetworks.com/neuroscience/articles/post-hoc-tests-in-statistical-analysis-371174 

  15. https://espanol.libretexts.org/Estadisticas/Estadisticas_Introductorias/Libro%3A_Estad%C3%ADsticas_Introductorias_(Carril)/16%3A_Transformaciones/16.04%3A_Transformaciones_de_Box-Cox 

  16. https://cienciadedatos.net/documentos/23_resampling_test_permutacion_simulacion_de_monte_carlo_bootstrapping 

  17. https://www.udemy.com/course/programa-completo-de-data-science-todo-para-los-datos/