ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA
SALUD FECHA: 24/01/2026
#Estadística inferencial
library(readr)
#PASO 1: DEFINIR LA VARIABLE DE INTERÉS
#La variable Materia Orgánica suelo es una variable cuantitativa continua, ya que su dominio está formado por valores reales positivos, es decir:
#D={x|x ∈ R+}
#Esta variable puede tomar infinitos valores dentro de un intervalo, por ejemplo entre 0 y 10 %.
#PASO 2: TABLA DE DISTRIBUCIÓN DE FRECUENCIAS
#Extracción Variable Cuantitativa Continua
datos <- read_csv("C:/Users/arian/OneDrive/Escritorio/3 SEMESTRE/ESTADISTICA Y PROBABILIDAD/soil_pollution_diseases1.csv")
MO <- datos$Materia_Organica_pct
# Histograma
k <- 1 + (3.3 * log10(3000))
k <- floor(k)
min <- min(MO)
max <- max(MO)
R <- max - min
A <- R / k
histoP <- hist(
MO,
main = "Gráfica Nº1: Distribución de la Materia Orgánica suelo",
xlab = "pH",
ylab = "Cantidad",
col = "blue"
)

#Tabla simplificada basada en el histograma
Limites <- histoP$breaks
LimInf <- Limites[1:(length(Limites) - 1)]
LimSup <- Limites[2:length(Limites)]
Mc <- histoP$mids
ni <- histoP$counts
sum(ni)
## [1] 3000
hi <- round(ni / sum(ni) * 100, 2)
sum(hi)
## [1] 100
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_asc <- round(cumsum(hi), 2)
Hi_dsc <- round(rev(cumsum(rev(hi))), 2)
TDF_MO<- data.frame(LimInf, LimSup, Mc, ni, hi, Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)
totalni <- sum(ni)
totalhi <- 100
TDF_MO_completo <- rbind(
TDF_MO,
data.frame(LimInf = "Total",
LimSup = " ", Mc = " ", ni = totalni,
hi = totalhi, Ni_asc = " ", Ni_dsc = " ",
Hi_asc = " ", Hi_dsc = " ")
)
library(dplyr)
library(gt)
tabla_Histo <- TDF_MO_completo %>%
gt() %>%
tab_header(
title = md("Tabla Nº1"),
subtitle = md("*Tabla simplificada de la Materia Orgánica suelo*")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.bottom.style = "solid",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = LimInf == "Total"
)
)
tabla_Histo
| Tabla Nº1 |
| Tabla simplificada de la Materia Orgánica suelo |
| LimInf |
LimSup |
Mc |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| 0 |
1 |
0.5 |
27 |
0.90 |
27 |
3000 |
0.9 |
100 |
| 1 |
2 |
1.5 |
437 |
14.57 |
464 |
2973 |
15.47 |
99.1 |
| 2 |
3 |
2.5 |
793 |
26.43 |
1257 |
2536 |
41.9 |
84.53 |
| 3 |
4 |
3.5 |
663 |
22.10 |
1920 |
1743 |
64 |
58.1 |
| 4 |
5 |
4.5 |
419 |
13.97 |
2339 |
1080 |
77.97 |
36 |
| 5 |
6 |
5.5 |
269 |
8.97 |
2608 |
661 |
86.94 |
22.03 |
| 6 |
7 |
6.5 |
182 |
6.07 |
2790 |
392 |
93.01 |
13.06 |
| 7 |
8 |
7.5 |
85 |
2.83 |
2875 |
210 |
95.84 |
6.99 |
| 8 |
9 |
8.5 |
37 |
1.23 |
2912 |
125 |
97.07 |
4.16 |
| 9 |
10 |
9.5 |
88 |
2.93 |
3000 |
88 |
100 |
2.93 |
| Total |
|
|
3000 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
#PASO 3: HISTOGRAMA
hist(
MO,
breaks = seq(min, max, A),
main = "Gráfica Nº2: Distribución de la Materia Orgánica suelo",
xlab = "Materia Orgánica del suelo (%)",
ylab = "Porcentaje",
col = "#4A90E2"
)

