UNIVERSIDAD CENTRAL DEL ECUADOR
ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA SALUD
FECHA: 19/11/2025
# =========================
# ESTADÍSTICA Descriptiva
# Fecha: 19/11/2025
# =========================
library(gt)
library(dplyr)
# -------------------------
# Cargar datos
# -------------------------
setwd("C:/Users/Alexander/Downloads")
# Extraemos los datos
df <- read.csv("soil_pollution_diseases.csv", sep = ",", stringsAsFactors = FALSE)
# 1. Cargar dataset CSV
df <- read.csv("soil_pollution_diseases.csv", sep = ",", stringsAsFactors = FALSE)
# 2. Convertir la columna a fecha (formato día/mes/año)
df$Date_Reported <- as.Date(df$Date_Reported, format = "%Y-%m-%d")
# 3. Crear columnas separadas de 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
Año<-df$Year
Año<-na.omit(df$Year)
# Tabla de Distribución de Frecuencias
TDF.Año<-table(Año)
# Elementos para la tabla de distribución de Frecuencia
Tabla_Año<-as.data.frame(TDF.Año)
hi<-(Tabla_Año$Freq/sum(Tabla_Año$Freq))*100
ni<-Tabla_Año$Freq
Tabla_Año<-data.frame(Tabla_Año,hi)
Niasc<-cumsum(ni)
Hiasc<-cumsum(hi)
Nidsc<-rev(cumsum(rev(ni)))
Hidsc<-rev(cumsum(rev(hi)))
Tabla_año_final<-data.frame(Tabla_Año$Año,
Tabla_Año$Freq,
Tabla_Año$hi,
Niasc,
round(Hiasc,2),
Nidsc,
round(Hidsc,2))
colnames(Tabla_año_final)<-c("Año","ni","hi (%)",
"Ni_asc","Hi_asc(%)",
"Ni_dsc","Hi_dsc(%)")
# Totales
Tabla_año_final$Año <- as.character(Tabla_año_final$Año)
totales <- c(Año="Total",ni= sum(ni),
hi= sum(hi),
Niasc="-",
Nidsc="-",
Hiasc= "-",
Hidsc="-")
TDF_años_total<-rbind(Tabla_año_final,totales)
TDF_años_total
#Formato tabla
library(gt)
tabla_años_gt <- TDF_años_total %>%
gt() %>%
tab_header(
title = md("*Tabla N°1*"),
subtitle = md("**Tabla de distribución de los años 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"
) %>%
# poner en negrita la fila "Total"
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Año == "Total"
)
)
tabla_años_gt
| Tabla N°1 | ||||||
| Tabla de distribución de los años del estudio | ||||||
| Año | ni | hi (%) | Ni_asc | Hi_asc(%) | Ni_dsc | Hi_dsc(%) |
|---|---|---|---|---|---|---|
| 2023 | 1116 | 37.2 | 1116 | 37.2 | 3000 | 100 |
| 2024 | 1497 | 49.9 | 2613 | 87.1 | 1884 | 62.8 |
| 2025 | 387 | 12.9 | 3000 | 100 | 387 | 12.9 |
| Total | 3000 | 100 | - | - | - | - |
| Autor: Grupo 3 | ||||||
# Gráfico de barras - Frecuencia absoluta por Año
barplot(ni,
main = "Gráfica N°1: Distribución de la contaminación del suelo según el Año",
xlab = "Año",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, max(ni)),
names.arg = Tabla_Año$Año,
las = 2,
cex.names = 0.8)
# Gráfico de barras - Porcentaje por Año
barplot(hi,
main = "Gráfica N°2: Distribución porcentual de los años en los
que se realizó el estudio de contaminación del suelo",
xlab = "Año",
ylab = "%",
col = "lightgreen",
names.arg = Tabla_Año$Año, # Años extraídos de tu tabla
las = 2,
cex.names = 0.8)
# Gráfico de barras - Frecuencia absoluta global por Año
barplot(ni,
main = "Gráfica N°3: Distribución de la contaminación del suelo según el Año",
xlab = "Año",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, 3000), # Límite superior fijo como en tu ejemplo
names.arg = Tabla_Año$Año, # Años de tu tabla
las = 2,
cex.names = 0.8)
# Gráfico de barras - Porcentaje global por Año
barplot(hi,
main = "Gráfica N°4: Distribución porcentual de los años en los
que se realizó el estudio de contaminación del suelo",
xlab = "Año",
ylab = "%",
col = "lightgreen",
ylim = c(0, 100),
names.arg = Tabla_Año$Año,
las = 2,
cex.names = 0.8)
# DIAGRAMA DE CAJA Y BIGOTE - Años
boxplot(Año,
horizontal = TRUE,
col = "brown",
main = "Gráfica N°5: Distribución de los Años del Estudio de
Contaminación del Suelo",
xlab = "Año")
# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(Tabla_Año$Año)
# Graficar puntos de Frecuencia Descendente acumuladas
plot(x_pos, Nidsc,
main = "Gráfica N°6: Distribución Ascendentes
y Descendentes de los años del estudio de contaminación del suelo",
xlab = "Años",
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_Año$Año,
las = 1,
cex.axis = 0.9)
# Diagrama de Ojiva Ascendente y Descendente Porcentual
x_pos <- 1:length(Tabla_Año$hi)
# Graficar puntos de Frecuencia Descendente porcentual acumuladas
plot(x_pos, Hidsc,
main = "Gráfica N°7: Distribución porcentual
Ascendentes y Descendentes de los años que se llevó a cabo el
estudio de contaminación del suelo",
xlab = "Años",
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_Año$Año,
las = 1,
cex.axis = 0.9)
# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
# Media aritmética
media <- round(mean(Año),0)
media
## [1] 2024
# Moda
max_frecuencia <- max(Tabla_Año$Freq)
moda <- Tabla_Año$Año[Tabla_Año$Freq == max_frecuencia]
moda
## [1] 2024
## Levels: 2023 2024 2025
# Mediana
mediana <- median(Año)
mediana
## [1] 2024
# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(Año)
varianza
## [1] 0.4420984
# Desviación Estándar
sd <- sd(Año)
sd
## [1] 0.6649048
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 0.03
# INDICADORES DE FORMA #
# Asimetría
library(e1071)
asimetria <- skewness(Año, type = 2)
asimetria
## [1] 0.3185022
# Curtosis
curtosis <- kurtosis(Año)
curtosis
## [1] -0.7905203
# TABLA RESUMEN FINAL
tabla_indicadores <- data.frame(
"Variable" = c("Año"),
"Rango" = c(paste0("[", min(Año), " ; ", max(Año), "]")),
"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°2*"),
subtitle = md("**Indicadores estadísticos de la variable Año**")
) %>%
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 == "Año"
)
)
tabla_indicadores_gt
| Tabla N°2 | ||||||||||
| Indicadores estadísticos de la variable Año | ||||||||||
| Variable | Rango | X | Me | Mo | V | Sd | Cv | As | K | Valores_Atipicos |
|---|---|---|---|---|---|---|---|---|---|---|
| Año | [2023 ; 2025] | 2024 | 2024 | 2024 | 0.44 | 1 | 0.03 | 0.32 | -0.79 | No hay presencia de valores atípicos |
| Autor: Grupo 3 | ||||||||||
##------------##
## CONCLUSION ##
##------------##
# La variable Año fluctua entre 2023 y 2025 y gira entorno a 2024 con una desviación estandar de 1 siendo un conjuto de datos homogeneo, los valores de acumulan de manera debil en la parte baja de la variable. Sin presencia de valores atipicos.