1.Librerias
library(gt)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(e1071)
library(fitdistrplus)
## Cargando paquete requerido: MASS
##
## Adjuntando el paquete: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Cargando paquete requerido: survival
2.Leer Datos
datos <- read.csv("waterPollution.csv",
sep = ",",
stringsAsFactors = FALSE)
4.TDF de la variable Pocentaje de plástico
histoP <- hist(CPP, breaks = 10, plot = FALSE)
LimInf <- round(histoP$breaks[-length(histoP$breaks)], 0)
LimSup <- round(histoP$breaks[-1], 0)
Mc <- round(histoP$mids, 2)
ni <- histoP$counts
hi <- round((ni/sum(ni)) * 100, 2)
TDF_Histo_CGP <- data.frame(LimInf, LimSup, Mc, ni, hi)
TDF_Histo_CGP <- TDF_Histo_CGP[TDF_Histo_CGP$ni > 0, ]
TDF_Histo_CGP$Ni_asc <- cumsum(TDF_Histo_CGP$ni)
TDF_Histo_CGP$Ni_dsc <- rev(cumsum(rev(TDF_Histo_CGP$ni)))
TDF_Histo_CGP$Hi_asc <- round(cumsum(TDF_Histo_CGP$hi), 2)
TDF_Histo_CGP$Hi_dsc <- round(rev(cumsum(rev(TDF_Histo_CGP$hi))), 2)
TDF_Histo_CGP_Completo <- rbind(
TDF_Histo_CGP,
data.frame(
LimInf = "Total", LimSup = " ", Mc = " ",
ni = sum(TDF_Histo_CGP$ni), hi = 100,
Ni_asc = " ", Ni_dsc = " ", Hi_asc = " ", Hi_dsc = " "
)
)
tabla_Histo_CGP <- TDF_Histo_CGP_Completo %>%
gt() %>%
tab_header(
title = md("*Tabla Nº1*"),
subtitle = md("**Distribución de frecuencia simplificada de porcentaje de plástico en el estudio de calidad de agua en Europa (1991-2017)**")
) %>%
tab_source_note(source_note = md("Autor: Grupo 3, "))
tabla_Histo_CGP
| Tabla Nº1 |
| Distribución de frecuencia simplificada de porcentaje de plástico en el estudio de calidad de agua en Europa (1991-2017) |
| LimInf |
LimSup |
Mc |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| 0 |
2 |
1 |
437 |
2.20 |
437 |
19893 |
2.2 |
100 |
| 2 |
4 |
3 |
506 |
2.54 |
943 |
19456 |
4.74 |
97.8 |
| 6 |
8 |
7 |
256 |
1.29 |
1199 |
18950 |
6.03 |
95.26 |
| 8 |
10 |
9 |
12802 |
64.35 |
14001 |
18694 |
70.38 |
93.97 |
| 10 |
12 |
11 |
460 |
2.31 |
14461 |
5892 |
72.69 |
29.62 |
| 12 |
14 |
13 |
1419 |
7.13 |
15880 |
5432 |
79.82 |
27.31 |
| 14 |
16 |
15 |
22 |
0.11 |
15902 |
4013 |
79.93 |
20.18 |
| 16 |
18 |
17 |
15 |
0.08 |
15917 |
3991 |
80.01 |
20.07 |
| 20 |
22 |
21 |
3957 |
19.89 |
19874 |
3976 |
99.9 |
19.99 |
| 22 |
24 |
23 |
19 |
0.10 |
19893 |
19 |
100 |
0.1 |
| Total |
|
|
19893 |
100.00 |
|
|
|
|
| Autor: Grupo 3, |
4.1 Histograma de la variable
bp <- barplot(TDF_Histo_CGP$hi,
col = "royalblue",
space = 0 ,
main = "Gráfica Nº1: Distribución de frecuencia
simplificada de porcentaje de plástico en el
estudio de calidad de agua en Europa (1991-2017)",
xlab = "Porcentaje de plástico (%)",
cex.names = 0.7 ,
ylab = "Porcentaje (%)",
names.arg = paste(TDF_Histo_CGP$LimInf, "-", TDF_Histo_CGP$LimSup))
text(bp, TDF_Histo_CGP$hi, round(TDF_Histo_CGP$hi, 2), pos = 3, cex = 0.8)

