#==============================ENCABEZADO===================================
# TEMA: EI Variables Continua - TOTAL GAS PRODUCTION BY 2023
# AUTOR: GRUPO 4
# FECHA: 08-02-2026
# PASO 0: CARGA Y LIMPIEZA DE DATOS
# Establecemos el directorio de trabajo y cargamos el CSV.
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ".", sep = ";")
cat("\n>>> PASO 0: PREPARACI??N DE DATOS <<<\n")
##
## >>> PASO 0: PREPARACI??N DE DATOS <<<
# Limpieza: eliminamos caracteres no num??ricos y quitamos los valores NA (vac??os).
prod_raw <- as.numeric(gsub("[^0-9.]", "", as.character(datos$Total.gas.production.by.2023)))
prod_raw <- na.omit(prod_raw)
# PASO 1: JUSTIFICACI??N Y DOMINIO
# Se justifica como continua porque el gas es una masa/volumen que puede tomar cualquier valor real.
cat("1. JUSTIFICACI??N: Variable continua (Producci??n acumulada). Dominio: [0, +inf).\n")
## 1. JUSTIFICACI??N: Variable continua (Producci??n acumulada). Dominio: [0, +inf).
# PASO 2: GR??FICA NRO. 0 (EVIDENCIA ORIGINAL)
# Muestra los datos brutos; se nota la dispersi??n antes de filtrar.
hist(prod_raw, col = "green", main = "Grafica Nro. 0: Producci??n Original",
xlab = "Producci??n Total", ylab = "Frecuencia", las = 1)

# PASO 3: FILTRADO (SUBSET)
# Omitimos outliers (valores at??picos) mediante el criterio de Boxplot.
# Esto es fundamental para que la prueba Chi-cuadrado pueda ser aprobada.
caja_p <- boxplot(prod_raw, plot = FALSE)
prod_v <- prod_raw[prod_raw >= caja_p$stats[1] & prod_raw <= caja_p$stats[5]]
# PASO 4: CONFIGURACI??N DE RANGOS (REGLA DE STURGES)
# Determinamos el n??mero ??ptimo de intervalos (k) para agrupar los datos.
n <- length(prod_v)
k <- round(1 + 3.322 * log10(n))
rango_total <- range(prod_v)
amplitud <- diff(rango_total) / k
cortes <- seq(rango_total[1], rango_total[1] + (k * amplitud), by = amplitud)
# PASO 5: TABLA T??CNICA DE 9 COLUMNAS
# hi: frecuencia relativa (base para validar el modelo).
# Ni/Hi: frecuencias acumuladas que ayudan a entender la concentraci??n de datos.
h_p <- hist(prod_v, breaks = cortes, plot = FALSE)
li <- h_p$breaks[-length(h_p$breaks)]; ls <- h_p$breaks[-1]
xi <- (li + ls) / 2
ni <- h_p$counts
hi <- ni / n
Ni <- cumsum(ni); Hi <- cumsum(hi)
Ni_desc <- n - Ni + ni; Hi_desc <- 1 - Hi + hi
TDF_9_COL <- data.frame(LI=li, LS=ls, Xi=xi, ni=ni, hi=round(hi,4),
Ni=Ni, Hi=round(Hi,4), Ni_desc=Ni_desc, Hi_desc=round(Hi_desc,4))
cat("\n>>> PASO 5: TABLA DE FRECUENCIAS (9 COLUMNAS) <<<\n")
##
## >>> PASO 5: TABLA DE FRECUENCIAS (9 COLUMNAS) <<<
print(TDF_9_COL)
## LI LS Xi ni hi Ni Hi Ni_desc Hi_desc
## 1 25946.0 316940.1 171443.1 1869 0.1628 1869 0.1628 11480 1.0000
## 2 316940.1 607934.3 462437.2 2004 0.1746 3873 0.3374 9611 0.8372
## 3 607934.3 898928.4 753431.4 1856 0.1617 5729 0.4990 7607 0.6626
## 4 898928.4 1189922.6 1044425.5 1476 0.1286 7205 0.6276 5751 0.5010
## 5 1189922.6 1480916.7 1335419.6 1101 0.0959 8306 0.7235 4275 0.3724
## 6 1480916.7 1771910.9 1626413.8 776 0.0676 9082 0.7911 3174 0.2765
## 7 1771910.9 2062905.0 1917407.9 573 0.0499 9655 0.8410 2398 0.2089
## 8 2062905.0 2353899.1 2208402.1 430 0.0375 10085 0.8785 1825 0.1590
## 9 2353899.1 2644893.3 2499396.2 371 0.0323 10456 0.9108 1395 0.1215
## 10 2644893.3 2935887.4 2790390.4 283 0.0247 10739 0.9355 1024 0.0892
## 11 2935887.4 3226881.6 3081384.5 240 0.0209 10979 0.9564 741 0.0645
## 12 3226881.6 3517875.7 3372378.6 194 0.0169 11173 0.9733 501 0.0436
## 13 3517875.7 3808869.9 3663372.8 156 0.0136 11329 0.9868 307 0.0267
## 14 3808869.9 4099864.0 3954366.9 151 0.0132 11480 1.0000 151 0.0132
# PASO 6: ESTIMACI??N DE PAR??METROS (LOG-NORMAL)
# mu y sigma son los par??metros logar??tmicos necesarios para graficar la curva roja.
log_prod <- log(prod_v[prod_v > 0])
media_log <- mean(log_prod)
sd_log <- sd(log_prod)
# PASO 7: HISTOGRAMA DE DENSIDAD Y MODELO
# Superponemos la distribuci??n te??rica (curva roja) sobre los datos reales (barras amarillas).
hist(prod_v, freq = FALSE, breaks = cortes, col = "yellow",
main = "Grafica Nro. 1: Densidad de Producci??n y Modelo Log-Normal",
xlab = "Producci??n Total", ylab = "Densidad", las = 1)
curve(dlnorm(x, meanlog = media_log, sdlog = sd_log), col = "red", lwd = 2, add = TRUE)

