Este análisis utiliza la herramientas estadístca ANOVA para determinar si existe un efecto significativo de la temperatura en el rendimiento de un proceso químico.
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.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ 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(ggplot2)
library(readxl)
library(readr)
library(dplyr)
library(car)
## Cargando paquete requerido: carData
##
## Adjuntando el paquete: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
Hago una simulación de la tabla para el análisis de la varianza.
rendimientos <- data.frame(
Temperatura = factor(rep(c("50°C", "60°C", "70°C"), each = 5)),
Rendimiento = c(34, 24, 36, 39, 32, 30, 31, 34, 23, 27, 28, 28, 23, 30, 31)
)
resumen <- rendimientos %>%
group_by(Temperatura) %>%
summarise(
Tamaño = n(),
Suma = sum(Rendimiento),
Media = mean(Rendimiento)
)
total_N <- nrow(rendimientos)
total_T <- sum(rendimientos$Rendimiento)
global_mean <- mean(rendimientos$Rendimiento)
resumen <- resumen %>%
bind_rows(
data.frame(
Temperatura = "Total",
Tamaño = total_N,
Suma = total_T,
Media = global_mean
)
)
resumen
## # A tibble: 4 × 4
## Temperatura Tamaño Suma Media
## <chr> <int> <dbl> <dbl>
## 1 50°C 5 165 33
## 2 60°C 5 145 29
## 3 70°C 5 140 28
## 4 Total 15 450 30
Hipótesis Nula (Ho):
Las medias de rendimiento son iguales para todas las temperaturas.
Ho = u(50°c)=u(60°c)=u(70°c)
Hipótesis Alternativa (H1): Al menos un par de las medias son diferentes.
1. Normalidad Se utiliza el test de Shapiro-Wilk para verificar la normalidad de los datos en cada grupo.
normality_tests <- rendimientos %>%
group_by(Temperatura) %>%
summarise(p_value = shapiro.test(Rendimiento)$p.value)
normality_tests
## # A tibble: 3 × 2
## Temperatura p_value
## <fct> <dbl>
## 1 50°C 0.625
## 2 60°C 0.927
## 3 70°C 0.334
Como en los tres tratamientos el p-valor es mayor a 0.05, no se rechaza la hipótesis de normalidad. Entonces, se puede deducir que los datos están normalmente distribuidos.
2. Homocedasticidad
Se utiliza la prueba de Levene para verificar la igualdad de varianzas
entre los grupos.
leveneTest(Rendimiento ~ Temperatura, data = rendimientos)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.4485 0.6488
## 12
Como el p-valor (0.6488) es mayor que el nivel de significancia (𝛼=0.05), no se rechaza la hipótesis nula de igualdad de varianzas. Esto significa que se cumple el supuesto de homocedasticidad, lo cual valida el uso del ANOVA.
anova_result <- aov(Rendimiento ~ Temperatura, data = rendimientos)
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## Temperatura 2 70 35.00 1.78 0.21
## Residuals 12 236 19.67
ggplot(rendimientos, aes(x = Temperatura, y = Rendimiento, fill = Temperatura)) +
geom_boxplot() +
labs(title = "Rendimientos por Temperatura", x = "Temperatura", y = "Rendimiento") +
theme_minimal()
Comentarios: La mediana es más alta para la temperatura de 50°C y disminuye para las temperaturas de 60°C y 70°C. Esto sugiere que los rendimientos tienden a ser mayores a 50°C. La temperatura de 60°C parece tener un rango un poco más amplio en comparación con los otros dos.
# Parámetros de la distribución F
df1 <- 2
df2 <- 12
alpha <- 0.05
F_critical <- qf(1 - alpha, df1, df2)
F_observed <- summary(anova_result)[[1]][["F value"]][1]
curve(df(x, df1, df2), from = 0, to = 5, col = "blue", lwd = 2,
ylab = "Densidad", xlab = "F", main = "Distribución F con Región de Rechazo")
abline(v = F_critical, col = "red", lwd = 2, lty = 2) # Valor crítico
abline(v = F_observed, col = "green", lwd = 2, lty = 2) # Estadístico F observado
legend("topright", legend = c("Región de rechazo", "F observado"), col = c("red", "green"), lty = 2, bty = "n")
Con base en el análisis realizado, se concluye que el estadístico F observado (F=1.78) no se encuentra dentro de la región de rechazo, definida por F>3.89 para un nivel de significancia de α=0.05. Esto implica que no hay suficiente evidencia estadística para rechazar la hipótesis nula (H_o), la cual establece que las medias de los rendimientos no difieren significativamente entre las tres temperaturas (50°C, 60°C y 70°C). Adicionalmente, los supuestos de normalidad (evaluados con Shapiro-Wilk) y homocedasticidad (verificados con Levene) fueron cumplidos, validando la aplicabilidad del ANOVA en este contexto. Por lo tanto, se concluye que la temperatura no tiene un efecto significativo sobre el rendimiento promedio del proceso químico evaluado.