install.packages("car")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(car)
## Loading required package: carData
# Instalar la librería ggplot2 si aún no la tienes
install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
# Cargar la librería ggplot2 para visualización
library(ggplot2)
# Datos de los tres grupos
empleados <- c(6.4, 6.6, 6.8, 6.9, 9.5, 6.1, 7.5, 8.2, 4.1, 5.5)
agricultores <- c(6.5, 6.8, 7.0, 7.1, 9.7, 6.2, 7.7, 8.4, 4.2, 5.6)
no_expuestos <- c(7.3, 7.5, 7.8, 7.9, 10.8, 6.9, 8.5, 9.4, 4.6, 6.3)
# Crear una tabla (data frame)
datos <- data.frame(
Grupo = c(rep("Empleados", length(empleados)),
rep("Agricultores", length(agricultores)),
rep("No Expuestos", length(no_expuestos))),
Acetilcolinesterasa = c(empleados, agricultores, no_expuestos)
)
# Mostrar el data frame
print(datos)
## Grupo Acetilcolinesterasa
## 1 Empleados 6.4
## 2 Empleados 6.6
## 3 Empleados 6.8
## 4 Empleados 6.9
## 5 Empleados 9.5
## 6 Empleados 6.1
## 7 Empleados 7.5
## 8 Empleados 8.2
## 9 Empleados 4.1
## 10 Empleados 5.5
## 11 Agricultores 6.5
## 12 Agricultores 6.8
## 13 Agricultores 7.0
## 14 Agricultores 7.1
## 15 Agricultores 9.7
## 16 Agricultores 6.2
## 17 Agricultores 7.7
## 18 Agricultores 8.4
## 19 Agricultores 4.2
## 20 Agricultores 5.6
## 21 No Expuestos 7.3
## 22 No Expuestos 7.5
## 23 No Expuestos 7.8
## 24 No Expuestos 7.9
## 25 No Expuestos 10.8
## 26 No Expuestos 6.9
## 27 No Expuestos 8.5
## 28 No Expuestos 9.4
## 29 No Expuestos 4.6
## 30 No Expuestos 6.3
# Convertir la columna 'Grupo' a factor
datos$Grupo <- as.factor(datos$Grupo)
# Mostrar el data frame con la columna 'Grupo' ya como factor
print(datos)
## Grupo Acetilcolinesterasa
## 1 Empleados 6.4
## 2 Empleados 6.6
## 3 Empleados 6.8
## 4 Empleados 6.9
## 5 Empleados 9.5
## 6 Empleados 6.1
## 7 Empleados 7.5
## 8 Empleados 8.2
## 9 Empleados 4.1
## 10 Empleados 5.5
## 11 Agricultores 6.5
## 12 Agricultores 6.8
## 13 Agricultores 7.0
## 14 Agricultores 7.1
## 15 Agricultores 9.7
## 16 Agricultores 6.2
## 17 Agricultores 7.7
## 18 Agricultores 8.4
## 19 Agricultores 4.2
## 20 Agricultores 5.6
## 21 No Expuestos 7.3
## 22 No Expuestos 7.5
## 23 No Expuestos 7.8
## 24 No Expuestos 7.9
## 25 No Expuestos 10.8
## 26 No Expuestos 6.9
## 27 No Expuestos 8.5
## 28 No Expuestos 9.4
## 29 No Expuestos 4.6
## 30 No Expuestos 6.3
# Ver resumen de los datos
summary(datos)
## Grupo Acetilcolinesterasa
## Agricultores:10 Min. : 4.100
## Empleados :10 1st Qu.: 6.325
## No Expuestos:10 Median : 6.950
## Mean : 7.127
## 3rd Qu.: 7.875
## Max. :10.800
# Ver resumen de los datos
summary(empleados)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.100 6.175 6.700 6.760 7.350 9.500
summary(agricultores)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.200 6.275 6.900 6.920 7.550 9.700
summary(no_expuestos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.60 7.00 7.65 7.70 8.35 10.80
#Hipótesis \(H_0:\) No existe diferencia significativa en los niveles promedio de acetilcolinesterasa entre los tres grupos.
\(H_1:\)Existe al menos una diferencia significativa en los niveles promedio de acetilcolinesterasa entre los tres grupos.
#** ANOVA**
#Pruebas de homocedasticidad
resultado_levene <- leveneTest(Acetilcolinesterasa ~ Grupo, data = datos)
# Mostrar el resultado de la prueba de Levene
print(resultado_levene)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.0626 0.9395
## 27
# Prueba de homocedasticidad (Levene)
resultado_levene <- leveneTest(Acetilcolinesterasa ~ Grupo, data = datos)
# Prueba de normalidad de residuos (Shapiro-Wilk)
modelo_anova <- aov(Acetilcolinesterasa ~ Grupo, data = datos)
residuos <- residuals(modelo_anova)
resultado_shapiro <- shapiro.test(residuos)
# Función para imprimir los resultados de los supuestos
comprobar_supuestos <- function() {
# Homocedasticidad (Levene)
if (resultado_levene$`Pr(>F)`[1] > 0.05) {
print("Supuesto de homocedasticidad: Se cumple (las varianzas son iguales)")
} else {
print("Supuesto de homocedasticidad: No se cumple (las varianzas son diferentes)")
}
# Normalidad (Shapiro-Wilk)
if (resultado_shapiro$p.value > 0.05) {
print("Supuesto de normalidad: Se cumple (los residuos son normales)")
} else {
print("Supuesto de normalidad: No se cumple (los residuos no son normales)")
}
}
# Imprimir los resultados de los supuestos
comprobar_supuestos()
## [1] "Supuesto de homocedasticidad: Se cumple (las varianzas son iguales)"
## [1] "Supuesto de normalidad: Se cumple (los residuos son normales)"
# Generar el boxplot
ggplot(datos, aes(x = Grupo, y = Acetilcolinesterasa, fill = Grupo)) +
geom_boxplot() +
labs(title = "Boxplot de los niveles de Acetilcolinesterasa por Grupo",
x = "Grupo",
y = "Niveles de Acetilcolinesterasa") +
theme_minimal() +
theme(legend.position = "none")
# Calcular las medias de cada grupo
media_empleados <- mean(empleados)
media_agricultores <- mean(agricultores)
media_no_expuestos <- mean(no_expuestos)
# Calcular la media general
n_total <- length(empleados) + length(agricultores) + length(no_expuestos)
media_general <- (sum(empleados) + sum(agricultores) + sum(no_expuestos)) / n_total
# Calcular SSB (Suma de cuadrados entre grupos)
n_empleados <- length(empleados)
n_agricultores <- length(agricultores)
n_no_expuestos <- length(no_expuestos)
SSB <- (n_empleados * (media_empleados - media_general)^2) +
(n_agricultores * (media_agricultores - media_general)^2) +
(n_no_expuestos * (media_no_expuestos - media_general)^2)
# Calcular SSW (Suma de cuadrados dentro de los grupos)
SSW <- sum((empleados - media_empleados)^2) +
sum((agricultores - media_agricultores)^2) +
sum((no_expuestos - media_no_expuestos)^2)
# Grados de libertad
k <- 3 # número de grupos
dfB <- k - 1
dfW <- n_total - k
# Calcular medias cuadráticas
MSB <- SSB / dfB
MSW <- SSW / dfW
# Calcular el valor F
F_value <- MSB / MSW
# Comparar con el valor crítico
alpha <- 0.05
valor_critico <- qf(1 - alpha, dfB, dfW)
# Mostrar resultados
cat("Suma de cuadrados entre grupos (SSB):", SSB, "\n")
## Suma de cuadrados entre grupos (SSB): 5.058667
cat("Suma de cuadrados dentro de los grupos (SSW):", SSW, "\n")
## Suma de cuadrados dentro de los grupos (SSW): 65.42
cat("Grados de libertad entre grupos (dfB):", dfB, "\n")
## Grados de libertad entre grupos (dfB): 2
cat("Grados de libertad dentro de los grupos (dfW):", dfW, "\n")
## Grados de libertad dentro de los grupos (dfW): 27
cat("Media cuadrática entre grupos (MSB):", MSB, "\n")
## Media cuadrática entre grupos (MSB): 2.529333
cat("Media cuadrática dentro de los grupos (MSW):", MSW, "\n")
## Media cuadrática dentro de los grupos (MSW): 2.422963
cat("Valor F calculado:", F_value, "\n")
## Valor F calculado: 1.043901
cat("Valor crítico de F:", valor_critico, "\n")
## Valor crítico de F: 3.354131
# Conclusión
if (F_value > valor_critico) {
cat("Conclusión: Rechazamos la hipótesis nula (H0). Hay diferencias significativas entre las medias de los grupos.\n")
} else {
cat("Conclusión: No rechazamos la hipótesis nula (H0). No hay diferencias significativas entre las medias de los grupos.\n")
}
## Conclusión: No rechazamos la hipótesis nula (H0). No hay diferencias significativas entre las medias de los grupos.