#Paso 4. CONJETURA
#Al analizar el histograma de la Materia Orgánica del suelo (%),
#se observa que la mayor frecuencia de datos se concentra en valores
#bajos y la cola de la distribución se extiende hacia la izquierda,
#Esta asimetría positiva sugiere que los datos podrían aproximarse a un modelo log-normal.
#Paso 5. CÁLCULO DE PARÁMETROS DISTRIBUCIÓN LOG-NORMAL
min(MO)
## [1] 0.68
log_MO <- log(MO)
mulog <- mean(log_MO)
sigmalog <- sd(log_MO)
mulog
## [1] 1.207941
sigmalog
## [1] 0.5004109
# Definir breaks (intervalos) a partir del histograma ya calculado
breaks <- histoP$breaks
breaks
## [1] 0 1 2 3 4 5 6 7 8 9 10
#Paso 6. HISTOGRAMA DENSIDAD DE PROBABILIDAD
Histograma_MO <- hist(
MO,
breaks = breaks,
col = "salmon",
freq = FALSE,
main = "Gráfica N°3: Comparación de la Realidad y el Modelo Log-normal de la Materia Orgánica del suelo en el estudio de la contaminación del suelo y su impacto en la salud",
xlab = "Materia Orgánica del suelo (%)",
ylab = "Densidad de probabilidad",
cex.main = 0.9,
ylim = c(0, max(hist(MO, breaks = breaks, plot = FALSE, freq = FALSE)$density, na.rm = TRUE) * 1.2),
xaxt = "n"
)
axis(1, at = breaks)
x <- seq(min(MO, na.rm = TRUE), max(MO, na.rm = TRUE), by = 0.001)
curve(
dlnorm(x, meanlog = mulog, sdlog = sigmalog),
col = "darkblue",
lwd = 3,
add = TRUE
)

#Paso 7. TESTS
# Test de Pearson
fo <- hist(MO, breaks = breaks, plot = FALSE)$counts
fo
## [1] 27 437 793 663 419 269 182 85 37 88
n <- length(MO)
fe <- numeric(length(fo)) # vector vacío para frecuencias esperadas
for(i in 1:length(fo)){
fe[i] <- n * (plnorm(breaks[i + 1], meanlog = mulog, sdlog = sigmalog) -
plnorm(breaks[i], meanlog = mulog, sdlog = sigmalog))
}
fe
## [1] 23.67429 431.72688 785.18396 677.11882 448.75678 268.52873 154.58136
## [8] 88.05358 50.30341 29.01209
# Correlación de Pearson (%)
Correlación <- cor(fo, fe) * 100
Correlación
## [1] 99.64035
# Test de Chi-cuadrado
# Frecuencias relativas esperadas
fe_frac <- fe / n
fe_frac
## [1] 0.007891431 0.143908961 0.261727985 0.225706274 0.149585593 0.089509576
## [7] 0.051527121 0.029351192 0.016767804 0.009670696
# Frecuencias relativas observadas
fo_frac <- fo / n
fo_frac
## [1] 0.00900000 0.14566667 0.26433333 0.22100000 0.13966667 0.08966667
## [7] 0.06066667 0.02833333 0.01233333 0.02933333
# Estadístico Chi-cuadrado
x2 <- sum((fo_frac - fe_frac)^2 / fe_frac)
x2
## [1] 0.04376686
# Grados de libertad
# k = número de intervalos
# Se restan 2 parámetros estimados (mulog y sigmalog)
k <- length(fo_frac)
gl <- k - 1
gl
## [1] 9
# Umbral de aceptación
umbral_aceptacion <- qchisq(0.9999999999, df = gl)
umbral_aceptacion
## [1] 65.81779
x2 < umbral_aceptacion
## [1] TRUE
# 9. CÁLCULO DE PROBABILIDAD (ACTUAL)
# ¿Cuál es la probabilidad de que la Materia Orgánica del suelo
# se encuentre entre 3% y 4%?
prob_actual <- plnorm(4, meanlog = mulog, sdlog = sigmalog) -
plnorm(3, meanlog = mulog, sdlog = sigmalog)
prob_actual
## [1] 0.2257063
prob_actual * 100
## [1] 22.57063
# ¿Cuál es la probabilidad de que la Materia Orgánica del suelo
# no supere el 4%?
plnorm(4, meanlog = mulog, sdlog = sigmalog)
## [1] 0.6392347
#Paso 10. INTERVALO DE CONFIANZA PARA LA MEDIA DE LA MATERIA ORGÁNICA
media <- mean(MO)
sigma <- sd(MO)
n <- length(MO)
sigma
## [1] 1.939203
error <- 2 * (sigma / sqrt(n))
# Límites del intervalo de confianza (95%)
limite_inferior <- round(media - error, 2)
limite_superior <- round(media + error, 2)
tabla_intervalo <- data.frame(
Intervalo = paste0("P [", limite_inferior, " < µ < ", limite_superior, "] = 95%")
)
library(gt)
library(dplyr)
tabla_intervalo %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 2*"),
subtitle = md("**Intervalo de confianza de la Materia Orgánica del suelo en el estudio de la contaminación del suelo y su impacto en la salud**")
) %>%
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. 2 |
| Intervalo de confianza de la Materia Orgánica del suelo en el estudio de la contaminación del suelo y su impacto en la salud |
| Intervalo |
| P [3.72 < µ < 3.86] = 95% |
| Autor: Grupo 3 |
#Paso 11. CONCLUSIÓN
# La variable Materia Orgánica suelo sigue o se explica con un modelo log-normal con parametros µ = 1.207 y σ = 0.500
#y podemos afirmar con 95% de confianza que la media aritmética de está variable se encuentra entre 3.72 y 3.86 %
#con una desviasión estándar de 1.93 %.