FECHA: 25/11/2025
# Extraemos los datos
df <- read.csv("soil_pollution_diseases.csv", sep = ";", stringsAsFactors = FALSE)
# Convertir la columna a fecha (día/mes/año)
df$Date_Reported <- as.Date(df$Date_Reported, format = "%d/%m/%Y")
# Crear columnas Día, Mes y Año
df$Day <- as.integer(format(df$Date_Reported, "%d"))
df$Month <- as.integer(format(df$Date_Reported, "%m"))
df$Year <- as.integer(format(df$Date_Reported, "%Y"))
#Extraemos la variable Discreta
Mes <- df$Month
# TABLA DE DISTRIBUCIÓN DE FRECUENCIAS DE MESES
TDF.Mes <- table(Mes)
Tabla_Mes <- as.data.frame(TDF.Mes)
# Frecuencias relativas (porcentaje)
hi <- (Tabla_Mes$Freq / sum(Tabla_Mes$Freq)) * 100
ni <- Tabla_Mes$Freq
Tabla_Mes <- data.frame(Tabla_Mes, hi)
# Acumuladas
Niasc <- cumsum(ni)
Hiasc <- cumsum(hi)
Nidsc <- rev(cumsum(rev(ni)))
Hidsc <- rev(cumsum(rev(hi)))
Tabla_mes_final <- data.frame(
Mes = Tabla_Mes$Mes,
ni = Tabla_Mes$Freq,
`hi (%)` = round(Tabla_Mes$hi, 2),
Ni_asc = Niasc,
`Hi_asc(%)` = round(Hiasc, 2),
Ni_dsc = Nidsc,
`Hi_dsc(%)` = round(Hidsc, 2)
)
# Totales
Tabla_mes_final$Mes <- as.character(Tabla_mes_final$Mes)
totales <- c(
Mes = "Total",
ni = sum(ni),
`hi (%)` = 100,
Ni_asc = "-",
`Hi_asc(%)` = "-",
Ni_dsc = "-",
`Hi_dsc(%)` = "-"
)
TDF_meses_total <- rbind(Tabla_mes_final, totales)
# FORMATO gt
library(gt)
tabla_meses_gt <- TDF_meses_total %>%
gt() %>%
tab_header(
title = md("*Tabla N° 3*"),
subtitle = md("**Tabla de distribución de simples y acumuladas de los meses del estudio**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Mes == "Total"
)
)
tabla_meses_gt
| Tabla N° 3 |
| Tabla de distribución de simples y acumuladas de los meses del estudio |
| Mes |
ni |
hi.... |
Ni_asc |
Hi_asc... |
Ni_dsc |
Hi_dsc... |
| 1 |
235 |
7.83 |
235 |
7.83 |
3000 |
100 |
| 2 |
240 |
8 |
475 |
15.83 |
2765 |
92.17 |
| 3 |
253 |
8.43 |
728 |
24.27 |
2525 |
84.17 |
| 4 |
268 |
8.93 |
996 |
33.2 |
2272 |
75.73 |
| 5 |
247 |
8.23 |
1243 |
41.43 |
2004 |
66.8 |
| 6 |
243 |
8.1 |
1486 |
49.53 |
1757 |
58.57 |
| 7 |
281 |
9.37 |
1767 |
58.9 |
1514 |
50.47 |
| 8 |
248 |
8.27 |
2015 |
67.17 |
1233 |
41.1 |
| 9 |
224 |
7.47 |
2239 |
74.63 |
985 |
32.83 |
| 10 |
242 |
8.07 |
2481 |
82.7 |
761 |
25.37 |
| 11 |
262 |
8.73 |
2743 |
91.43 |
519 |
17.3 |
| 12 |
257 |
8.57 |
3000 |
100 |
257 |
8.57 |
| Total |
3000 |
100 |
- |
- |
- |
- |
| Autor: Grupo 3 |
# GRÁFICAS
# Gráfica — Frecuencia absoluta por Mes
barplot(ni,
main = "Gráfica N°8: Distribución de la contaminación
del suelo según el Mes",
xlab = "Mes (01–12)",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, max(ni)),
names.arg = Tabla_Mes$Mes,
las = 2,
cex.names = 0.8)

# Gráfica — Porcentaje por Mes
barplot(hi,
main = "Gráfica N°9: Distribución porcentual de la contaminación
del suelo según el Mes",
xlab = "Mes (01–12)",
ylab = "%",
col = "lightgreen",
names.arg = Tabla_Mes$Mes,
las = 2,
cex.names = 0.8)

