UNIVERSIDAD CENTRAL DEL ECUADOR
ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA SALUD
FECHA: 24/1/2026
setwd("C:/Users/arian/OneDrive/Escritorio/3 SEMESTRE/ESTADISTICA Y PROBABILIDAD")
soil_pollution_diseases <- read.csv(
"soil_pollution_diseases.csv",
header = TRUE,
sep = ",",
dec = "."
)
#PASO 1: DEFINIR LA VARIABLE DE INTERÉS
# La variable Año es una variable discreta porque su dominio está formado por valores enteros contables, es decir,
#D={x|x ∈ Z+}
#No puede tomar valores fraccionarios entre dos años consecutivos, ya que el tiempo se registra en unidades completas de año.
#PASO 2: TABLA DE DISTRIBUCIÓN DE FRECUENCIAS (AÑO)
# Extraer los datos
df <- soil_pollution_diseases
# Convertir Date_Reported a tipo Date (YYYY-MM-DD)
df$Date_Reported <- as.Date(df$Date_Reported)
# 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"))
# Variable de interés (Año) sin NA
Año <- na.omit(df$Year)
# Tabla de frecuencias
TDF_Año <- table(Año)
# Crear tabla con columnas bien nombradas
Tabla_Año_final <- data.frame(
Año = as.integer(names(TDF_Año)),
ni = as.integer(TDF_Año),
hi = round(100 * as.integer(TDF_Año) / sum(TDF_Año), 2),
stringsAsFactors = FALSE
)
# Fila Total (mismo nombre de columnas)
totales <- data.frame(
Año = "Total",
ni = sum(Tabla_Año_final$ni),
hi = round(sum(Tabla_Año_final$hi), 2),
stringsAsFactors = FALSE
)
ni <- Tabla_Año_final$ni
hi <- Tabla_Año_final$hi
# Unir tabla + total (ya no da error)
TDF_Año_total <- rbind(Tabla_Año_final, totales)
# TABLA
library(gt)
library(dplyr)
TDF_Año_total%>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 1*"),
subtitle = md("**Tabla de distribución de frecuencias del año de 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"
)
| Tabla Nro. 1 | ||
| Tabla de distribución de frecuencias del año de estudio | ||
| Año | ni | hi |
|---|---|---|
| 2023 | 1116 | 37.2 |
| 2024 | 1497 | 49.9 |
| 2025 | 387 | 12.9 |
| Total | 3000 | 100.0 |
| Autor: Grupo 3 | ||
#PASO 3: DIAGRAMA DE BARRAS
# Gráfico de barras - Porcentaje global 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 = "Porcentaje",
col = "lightgreen",
ylim = c(0, 100),
names.arg = Tabla_Año_final$Año,
las = 2,
cex.names = 0.8)
#PASO 4: MAPEO
Año_map <- ifelse(Año == 2023, 1,
ifelse(Año == 2024, 2,
ifelse(Año == 2025, 3, NA)))
Año_map <- na.omit(Año_map)
# Tabla de frecuencias del año mapeado
TDF_Año_map <- table(Año_map)
# Crear tabla con columnas bien nombradas
Tabla_Año_map_final <- data.frame(
Año = as.integer(names(TDF_Año_map)), # aquí ya salen 1,2,3
ni = as.integer(TDF_Año_map),
hi = round(100 * as.integer(TDF_Año_map) / sum(TDF_Año_map), 2),
stringsAsFactors = FALSE
)
# Fila Total
totales <- data.frame(
Año = "Total",
ni = sum(Tabla_Año_map_final$ni),
hi = round(sum(Tabla_Año_map_final$hi), 2),
stringsAsFactors = FALSE
)
TDF_Año_map_total <- rbind(Tabla_Año_map_final, totales)
library(gt)
library(dplyr)
TDF_Año_map_total %>%
gt() %>%
tab_header(
title = md("Tabla Nro. 1"),
subtitle = md("Tabla de distribución de frecuencias del año de estudio (mapeado)")
) %>%
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"
)
| Tabla Nro. 1 | ||
| Tabla de distribución de frecuencias del año de estudio (mapeado) | ||
| Año | ni | hi |
|---|---|---|
| 1 | 1116 | 37.2 |
| 2 | 1497 | 49.9 |
| 3 | 387 | 12.9 |
| Total | 3000 | 100.0 |
| Autor: Grupo 3 | ||
#PASO 5: DIAGRAMA DE BARRAS (AÑO MAPEADO)
barplot(Tabla_Año_map_final$hi,
main = "Gráfica N°2: Distribución porcentual de los años (mapeados) del estudio",
xlab = "Año (mapeado: 2023=1, 2024=2, 2025=3)",
ylab = "Porcentaje",
col = "lightgreen",
ylim = c(0, 100),
names.arg = Tabla_Año_map_final$Año,
las = 2,
cex.names = 0.8)
#PASO 6: CONJETURA DE MODELO
#Mi variable discreta año y sus barras se comportan como el modelo matemático Binomial
#PASO 7: CALCULO DE PARAMETROS PARA MODELO BINOMIAL
x <- Tabla_Año_map_final$ni[
Tabla_Año_map_final$Año >= 1 &
Tabla_Año_map_final$Año <= 3
]
clases <- 1:3
hi_1_3 <- x / sum(x)
X <- 0:(length(x) - 1)
media_observada <- sum(X * x) / sum(x)
p <- media_observada / (length(x) - 1)
P_binomial <- dbinom(X, size = length(x) - 1, prob = p)
#PASO 8: DIAGRAMA COMPARATIVO ENTRE LA REALIDAD Y EL MODELO BINOMIAL
barplot(
rbind(hi_1_3, P_binomial),
beside = TRUE,
col = c("lightgreen", "blue"),
names.arg = clases,
main = "Grafica N°3: Modelo de probabilidad binomial de los años de estudio ",
ylab = "Cantidad - Probabilidad",
xlab = "Año mapeado"
)
legend(
"topright",
legend = c("Real", "Modelo"),
fill = c("lightgreen", "blue"),
cex = 0.8
)
#PASO 9: APLICACIÓN DE TEST DE PEARSON Y CHI SQUARED
# TEST DE PEARSON
Fo <- hi_1_3
Fe <- P_binomial
Correlacion_Pearson <- cor(Fo, Fe) * 100
Correlacion_Pearson
## [1] 99.5576
# GRÁFICA DE CORRELACIÓN (PEARSON)
plot(
hi_1_3,
P_binomial,
main = "Gráfica N°12: Correlación de frecuencias en el modelo Binomial (Año mapeado)",
xlab = "Frecuencia observada",
ylab = "Frecuencia esperada (Modelo binomial)",
pch = 18,
col = "darkblue"
)
abline(
lm(P_binomial ~ hi_1_3),
col = "red",
lwd = 2
)
# TEST DE CHI-CUADRADO
Fo <- hi_1_3
Fe <- P_binomial
x2 <- sum(((Fo - Fe)^2) / Fe)
x2
## [1] 0.003675886
vc <- qchisq(0.95, length(Fo) - 1)
vc
## [1] 5.991465
x2 < vc
## [1] TRUE
#PASO 10: CALCULO DE PROBABILIDADES
#¿Cuál es la probabilidad de que un registro seleccionado al azar corresponda al año 2025?
dbinom(2, size = length(x) - 1, prob = p)
## [1] 0.1432623
#PASO 11: CONCLUSIONES
#LA VARIABLE AÑO SE EXPLICA A TRAVEZ DEL MODELO BINOMIAL APROBANDO LOS TEST DE PEARSON Y CHI CUADRADO.
#DE ESTA MANERA PODEMOS CALCULAR PROBABILIDADES COMO POR EJEMPLO CUÁL ES LA PROBABILIDAD DE QUE UN REGRITO SELECCIONADO CORRESPONDA AL AÑO 2025