5.Conjetura
#Conjetura
#Se conjetura que el porcentaje de contaminación por plástico sigue un modelo de probabilidad log-normal dentro de su rango principal de distribución. Esto se fundamenta en que el histograma de la variable acotada presenta una marcada asimetría positiva, caracterizada por un ascenso abrupto hacia un pico masivo de observaciones en el intervalo de 8–10% y un posterior descenso continuo que se extiende en una cola larga hacia valores más altos (12% a 18%), comportamiento típico de variables ambientales con límites estrictos en cero y sesgo a la derecha.
5.1 Calculo de prob
#Corte de Lognormal
CPP_recortado <- CPP[CPP >= 6 & CPP <= 18]
#Parámetros matemáticos del modelo
min(CPP_recortado)
## [1] 6.58
log_CPP <- log(CPP_recortado)
mulog_CPP <- mean(log_CPP)
sigmalog_CPP <- sd(log_CPP)
6.Sobreponer la realidad con el modelo
#Histograma
breaks_recortado <- seq(6, 18, by = 2)
hist(
CPP_recortado,
breaks = breaks_recortado,
col = "skyblue",
freq = FALSE,
main = "Gráfica N°2: Comparación de la Realidad y el Modelo Log-normal\ndel Porcentaje de Plástico",
xlab = "Porcentaje de plástico (%)",
ylab = "Densidad de probabilidad",
cex.main = 0.9,
ylim = c(0, 0.45)
)
#La curva Lognormal
curve(
dlnorm(x, meanlog = mulog_CPP, sdlog = sigmalog_CPP),
from = 6,
to = 18,
col = "darkblue",
lwd = 3,
add = TRUE
)

7.Test de bondad
# 1. Definimos los cortes exactos que usamos en tu gráfica (del 6 al 18, de 2 en 2)
breaks_test <- seq(6, 18, by = 2)
# Frecuencias observadas (fo)
fo <- hist(CPP_recortado, breaks = breaks_test, plot = FALSE)$counts
print("Frecuencias Observadas:")
## [1] "Frecuencias Observadas:"
print(fo)
## [1] 256 12802 460 1419 22 15
n <- length(CPP_recortado)
# Vector vacío para frecuencias esperadas (fe)
fe <- numeric(length(fo))
for(i in 1:length(fo)){
fe[i] <- n * (plnorm(breaks_test[i + 1], meanlog = mulog_CPP, sdlog = sigmalog_CPP) -
plnorm(breaks_test[i], meanlog = mulog_CPP, sdlog = sigmalog_CPP))
}
print("Frecuencias Esperadas:")
## [1] "Frecuencias Esperadas:"
print(fe)
## [1] 1.465341e+03 9.305730e+03 3.942062e+03 2.544033e+02 4.865236e+00
## [6] 4.409651e-02
#Correlación de Pearson (%)
Correlación <- cor(fo, fe) * 100
print("Correlación de Pearson (%):")
## [1] "Correlación de Pearson (%):"
print(Correlación)
## [1] 90.7685
# TEST DE CHI-CUADRADO
# Frecuencias relativas esperadas
fe_frac <- fe / n
print("Frecuencias Relativas Esperadas:")
## [1] "Frecuencias Relativas Esperadas:"
print(fe_frac)
## [1] 9.785904e-02 6.214592e-01 2.632604e-01 1.698967e-02 3.249123e-04
## [6] 2.944872e-06
# Frecuencias relativas observadas
fo_frac <- fo / n
print("Frecuencias Relativas Observadas:")
## [1] "Frecuencias Relativas Observadas:"
print(fo_frac)
## [1] 0.017096300 0.854948578 0.030719915 0.094764258 0.001469213 0.001001736
# Estadístico Chi-cuadrado
x2 <- sum((fo_frac - fe_frac)^2 / fe_frac)
print("Estadístico Chi-cuadrado (X2):")
## [1] "Estadístico Chi-cuadrado (X2):"
print(x2)
## [1] 1.0586
# Grados de libertad (k = número de intervalos)
# Se restan los 2 parámetros estimados (mulog y sigmalog) y el -1 de cajón
k <- length(fo_frac)
gl <- k - 1 - 2
print("Grados de Libertad:")
## [1] "Grados de Libertad:"
print(gl)
## [1] 3
# Umbral de aceptación
umbral_aceptacion <- qchisq(0.9999999999, df = gl)
print("Umbral de Aceptación:")
## [1] "Umbral de Aceptación:"
print(umbral_aceptacion)
## [1] 49.54216
# ¿Se acepta el modelo lognormal? (TRUE = Sí, FALSE = No)
print("¿El estadístico es menor que el umbral? (Veredicto):")
## [1] "¿El estadístico es menor que el umbral? (Veredicto):"
print(x2 < umbral_aceptacion)
## [1] TRUE
8.Calculo de probabilidades
# --- PREGUNTA 1 ---
# ¿Cuál es la probabilidad de que el porcentaje de plástico se encuentre entre 8% y 11%?
prob_8_11 <- plnorm(11, meanlog = mulog_CPP, sdlog = sigmalog_CPP) -
plnorm(8, meanlog = mulog_CPP, sdlog = sigmalog_CPP)
print("Probabilidad entre 8% y 11%:")
## [1] "Probabilidad entre 8% y 11%:"
print(prob_8_11)
## [1] 0.8185079
# --- PREGUNTA 2 ---
# ¿Cuál es la probabilidad de que el porcentaje de plástico no supere el 10%?
prob_menos_10 <- plnorm(10, meanlog = mulog_CPP, sdlog = sigmalog_CPP)
print("Probabilidad de que no supere el 10%:")
## [1] "Probabilidad de que no supere el 10%:"
print(prob_menos_10)
## [1] 0.719422
8.1 Demostración De la probabilidad
# DEMOSTRACIÓN GRÁFICA DE LAS ÁREAS
# Eje X base para el dibujo del modelo completo (de 6 a 18)
x_base <- seq(6, 18, by = 0.001)
plot(
x_base, dlnorm(x_base, meanlog = mulog_CPP, sdlog = sigmalog_CPP),
col = "skyblue3",
lwd = 3,
xlim = c(6, 18),
ylim = c(0, 0.45),
main = "Gráfica N°3: Cálculo de Probabilidad en el Modelo",
ylab = "Densidad de probabilidad",
xlab = "Porcentaje de plástico (%)",
xaxt = "n"
)
# PINTAR ÁREA 1: Entre 8% y 11% (Rojo)
x_sec1 <- seq(8, 11, by = 0.001)
y_sec1_valores <- dlnorm(x_sec1, meanlog = mulog_CPP, sdlog = sigmalog_CPP)
lines(x_sec1, y_sec1_valores, col = "red", lwd = 2)
polygon(
c(x_sec1, rev(x_sec1)),
c(y_sec1_valores, rep(0, length(y_sec1_valores))),
col = rgb(1, 0, 0, 0.4)
)
# PINTAR ÁREA 2: Desde 6% hasta 10% (Verde)
x_sec2 <- seq(6, 10, by = 0.001)
y_sec2_valores <- dlnorm(x_sec2, meanlog = mulog_CPP, sdlog = sigmalog_CPP)
lines(x_sec2, y_sec2_valores, col = "green", lwd = 2)
polygon(
c(x_sec2, rev(x_sec2)),
c(y_sec2_valores, rep(0, length(y_sec2_valores))),
col = rgb(0, 1, 0, 0.3)
)
legend(
"topright",
legend = c("Modelo Lognormal", "Área [8% - 11%]", "Área [<= 10%]"),
col = c("skyblue3", "red", "green"),
lwd = 3,
bty = "n"
)
axis(1, at = seq(6, 18, by = 1), labels = seq(6, 18, by = 1), las = 1)