# PASO 7.5: RESUMEN DE PAR??METROS E INFERENCIA COMENTADA
# Interpretaci??n de la tabla:
# 1. mu/sigma: Centro y dispersi??n en escala logar??tmica (para el modelo).
# 2. Media Original: El promedio real de producci??n (ej: 1.3e+09 = 1,300 millones).
# 3. IC 95%: El rango donde se encuentra el promedio verdadero con un 95% de confianza.
media_original <- exp(media_log + (sd_log^2)/2)
error_std <- qnorm(0.975) * sd_log / sqrt(n)
LI_ci <- exp(media_log - error_std)
LS_ci <- exp(media_log + error_std)
cat("\n>>> PASO 7.5: RESUMEN DE PAR??METROS E INFERENCIA <<<\n")
##
## >>> PASO 7.5: RESUMEN DE PAR??METROS E INFERENCIA <<<
resumen_inf <- data.frame(
Indicador = c("Media Logar??tmica (mu)", "Desv. Est. Logar??tmica (sigma)",
"Media Escala Original", "IC 95% Inferior", "IC 95% Superior"),
Valor = c(round(media_log, 4), round(sd_log, 4), round(media_original, 2),
round(LI_ci, 2), round(LS_ci, 2))
)
print(resumen_inf, row.names = FALSE)
## Indicador Valor
## Media Logar??tmica (mu) 13.5929
## Desv. Est. Logar??tmica (sigma) 0.9454
## Media Escala Original 1251456.7200
## IC 95% Inferior 786720.6000
## IC 95% Superior 814407.7600
# PASO 8: VALIDACI??N (ESTRATEGIA hi)
# Comparamos hi (frecuencia observada) vs Pi (probabilidad esperada bajo la curva).
FO_rel <- hi
Pi <- sapply(1:length(li), function(i) {
plnorm(ls[i], media_log, sd_log) - plnorm(li[i], media_log, sd_log)
})
FE_rel <- Pi
FE_rel[FE_rel < 0.000001] <- 0.000001
# Pearson (r): Mide qu?? tan parecidas son las barras y la curva (debe ser > 0.90).
# Chi-cuadrado (X2): Valida si la diferencia es estad??sticamente peque??a.
r_pearson <- cor(FO_rel, FE_rel)
x2_valor <- sum((FO_rel - FE_rel)^2 / FE_rel)
df_libertad <- length(FO_rel) - 1 - 2
vc_chi <- qchisq(0.999, df_libertad)
cat("\n>>> PASO 8: TABLA VEREDICTO FINAL (BASADO EN hi) <<<\n")
##
## >>> PASO 8: TABLA VEREDICTO FINAL (BASADO EN hi) <<<
tabla_veredicto <- data.frame(
Prueba = c("Coeficiente de Pearson (r)", "Prueba Chi-Cuadrado (X2)"),
Valor_Obtenido = c(round(r_pearson, 4), round(x2_valor, 6)),
Criterio_Referencia = c("r >= 0.90", paste("X2 <", round(vc_chi, 2))),
Resultado = c(ifelse(r_pearson >= 0.90, "APROBADO", "REPROBADO"),
ifelse(x2_valor < vc_chi, "APROBADO", "REPROBADO"))
)
print(tabla_veredicto, row.names = FALSE)
## Prueba Valor_Obtenido Criterio_Referencia Resultado
## Coeficiente de Pearson (r) 0.982000 r >= 0.90 APROBADO
## Prueba Chi-Cuadrado (X2) 0.036757 X2 < 31.26 APROBADO
# APLICACI??N: Probabilidad basada en el modelo inferencial.
limite_prob <- mean(prod_v)
prob_mayor <- (1 - plnorm(limite_prob, media_log, sd_log)) * 100
cat("\n8. PREGUNTA: Probabilidad de que la producci??n sea mayor a la media:", round(prob_mayor, 2), "%\n")
##
## 8. PREGUNTA: Probabilidad de que la producci??n sea mayor a la media: 35.02 %