ANÁLISIS ESTADÍSTICO: VIDA ÚTIL

1. CARGA DE DATOS Y LIBRERÍAS

library(knitr)
library(dplyr)
library(e1071)

# Ajusta la ruta segun sea necesario
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")

# Definicion de la variable
vida_util <- datos$Estimated.lifetime

2. TABLA DE DISTRIBUCION AGRUPADA

# Clasificacion manual en rangos de 8 anios
clasificacion <- character(length(vida_util))

for(i in seq_along(vida_util)){
  if(!is.na(vida_util[i])){
    if(vida_util[i] >= 25 & vida_util[i] < 33){
      clasificacion[i] <- "25-32"
    } else if(vida_util[i] >= 33 & vida_util[i] < 41){
      clasificacion[i] <- "33-40"
    } else if(vida_util[i] >= 41 & vida_util[i] < 49){
      clasificacion[i] <- "41-48"
    } else if(vida_util[i] >= 49 & vida_util[i] < 57){
      clasificacion[i] <- "49-56"
    } else if(vida_util[i] >= 57 & vida_util[i] < 65){
      clasificacion[i] <- "57-64"
    } else if(vida_util[i] >= 65 & vida_util[i] <= 75){
      clasificacion[i] <- "65-75"
    } else {
      clasificacion[i] <- NA
    }
  } else {
    clasificacion[i] <- NA
  }
}

clasificacion <- na.omit(clasificacion)
orden_intervalos <- c("25-32", "33-40", "41-48", "49-56", "57-64", "65-75")
clasificacion <- factor(clasificacion, levels = orden_intervalos)

# Calculos de frecuencias
ni <- table(clasificacion)
total_datos <- sum(ni)
hi <- round(as.numeric(ni) / total_datos * 100, 2) 
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_des <- rev(cumsum(rev(ni)))
Hi_des <- rev(cumsum(rev(hi)))

# Tabla Final
TDF_Completa <- data.frame(Intervalo = orden_intervalos, ni = as.numeric(ni), hi = hi,
                           Ni_asc = as.numeric(Ni_asc), Hi_asc = round(Hi_asc, 2),
                           Ni_des = as.numeric(Ni_des), Hi_des = round(Hi_des, 2))

TDF_Final <- rbind(TDF_Completa, data.frame(Intervalo="TOTAL", ni=total_datos, hi=100, 
                                            Ni_asc=NA, Hi_asc=NA, Ni_des=NA, Hi_des=NA))

kable(TDF_Final, format = "markdown", caption = "Tabla N.1: Frecuencias de Vida Util Estimada")
Tabla N.1: Frecuencias de Vida Util Estimada
Intervalo ni hi Ni_asc Hi_asc Ni_des Hi_des
25-32 178 1.42 178 1.42 12561 100.00
33-40 0 0.00 178 1.42 12383 98.58
41-48 0 0.00 178 1.42 12383 98.58
49-56 10586 84.28 10764 85.70 12383 98.58
57-64 817 6.50 11581 92.20 1797 14.30
65-75 980 7.80 12561 100.00 980 7.80
TOTAL 12561 100.00 NA NA NA NA

3. GRAFICAS DE DISTRIBUCION

# Colores personalizados
color_abs <- "#76D7C4" 
color_rel <- "#F1948A" 

par(mfrow=c(1,1))

# Grafica 1: Absoluta Local
barplot(ni, names.arg = orden_intervalos, las = 2, col = color_abs, 
        xlab = "Vida util estimada", ylab = "Cantidad",
        main = "Grafica N.1: Distribucion de frecuencia absoluta local")

# Grafica 2: Absoluta Global
barplot(ni, names.arg = orden_intervalos, las = 2, col = "darkgrey", 
        ylim = c(0, total_datos), xlab = "Vida util estimada", ylab = "Cantidad",
        main = "Grafica N.2: Distribucion de frecuencia absoluta global")

# Grafica 3: Relativa Local
barplot(hi, names.arg = orden_intervalos, las = 2, col = color_rel, 
        xlab = "Vida util estimada", ylab = "Porcentaje (%)",
        main = "Grafica N.3: Distribucion de frecuencia relativa local")

