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\)). |
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.
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.
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.
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.
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.
¿El factor 1 tiene efecto sobre la variable dependiente?
¿El factor 2 tiene efecto sobre la variable dependiente?
¿Existe una interacción entre ambos factores?
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.
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.
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.
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. |
Vamos a usar el dataset jobsatisfaction del paquete datarium
Utilizaremos el jobsatisfaction
conjunto 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 gender
y
education_level
para 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 gender
y
education_level
para 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) .
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.
¿Influye el nivel educativo en la satisfacción?
¿Influye el género en la satisfacción laboral?
¿El efecto del género depende del nivel educativo?
¿El efecto del nivel educativo depende del genero?
¿Cuánta varianza explica cada efecto o efecto simple?
¿Qué tanto difiere cada nivel respecto a cada variacion educativa?
¿Qué tanto difiere cada Genero?
¿Qué porcentaje de la varianza total explican mis factores en conjunto?
¿Las diferencias que hallo son prácticamente relevantes, no sólo “significativas”?
¿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.
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.
Calcular la media y la DE (desviación estándar) de los
score
grupos:
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.
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
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)
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.
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.
# 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
(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.
score
.education_level
→ efecto muy
grande.emmeans
) para identificar qué pares de niveles
difieren.gender
. no es necesario hacer prueba post hoc para el
factor gendergender
no sea
significativo globalmente, cambia dentro de ciertos niveles de
educación.score
más alto.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)
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).
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.
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.
education_level
en cada nivel de gender
o
investigar el efecto de gender
en cada nivel de la variable
education_level
.Aquí, ejecutaremos un ANOVA unidireccional de
education_level
en 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
¿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.
¿Qué es? La diferencia de medias de un factor dentro de un nivel específico del otro factor. Es decir, “subdividir” el diseño y miras el contraste A1 vs. A2 cuando B = Bj.
https://chatgpt.com/c/6850d174-6e9c-8001-b5db-4583c821d5d8?model=o4-mini
¿Para qué sirve?
Descomponer la interacción A×B: si hay interacción significativa, los efectos principales pueden ocultar comportamientos distintos en cada nivel de B.
Localizar exactamente en qué condiciones (niveles de B) el factor A tiene un efecto significativo (y viceversa).
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.
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).
# 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 gender
niveles:
# 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).
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 ****
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 ****
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_level
grupos 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)
)
https://www.datanovia.com/en/lessons/anova-in-r/#two-way-independent-anova
https://datatab.es/tutorial/two-factorial-anova-without-repeated-measures
https://bookshelf.vitalsource.com/reader/books/9781456269777/pageid/381
https://excalidraw.com/#room=abce83d434a8aca21e4c,STA2i9d8zWRdt03Uljgbtw
https://www.datanovia.com/en/lessons/anova-in-r/#two-way-independent-anova
https://datatab.es/tutorial/two-factorial-anova-without-repeated-measures
https://chatgpt.com/share/676acc07-a59c-8013-95e3-f08075322e4f
https://www.udemy.com/course/programa-completo-de-data-science-todo-para-los-datos/