9.Intervalo de confianza
#INTERVALO DE CONFIANZA (MÓDULO PLÁSTICOS)
# (rango 6 a 18)
media_CPP <- mean(CPP_recortado)
sigma_CPP <- sd(CPP_recortado)
n_CPP <- length(CPP_recortado)
# Cálculo del error estándar para el 95% de confianza (Z ≈ 1.96)
error_CPP <- 2 * (sigma_CPP / sqrt(n_CPP))
# Límites del intervalo de confianza
limite_inf_CPP <- round(media_CPP - error_CPP, 2)
limite_sup_CPP <- round(media_CPP + error_CPP, 2)
texto_intervalo <- paste0("P [", limite_inf_CPP, " < µ < ", limite_sup_CPP, "] = 95%")
# Generamos el data frame para la tabla gt
tabla_intervalo <- data.frame(Intervalo = texto_intervalo)
# Construcción de la tabla con el formato de tu grupo
tabla_intervalo %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 2*"),
subtitle = md("**Intervalo de confianza del porcentaje de plástico, estudio de calidad de agua en Europa(1991-2017)**")
) %>%
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 del porcentaje de plástico, estudio de calidad de agua en Europa(1991-2017) |
| Intervalo |
| P [9.38 < µ < 9.42] = 95% |
| Autor: Grupo 3 |
10. Conclusión
La variable porcentaje de contaminación por plástico (%) se explica
de forma óptima mediante un modelo log-normal con parámetros \(\mu_{\log}\) = 2.23 y \(\sigma_{\log}\) = 0.12. Asimismo, con base
en las pruebas estadísticas, podemos afirmar con un 95% de confianza que
la media aritmética verdadera de esta variable dentro del rango
principal se encuentra entre 9.38% y 9.42%, presentando una desviación
estándar muestral de 1.27%.