# Grafica 4: Relativa Global
barplot(hi, names.arg = orden_intervalos, las = 2, col = "grey50", 
        ylim = c(0, 100), xlab = "Vida util estimada", ylab = "Porcentaje (%)",
        main = "Grafica N.4: Distribucion de frecuencia relativa global")

# OJIVAS
posicion_x <- 1:length(ni)

# Grafica 5: Ojiva Ni
plot(posicion_x, Ni_asc, type = "o", pch = 19, col = "blue", xaxt = "n", 
     xlab = "Vida util estimada", ylab = "Frecuencia acumulada",
     main = "Grafica N.5: Ojivas combinadas Ni")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2)
lines(posicion_x, Ni_des, type = "o", pch = 18, col = "red")
legend("right", legend = c("Ascendente", "Descendente"), col = c("blue", "red"), pch = c(19, 18), bty = "n")

# Grafica 6: Ojiva Hi
plot(posicion_x, Hi_asc, type = "o", pch = 19, col = "blue", xaxt = "n", ylim = c(0, 100), 
     xlab = "Vida util estimada", ylab = "Porcentaje acumulado",
     main = "Grafica N.6: Ojivas combinadas Hi")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2)
lines(posicion_x, Hi_des, type = "o", pch = 18, col = "black")
legend("right", legend = c("Ascendente", "Descendente"), col = c("blue", "black"), pch = c(19, 18), bty = "n")

# Grafica 7: Boxplot
boxplot(vida_util, horizontal = TRUE, col = "lightblue", 
        xlab = "Anios", main = "Grafica N.7: Boxplot de Vida Util")

4. INDICADORES ESTADISTICOS

# Calculos
media_x <- mean(vida_util, na.rm = TRUE)
val_min <- min(vida_util, na.rm = TRUE)
val_max <- max(vida_util, na.rm = TRUE)
mediana_Me <- median(vida_util, na.rm = TRUE)
desv_estandar <- sd(vida_util, na.rm = TRUE)
coef_variacion <- ((desv_estandar / media_x) * 100)
asimetria_As <- skewness(vida_util, na.rm = TRUE)
curtosis_K <- kurtosis(vida_util, na.rm = TRUE)

# Tabla Indicadores
TablaIndicadores <- data.frame("Vida Util Estimada", val_min, val_max, round(media_x, 2), 
                               mediana_Me, round(desv_estandar, 2), 
                               round(coef_variacion, 2), round(asimetria_As, 2), 
                               round(curtosis_K, 2))
colnames(TablaIndicadores) <- c("Variable", "minimo", "maximo", "x", "Me", "sd", "Cv (%)", "As", "K")

kable(TablaIndicadores, format = "markdown", caption = "Tabla N.3: Indicadores estadisticos")
Tabla N.3: Indicadores estadisticos
Variable minimo maximo x Me sd Cv (%) As K
Vida Util Estimada 25 73 51.86 50 6.3 12.14 0.51 5.89
# Tabla Outliers
valores_atipicos <- boxplot.stats(vida_util)$out 
n_atipicos <- length(valores_atipicos) 
min_atipico <- if(n_atipicos > 0) min(valores_atipicos) else 0
max_atipico <- if(n_atipicos > 0) max(valores_atipicos) else 0

TablaOutliers <- data.frame(n_atipicos, min_atipico, max_atipico)
colnames(TablaOutliers) <- c("Outliers", "Minimo", "Maximo")

kable(TablaOutliers, format = "markdown", caption = "Tabla N.4: Analisis de valores atipicos")
Tabla N.4: Analisis de valores atipicos
Outliers Minimo Maximo
2352 25 73

6. CONCLUSIÓN

## La variable vida util estimada presenta valores que fluctuan entre 25 y 73, con una concentracion en torno a la mediana de 50. La desviacion estandar de 6.3 indica que se trata de un conjunto homogeneo, influenciado por la presencia de 2352 valores atipicos ubicados en el extremo derecho de la distribucion. La acumulacion de valores se encuentra en la parte alta de la variable, lo que evidencia que la mayoria de los pozos tienen una proyeccion de vida extensa. Por todo lo anterior mencionado, el comportamiento de la variable es medianamente beneficioso, debido a que una vida util prolongada permite una mejor amortizacion de los costos de perforacion y una planificacion mas estable de la produccion energetica a largo plazo.