# Gráfica — Frecuencia absoluta global
barplot(ni,
main = "Gráfica N°24: Distribución de la contaminación
del suelo según el Mes",
xlab = "Mes (01–12)",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, 3000),
names.arg = Tabla_Mes$Mes,
las = 2,
cex.names = 0.8)

# Gráfica— Porcentaje global por Mes
barplot(hi,
main = "Gráfica N°10: DDistribución porcentual de la contaminación
del suelo según el Mes",
xlab = "Mes (01–12)",
ylab = "%",
col = "lightgreen",
ylim = c(0, 100),
names.arg = Tabla_Mes$Mes,
las = 2,
cex.names = 0.8)

# Gráfica— Diagrama de caja y bigote
boxplot(Mes,
horizontal = TRUE,
col = "brown",
main = "Gráfica N°11:Distribución de Meses del Estudio de
Contaminación del Suelo",
xlab = "Mes del año")

# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(Tabla_Mes$Mes)
# Graficar puntos de Frecuencia Descendente
plot(x_pos, Nidsc,
main = "Gráfica N°12: Distribución ascendente y descendente
de los meses del estudio",
xlab = "Mes",
ylab = "Cantidad",
col = "orange",
type = "p",
lwd = 3,
xaxt = "n")
# Graficar puntos de Frecuencia Ascendente
lines(x_pos, Niasc,
col = "green",
type = "p",
lwd = 3)
# Personalizar etiquetas del eje X
axis(side = 1,
at = x_pos,
labels = Tabla_Mes$Mes,
las = 1,
cex.axis = 0.9)

# Diagrama de Ojiva Ascendente y Descendente Porcentual
x_pos <- 1:length(Tabla_Mes$Mes)
# Graficar puntos de Frecuencia Descendente porcentual
plot(x_pos, Hidsc,
main = "Gráfica N°13: Distribución porcentual ascendente y descendente
de los meses del estudio",
xlab = "Mes",
ylab = "%",
col = "red",
type = "p",
lwd = 2,
xaxt = "n")
# Graficar puntos de Frecuencia Ascendente porcentual
lines(x_pos, Hiasc,
col = "blue",
type = "p",
lwd = 3)
# Personalizar etiquetas del eje X
axis(side = 1,
at = x_pos,
labels = Tabla_Mes$Mes,
las = 1,
cex.axis = 0.9)

# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
# Media aritmética
media <- round(mean(Mes),0)
media
## [1] 7
# Moda
max_frecuencia <- max(Tabla_Mes$Freq)
moda <- Tabla_Mes$Mes[Tabla_Mes$Freq == max_frecuencia]
moda
## [1] 7
## Levels: 1 2 3 4 5 6 7 8 9 10 11 12
# Mediana
mediana <- median(Mes)
mediana
## [1] 7
# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(Mes)
varianza
## [1] 11.81366
# Desviación Estándar
sd <- sd(Mes)
sd
## [1] 3.437101
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 49.1
# INDICADORES DE FORMA #
library(e1071)
# Asimetría
asimetria <- skewness(Mes, type = 2)
asimetria
## [1] 0.01030819
# Curtosis
curtosis <- kurtosis(Mes)
curtosis
## [1] -1.204518
# TABLA RESUMEN FINAL
tabla_indicadores <- data.frame(
"Variable" = c("Mes"),
"Rango" = c(paste0("[", min(Mes), " ; ", max(Mes), "]")),
"X" = c(round(media,0)),
"Me" = c(round(mediana,0)),
"Mo" = c(paste(moda, collapse = ", ")),
"V" = c(round(varianza,2)),
"Sd" = c(round(sd,0)),
"Cv" = c(cv),
"As" = c(round(asimetria,2)),
"K" = c(round(curtosis,2)),
"Valores_Atipicos" = "No hay presencia de valores atípicos"
)
library(gt)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("*Tabla N°4*"),
subtitle = md("**Indicadores estadísticos de la variable Mes**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
# Negrita para el nombre de la variable
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Variable == "Mes"
)
)
tabla_indicadores_gt
| Tabla N°4 |
| Indicadores estadísticos de la variable Mes |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Mes |
[1 ; 12] |
7 |
7 |
7 |
11.81 |
3 |
49.1 |
0.01 |
-1.2 |
No hay presencia de valores atípicos |
| Autor: Grupo 3 |