#==============================ENCABEZADO===================================
# TEMA: EI Variables Continua - ENERGIA DEL GAS
# AUTOR: GRUPO 4
# FECHA: 08-02-2026
# --- PASO 0: CARGA Y CONFIGURACI??N ---
# Establecemos la ruta de la carpeta donde se encuentra el archivo tablap.csv.
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ".", sep = ";")
# --- PASO 0.1: LIMPIEZA DE DATOS ---
# Se limpian caracteres no num??ricos y se eliminan valores nulos (NA).
ene_raw <- as.numeric(gsub("[^0-9.]", "", as.character(datos$Energy.of.gas)))
ene_raw <- na.omit(ene_raw)
# --- PASO 3: FILTRADO (SUBSET) ---
# Se filtran outliers usando el criterio de Boxplot (Bigotes superiores e inferiores).
# Esto asegura que el modelo se ajuste al comportamiento real del yacimiento y no a errores.
caja_ene <- boxplot(ene_raw, plot = FALSE)
ene_v <- ene_raw[ene_raw >= caja_ene$stats[1] & ene_raw <= caja_ene$stats[5]]
n <- length(ene_v)
# --- PASO 4 Y 5: TABLA DE FRECUENCIAS ---
# Se calcula el n??mero de clases 'k' mediante la Regla de Sturges.
k <- round(1 + 3.322 * log10(n))
h_p <- hist(ene_v, breaks = k, plot = FALSE)
# Se construye la tabla de 9 columnas para el an??lisis descriptivo profundo.
# hi (frecuencia relativa) es vital para comparar los datos con el modelo te??rico.
li <- h_p$breaks[-length(h_p$breaks)]; ls <- h_p$breaks[-1]
ni <- h_p$counts; hi <- ni / n
TDF_9_COL <- data.frame(LI=li, LS=ls, Xi=(li+ls)/2, ni=ni, hi=round(hi,4),
Ni=cumsum(ni), Hi=round(cumsum(hi),4),
Ni_desc=n-cumsum(ni)+ni, Hi_desc=round(1-cumsum(hi)+hi,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 0.0e+00 5.0e+08 2.50e+08 2880 0.2509 2880 0.2509 11480 1.0000
## 2 5.0e+08 1.0e+09 7.50e+08 2993 0.2607 5873 0.5116 8600 0.7491
## 3 1.0e+09 1.5e+09 1.25e+09 2131 0.1856 8004 0.6972 5607 0.4884
## 4 1.5e+09 2.0e+09 1.75e+09 1241 0.1081 9245 0.8053 3476 0.3028
## 5 2.0e+09 2.5e+09 2.25e+09 764 0.0666 10009 0.8719 2235 0.1947
## 6 2.5e+09 3.0e+09 2.75e+09 586 0.0510 10595 0.9229 1471 0.1281
## 7 3.0e+09 3.5e+09 3.25e+09 384 0.0334 10979 0.9564 885 0.0771
## 8 3.5e+09 4.0e+09 3.75e+09 295 0.0257 11274 0.9821 501 0.0436
## 9 4.0e+09 4.5e+09 4.25e+09 206 0.0179 11480 1.0000 206 0.0179
# --- PASO 6 Y 7: ESTIMACI??N Y MODELADO ---
# Se calculan los par??metros mu (media log) y sigma (desv log) de la Log-Normal.
meanlog_ene <- mean(log(ene_v))
sdlog_ene <- sd(log(ene_v))
# Grafica Nro. 1: Visualizaci??n del ajuste del modelo sobre los datos filtrados.
hist(ene_v, freq = FALSE, breaks = k, col = "lightblue",
main = "Grafica Nro. 1: Densidad y Modelo Log-Normal (Energ??a)",
xlab = "Energy of Gas", ylab = "Densidad", las = 1)
curve(dlnorm(x, meanlog_ene, sdlog_ene), col = "red", lwd = 2, add = TRUE)

# --- PASO 7.5: EXPLICACI??N DE INDICADORES DE INFERENCIA ---
# Interpretaci??n para el informe:
# 1. mu/sigma: Par??metros t??cnicos que definen la curva en escala logar??tmica.
# 2. Media Escala Original: Es el valor promedio real (ej: 1.35e+09 = 1,350 millones).
# 3. IC 95% Inferior/Superior: El rango de seguridad donde estimamos que se encuentra
# la verdadera media de energ??a de todos los pozos analizados.
media_original <- exp(meanlog_ene + (sdlog_ene^2)/2)
error_std <- qnorm(0.975) * sdlog_ene / sqrt(n)
# Ajustamos los l??mites para que representen la media en la escala original.
LI_ci <- exp(meanlog_ene - error_std + (sdlog_ene^2)/2)
LS_ci <- exp(meanlog_ene + error_std + (sdlog_ene^2)/2)
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(meanlog_ene, sdlog_ene, media_original, LI_ci, LS_ci)
)
print(resumen_inf, row.names = FALSE)
## Indicador Valor
## Media Logar??tmica (mu) 2.058183e+01
## Desv. Est. Logar??tmica (sigma) 9.454061e-01
## Media Escala Original 1.357247e+09
## IC 95% Inferior 1.333976e+09
## IC 95% Superior 1.380923e+09
# --- PASO 8: VEREDICTO FINAL ---
# Comparamos la frecuencia observada (hi) contra la probabilidad te??rica (Pi).
FO_rel <- hi
Pi <- plnorm(ls, meanlog_ene, sdlog_ene) - plnorm(li, meanlog_ene, sdlog_ene)
Pi[Pi <= 0] <- 1e-9
# X2 (Chi-Cuadrado): Valida si el modelo Log-Normal es representativo (P-valor alto).
x2_valor <- sum((FO_rel - Pi)^2 / Pi)
vc_chi <- qchisq(0.999, length(FO_rel) - 3)
r_pearson <- cor(FO_rel, Pi)
cat("\n>>> PASO 8: TABLA VEREDICTO FINAL <<<\n")
##
## >>> PASO 8: TABLA VEREDICTO FINAL <<<
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.991800 r >= 0.90 APROBADO
## Prueba Chi-Cuadrado (X2) 0.028522 X2 < 22.46 APROBADO