ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

                    #==============================ENCABEZADO================================
                    # TEMA: ESTADÍSTICA DESCRIPTIVA - VIDA ESTIMADA
                    # AUTOR: GRUPO 3
                    # FECHA: 03-2026
                    #========================================================================
library(gt)
library(dplyr)
library(e1071)
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")

2. TABLA DE DISTRIBUCIÓN DE CANTIDAD CON STURGES

vida_util <- datos$Estimated.lifetime
n <- length(na.omit(vida_util))
k_sturges <- 1 + (3.322 * log10(n))
k_sturges
## [1] 14.61696
clasificacion_sturges <- cut(vida_util, breaks = k_sturges, right = FALSE)

#Cálculos de frecuencias para Sturges
ni_sturges <- table(clasificacion_sturges)
total_datos_sturges <- sum(ni_sturges)
hi_sturges <- round(as.numeric(ni_sturges) / total_datos_sturges * 100, 2) 

# Construcción de la Tabla Sturges
TDF_Sturges <- data.frame(
  Intervalo =gsub(",","-", names(ni_sturges)), 
  ni = as.numeric(ni_sturges), 
  hi = hi_sturges
)

TDF_Final_Sturges <- rbind(
  TDF_Sturges, 
  data.frame(Intervalo="TOTAL", ni=total_datos_sturges, hi=100)
)

