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 Precipitación 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 400 mm.
#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")
Precipitación <- datos$Precipitacion_mm
# Histograma
k <- 1 + (3.3 * log10(3000))
k <- floor(k)
min <- min(Precipitación)
max <- max(Precipitación)
R <- max - min
A <- R / k
histoP <- hist(
Precipitación,
main = "Gráfica Nº5: Distribución de la temperatura de 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_Histo_Precipitación <- data.frame(LimInf, LimSup, Mc, ni, hi, Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)
totalni <- sum(ni)
totalhi <- 100
TDF_Histo_Precipitación_completo <- rbind(
TDF_Histo_Precipitación,
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_Histo_Precipitación_completo %>%
gt() %>%
tab_header(
title = md("Tabla Nº1"),
subtitle = md("*Tabla simplificada de distribución de la Precipitación*")
) %>%
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 distribución de la Precipitación |
| LimInf |
LimSup |
Mc |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| 0 |
50 |
25 |
1359 |
45.30 |
1359 |
3000 |
45.3 |
100 |
| 50 |
100 |
75 |
745 |
24.83 |
2104 |
1641 |
70.13 |
54.7 |
| 100 |
150 |
125 |
410 |
13.67 |
2514 |
896 |
83.8 |
29.87 |
| 150 |
200 |
175 |
221 |
7.37 |
2735 |
486 |
91.17 |
16.2 |
| 200 |
250 |
225 |
124 |
4.13 |
2859 |
265 |
95.3 |
8.83 |
| 250 |
300 |
275 |
59 |
1.97 |
2918 |
141 |
97.27 |
4.7 |
| 300 |
350 |
325 |
37 |
1.23 |
2955 |
82 |
98.5 |
2.73 |
| 350 |
400 |
375 |
45 |
1.50 |
3000 |
45 |
100 |
1.5 |
| Total |
|
|
3000 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
#PASO 3: HISTOGRAMA
hist(
Precipitación,
breaks = seq(min, max, A),
main = "Gráfica Nº1: Distribución de la Precipitación",
xlab = "pH",
ylab = "Porcentaje",
col = "#4A90E2"
)

#Paso 4. CONJETURA: Observando el histograma de la variable precipitación (mm), se puede notar que las barras presentan una alta frecuencia de valores bajos y van decreciendo rápidamente a medida que aumenta la precipitación. Esta forma característica, con un declive continuo hacia la derecha, sugiere que la variable podría seguir un modelo de distribución exponencial.
#Paso 5. CÁLCULO DE PARÁMETROS DISTRIBUCIÓN EXPONELCIAL
# Media
media_exp <- mean(Precipitación)
media_exp
## [1] 82.43867
# Lambda
lambda <- 1 / media_exp
lambda
## [1] 0.01213023
# Definimos los breaks (clases) usando el histograma que ya calculaste
breaks <- histoP$breaks
breaks
## [1] 0 50 100 150 200 250 300 350 400
#Paso 6. HISTOGRAMA densidad de probabilidad
Histograma_precipitación <- hist(
Precipitación,
breaks = breaks,
freq = FALSE,
main = "Gráfica Nº2: Comparación modelo exponelcial con la realidad de la precipitación",
xlab = "Precipitación (mm)",
ylab = "Densidad probabilidad",
col = "lightblue",
ylim = c(0, max(hist(Precipitación, breaks = breaks, plot = FALSE, freq = FALSE)$density, na.rm = TRUE) * 1.2),
xaxt = "n"
)
axis(1, at = breaks)
# Curva exponencial
curve(
dexp(x, rate = lambda),
from = 0, to = max(Precipitación, na.rm = TRUE),
col = "orange", lwd = 2, add = TRUE
)

#PASO 7: APLICACIÓN DE TESTS
#TEST DE PEARSON
# Frecuencia simple observada
Fo <- histoP$counts
Fo
## [1] 1359 745 410 221 124 59 37 45
#Número de intervalos
h <- length(Fo)
h
## [1] 8
#Probabilidades teóricas por intervalo
P <- c(0)
for (i in 1:h) {
P[i] <- (pexp(histoP$breaks[i + 1], rate = lambda) -
pexp(histoP$breaks[i], rate = lambda))
}
P
## [1] 0.454750345 0.247952469 0.135195998 0.073715571 0.040193390 0.021915432
## [7] 0.011949382 0.006515396
#Frecuencia esperada
Fe <- P * length(Precipitación)
Fe
## [1] 1364.25104 743.85741 405.58799 221.14671 120.58017 65.74630 35.84814
## [8] 19.54619
# Correlación de Pearson (%)
Correlación <- cor(Fo, Fe) * 100
Correlación
## [1] 99.98086
#TEST CHI CUADRADO
grados_libertad <- h - 1
grados_libertad
## [1] 7
nivel_significancia <- 0.05
n <- length(Precipitación)
Fo <- (histoP$counts / n) * 100
Fo
## [1] 45.300000 24.833333 13.666667 7.366667 4.133333 1.966667 1.233333
## [8] 1.500000
Fe <- P * 100
Fe
## [1] 45.4750345 24.7952469 13.5195998 7.3715571 4.0193390 2.1915432 1.1949382
## [8] 0.6515396
x2 <- sum((Fe - Fo)^2 / Fe)
x2
## [1] 1.134775
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
## [1] 14.06714
x2 < umbral_aceptacion
## [1] TRUE
#PASO 7: CÁLCULO DE PROBABILIDADES (MODELO EXPONENCIAL)
# ¿Qué porcentaje de nuevas muestras tendrá precipitación entre 50 y 100 mm?
prob1 <- pexp(100, rate = lambda) - pexp(50, rate = lambda)
prob1 * 100
## [1] 24.79525
# ¿Qué porcentaje de nuevas muestras tendrá precipitación mayor a 150 mm?
prob2 <- 1 - pexp(150, rate = lambda)
prob2 * 100
## [1] 16.21012
# Si se toman 50 muestras, ¿cuántas se espera que tengan precipitación entre 40 y 80 mm?
n_muestra <- 50
prob3 <- pexp(80, rate = lambda) - pexp(40, rate = lambda)
esperadas <- prob3 * n_muestra
esperadas
## [1] 11.8322
#PASO 8: INTERVALO DE CONFIANZA PARA LA MEDIA DE LA PRECIPITACIÓN
media <- mean(Precipitación)
sigma <- sd(Precipitación)
n <- length(Precipitación)
sigma
## [1] 79.97984
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 las precipitaciones en el estudio del clima en el volcán Antisana en 2012**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
) %>%
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 las precipitaciones en el estudio del clima en el volcán Antisana en 2012 |
| Intervalo |
| P [79.52 < µ < 85.36] = 95% |
| Autor: Grupo 2 |
#PASO 9:CONCLUSIÓN
# La variable precipitación (mm) sigue o se explica con un modelo exponencial con parametro λ= 0.012
#y podemos afirmar con 95% de confianza que la media aritmetica de está variable se encuentra entre 79.52 y 85.36 (mm)
#con una desviación estándar de 79.97 (mm).