# Librerias
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
# Datos suministrados
porosidad <- data.frame(
Tipo = rep(c("Arenisca", "Lutita", "Caliza"), each = 5),
Porosidad = c(14, 15, 13, 16, 14, 6, 7, 8, 5, 6, 12, 11, 12, 10, 13)
)
# Boxplot para visualizar los datos
ggplot(porosidad, aes(x = Tipo, y = Porosidad)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Porosidad de diferentes los tipos de rocas",
x = "Tipo de roca",
y = "Porosidad (%)") +
theme_minimal()

# Prueba de ANOVA para comparar las medias de los grupos
anova_porosidad <- aov(Porosidad ~ Tipo, data = porosidad)
anova_summary <- summary(anova_porosidad)
# Post hoc test (prueba de Tukey)
posthoc <- TukeyHSD(anova_porosidad)
posthoc
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Porosidad ~ Tipo, data = porosidad)
##
## $Tipo
## diff lwr upr p adj
## Caliza-Arenisca -2.8 -4.723824 -0.8761762 0.0057015
## Lutita-Arenisca -8.0 -9.923824 -6.0761762 0.0000003
## Lutita-Caliza -5.2 -7.123824 -3.2761762 0.0000296
# Calcular promedio de porosidad por tipo de roca
promedio_porosidad <- porosidad %>%
group_by(Tipo) %>%
summarise(Promedio = mean(Porosidad))
# Graficar promedio de porosidad por tipo de roca
ggplot(promedio_porosidad, aes(x = Tipo, y = Promedio)) +
geom_col(fill = "lightgreen") +
labs(title = "Promedio de porosidad por tipo de roca",
x = "Tipo de roca",
y = "Porosidad promedio (%)") +
theme_minimal()

# Generar tabla con los resultados
tabla_resultados <- bind_rows(
"Prueba ANOVA" = as.data.frame(anova_summary$`Df`), # Resumen de ANOVA
"Prueba Tukey" = as.data.frame(posthoc$`Tipo`[,4]),
"Promedio de porosidad" = promedio_porosidad
) %>%
kbl() %>%
kable_paper(full_width = FALSE)
# Comparar p-values para determinar si hay diferencias significativas
p_value <- anova_summary[[1]]$"Pr(>F)"[1]
if (p_value < 0.05) {
print("Hay diferencias significativas en la porosidad entre los tipos de rocas.")
} else {
print("No hay diferencias significativas en la porosidad entre los tipos de rocas.")
}
## [1] "Hay diferencias significativas en la porosidad entre los tipos de rocas."
# Calcular promedio de porosidad por tipo de roca
promedio_porosidad <- porosidad %>%
group_by(Tipo) %>%
summarise(Promedio = mean(Porosidad))
# Identificar el tipo de roca con mayor porosidad promedio
tipo_mayor_porosidad <- promedio_porosidad %>%
filter(Promedio == max(Promedio)) %>%
pull(Tipo)
# Imprimir resultado
cat("El tipo de roca con mayor porosidad promedio es:", tipo_mayor_porosidad)
## El tipo de roca con mayor porosidad promedio es: Arenisca