# 5. Renderizar Tabla Sturges con gt()
TDF_Final_Sturges %>%
  gt() %>%
  tab_header(title = md("Tabla N°1. Tabla de distribucion de la vida util estimada de los pozos de gas natural en Nuevo Mexico")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = list(
      cells_body(rows = Intervalo == "TOTAL"),
      cells_title(groups = "title")
    )
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(table.width = pct(100), column_labels.font.weight = "bold")%>%
  tab_source_note(
    source_note = md("**Tabla 1 de 4**"))
Tabla N°1. Tabla de distribucion de la vida util estimada de los pozos de gas natural en Nuevo Mexico
Intervalo ni hi
[25-28.4) 178 1.42
[28.4-31.9) 0 0.00
[31.9-35.3) 0 0.00
[35.3-38.7) 0 0.00
[38.7-42.1) 0 0.00
[42.1-45.6) 0 0.00
[45.6-49) 0 0.00
[49-52.4) 10346 82.37
[52.4-55.9) 174 1.39
[55.9-59.3) 334 2.66
[59.3-62.7) 291 2.32
[62.7-66.1) 555 4.42
[66.1-69.6) 402 3.20
[69.6-73) 281 2.24
TOTAL 12561 100.00
Tabla 1 de 4
par(mar = c(8.5, 4.1, 4.1, 2.1))
# Gráfica con sturges
barplot(ni_sturges, 
        names.arg = gsub(",", " - ", names(ni_sturges)), 
        las = 2, 
        col = "darkgrey", 
        ylim = c(0, max(ni_sturges)+2),
        xlab = "Vida util Estimada", 
        ylab = "Cantidad",
        main = "Grafica N°1: Distribucion de cantidad de la vida util Estimada
        de los pozos de gas natural en Nuevo Mexico")
box(which = "outer", col = "black")

3. TABLA DE DISTRIBUCIÓN DE CANTIDAD AGRUPADA

Debido a que la Tabla y la gráfica contenían valores con decimales, la hemos simplificado

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=" ", Hi_asc=" ", Ni_des=" ", Hi_des=" "))
TDF_Final %>%
  gt() %>%
  tab_header(title = md("Tabla N°2. Tabla de distribucion de cantidad de la vida util
                        estimada de los pozos de gas natural en Nuevo Mexico")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = list(
      cells_body(rows = Intervalo == "TOTAL"),
      cells_title(groups = "title")
    )
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(table.width = pct(100), column_labels.font.weight = "bold")%>%
  tab_source_note(
    source_note = md("**Tabla 2 de 4**"))
Tabla N°2. Tabla de distribucion de cantidad de la vida util estimada de los pozos de gas natural en Nuevo Mexico
Intervalo ni hi Ni_asc Hi_asc Ni_des Hi_des
25-32 178 1.42 178 1.42 12561 100
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.7 12383 98.58
57-64 817 6.50 11581 92.2 1797 14.3
65-75 980 7.80 12561 100 980 7.8
TOTAL 12561 100.00
Tabla 2 de 4

4. GRÁFICAS DE DISTRIBUCIÓN DE CANTIDAD

color_abs <- "#76D7C4" 
color_rel <- "#F1948A" 
par(oma = c(1, 1, 1, 1))
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°2: Distribucion de cantidad de la vida util Estimada
        de los pozos de gas natural en Nuevo Mexico")
box(which = "outer", col = "black")

#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°3: Distribucion de cantidad de la vida util estimada
        de los pozos de gas natural en Nuevo Mexico")
box(which = "outer", col = "black")

#Grafica 3: Relativa local
barplot(hi, names.arg = orden_intervalos, las = 2, col = color_rel, 
        xlab = "Vida util Estimada", ylab = "Porcentaje (%)",
        main = "Grafica N°4: Distribucion de cantidad en porcentaje de 
        la vida util estimada de los pozos de gas natural en 
        Nuevo Mexico")
box(which = "outer", col = "black")

#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°5: Distribucion de cantidad en porcentaje de la vida
        util estimada de los pozos de gas natural en Nuevo Mexico")
posicion_x <- 1:length(ni)
box(which = "outer", col = "black")

#Grafica 5: Ojivas Ni
plot(posicion_x, Ni_asc, type = "o", pch = 1, col = "blue", xaxt = "n", 
     xlab = "Vida util Estimada", ylab = "Cantidad acumulada (Ni)",
     main = "Grafica N°6: Ojivas combinadas de la vida util estimada (Ni)")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2)
lines(posicion_x, Ni_des, type = "o", pch = 1, col = "red")
legend("right", legend = c("Ascendente", "Descendente"), col = c("blue", "red"), pch = c(1, 1), bty = "n")
box(which = "outer", col = "black")

#Grafica 6: Ojivas Hi
plot(posicion_x, Hi_asc, type = "o", pch = 1, col = "blue", xaxt = "n", ylim = c(0, 100), 
     xlab = "Vida util Estimada", ylab = "Porcentaje acumulado (Hi)",
     main = "Grafica N°7: Ojivas combinadas de la vida util estimada (Hi)")
axis(1, at = posicion_x, labels = orden_intervalos, las = 2)
lines(posicion_x, Hi_des, type = "o", pch = 1, col = "red")
legend("right", legend = c("Ascendente", "Descendente"), col = c("blue", "red"), pch = c(1, 1), bty = "n")
box(which = "outer", col = "black")

#Grafica 7: Boxplot
boxplot(vida_util, horizontal = TRUE, col = "lightblue", 
        xlab = "Vida util Estimada", main = "Grafica N°8: Distribucion de cantidad de la vida util
        estimada de los pozos de gas natural en Nuevo Mexico")
box(which = "outer", col = "black")

summary(vida_util)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   25.00   50.00   50.00   51.86   50.00   73.00

5. INDICADORES ESTADÍSTICOS

#media
media_x <- mean(vida_util, na.rm = TRUE)
media_x
## [1] 51.86331
#minimo
val_min <- min(vida_util, na.rm = TRUE)
val_min
## [1] 25
#maximo
val_max <- max(vida_util, na.rm = TRUE)
val_max
## [1] 73
#mediana
mediana_Me <- median(vida_util, na.rm = TRUE)
mediana_Me
## [1] 50
#desviacion estandart
desv_estandar <- sd(vida_util, na.rm = TRUE)
desv_estandar
## [1] 6.295903
#coeficiente
coef_variacion <- ((desv_estandar / media_x) * 100)
coef_variacion
## [1] 12.13942
#asimetria
asimetria_As <- skewness(vida_util, na.rm = TRUE)
asimetria_As
## [1] 0.5076765
#curtosis
curtosis_K <- kurtosis(vida_util, na.rm = TRUE)
curtosis_K
## [1] 5.8894
#================TABLA DE INDICADORES================
TablaIndicadores <- data.frame(Variable = "Vida Util Estimada", minimo = val_min, maximo = val_max, x = round(media_x, 2), 
                               Me = mediana_Me, sd = round(desv_estandar, 2), 
                               Cv = round(coef_variacion, 2), As = round(asimetria_As, 2), K = round(curtosis_K, 2))

TablaIndicadores %>%
  gt() %>%
  tab_header(title = md("Tabla N°3. Indicadores estadisticos de la variable vida util
  estimada de los pozos de gas natural en Nuevo Mexico")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_title(groups = "title")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_source_note(
    source_note = md("**Tabla 3 de 4**")
  ) %>%
  tab_options(
    column_labels.font.weight = "bold" # Subtítulos de columnas en negrita
  )
Tabla N°3. Indicadores estadisticos de la variable vida util estimada de los pozos de gas natural en Nuevo Mexico
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 3 de 4
#=====================TABLA DE 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(Outliers = n_atipicos, Minimo = min_atipico, Maximo = max_atipico)

TablaOutliers %>%
  gt() %>%
  tab_header(title = md("Tabla N°4. Outliers de la variable vida util 
                        estimada de los pozos de gas natural en Nuevo Mexico")) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_title(groups = "title")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_source_note(
    source_note = md("**Tabla 4 de 4**")
  ) %>%
  tab_options(
    column_labels.font.weight = "bold" # Subtítulos de columnas en negrita
  )
Tabla N°4. Outliers de la variable vida util estimada de los pozos de gas natural en Nuevo Mexico
Outliers Minimo Maximo
2352 25 73
Tabla 4 de 4

6.CONCLUSIÓN

La variable vida útil estimada presenta valores que fluctúan entre 25 y 73, con una concentración en torno a la mediana de 50. La desviación estándar de 6.3 indica que se trata de un conjunto homogéneo, a pesar de la presencia de 2352 valores atípicos ubicados en el extremo derecho de la distribución. Esta concentración central evidencia que más del 80% de los pozos proyectan una vida útil en torno a los 50 años, un comportamiento altamente beneficioso ya que una mayor longevidad optimiza la produccion