1 IDENTIFICACIÓN Y JUSTIFICACIÓN DE LA VARIABLE

\(Variable\) \(de\) \(Estudio\): Fecha de Finalización del Pozo (Date Well Completed).

  1. Muy antiguas (1900 – 1925): periodo con muy pocos registros.

  2. Antiguas (1925 – 1950): representación baja en el histórico.

  3. Medias (1950 – 1976): representación intermedia.

  4. Recientes (1976 – 2001): concentra la mayoría de los pozos.

  5. Muy recientes (2001 – 2026): segunda mayor representación, con perforaciones vigentes o recientes.

2 CARGA DE DATOS

##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTORES: DALLYANA LOZANO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####
#### VARIABLE: FECHA DE FINALIZACIÓN DEL POZO ####
suppressPackageStartupMessages({
  library(tidyverse)
  library(readxl)
  library(gt)
  library(dplyr)
  library(readr)
  library(lubridate) 
})

Datos <- read_delim("Dataset.csv", delim = ";", escape_double = FALSE, trim_ws = TRUE, show_col_types = FALSE)

3 EXTRAER VARIABLE

Extraemos la variable Date Well Completed, omitimos las celdas en blanco y verificamos el tamaño muestral.

suppressPackageStartupMessages({
  library(lubridate)
  library(dplyr)
})

anios_raw_comp <- Datos$`Completion Year`
anios_validos_comp <- anios_raw_comp[!is.na(anios_raw_comp) & anios_raw_comp != ""]
Anios_limpios_comp <- as.numeric(anios_validos_comp)
## Warning: NAs introducidos por coerción
Anios_limpios_comp <- Anios_limpios_comp[!is.na(Anios_limpios_comp)]

Fecha_Comp <- cut(Anios_limpios_comp,
                breaks = 5,
                labels = c("Muy antiguas",
                           "Antiguas",
                           "Medias",
                           "Recientes",
                           "Muy recientes"),
                ordered_result = TRUE)

conteo_comp <- table(Fecha_Comp)
ni_comp <- as.numeric(conteo_comp)
hi_comp <- (ni_comp / sum(ni_comp)) * 100

4 TABLAS DE DISTRIBUCIÓN DE FRECUENCIA

4.1 DISTRIBUCIÓN DE FRECUENCIAS DE LA FECHA DE SOLICITUD DE PERMISO

Se extrajo la variable de año de finalización del pozo (Completion Year) para determinar su frecuencia absoluta(\(n_i\)) y el porcentaje relativo (\(hi\)) respecto al total, agrupando los registros en cinco rangos de igual amplitud: Muy antiguas, Antiguas, Medias, Recientes y Muy recientes.

df_comp_final <- data.frame(
  Tipo = names(conteo_comp),
  ni = as.character(ni_comp),
  hi = as.character(round(hi_comp, 2))
)

fila_total_comp <- data.frame(
  Tipo = "TOTAL",
  ni = as.character(sum(ni_comp)),
  hi = as.character(round(sum(hi_comp), 2))
)

df_show_comp_1 <- bind_rows(df_comp_final, fila_total_comp)

df_show_comp_1 %>%
  gt() %>%
  tab_header(
    title = md("**TABLA Nº 1: DISTRIBUCIÓN DE FRECUENCIAS DEL AÑO DE FINALIZACIÓN DEL POZO**")
  ) %>%
  cols_label(
    Tipo = "Rango de Finalización del Pozo", 
    ni = "ni", 
    hi = "hi (%)"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#D0ECE7"), cell_text(weight = "bold")),
    locations = cells_body(rows = Tipo == "TOTAL")
  ) %>%
  tab_options(
    table.width = pct(90),                    
    data_row.padding = px(12),                
    column_labels.padding = px(15),          
    table.border.top.style = "solid",
    table.border.top.color = "#2E4053",
    table.border.bottom.style = "solid",
    table.border.bottom.color = "#2E4053"
  )
TABLA Nº 1: DISTRIBUCIÓN DE FRECUENCIAS DEL AÑO DE FINALIZACIÓN DEL POZO
Rango de Finalización del Pozo ni hi (%)
Muy antiguas 1380 6.14
Antiguas 2515 11.19
Medias 4635 20.63
Recientes 9100 40.49
Muy recientes 4842 21.55
TOTAL 22472 100

4.2 ASIGNACIÓN JERÁRQUICA

Se incorporó una asignación jerárquica ordinal y se consolidó la información en un data frame estructurado para su presentación formal.

conteo_comp_j <- table(Fecha_Comp)
ni_comp_j <- as.numeric(conteo_comp_j)
hi_comp_j <- (ni_comp_j / sum(ni_comp_j)) * 100

df_comp_jerarquia <- data.frame(
  Asignacion = as.character(1:length(conteo_comp_j)),
  Tipo = names(conteo_comp_j),
  ni = as.character(ni_comp_j),
  hi = as.character(round(hi_comp_j, 2))
)

fila_total_comp_j <- data.frame(
  Asignacion = "TOTAL",
  Tipo = "",
  ni = as.character(sum(ni_comp_j)),
  hi = as.character(round(sum(hi_comp_j), 2))
)

df_show_comp_2 <- bind_rows(df_comp_jerarquia, fila_total_comp_j)

df_show_comp_2 %>%
  gt() %>%
  tab_header(
    title = md("**TABLA Nº 2: ASIGNACIÓN JERÁRQUICA DEL AÑO DE FINALIZACIÓN DEL POZO**")
  ) %>%
  cols_label(
    Asignacion = "Asignación", 
    Tipo = "Rango de Años", 
    ni = "ni", 
    hi = "hi (%)"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#D0ECE7"), cell_text(weight = "bold")),
    locations = cells_body(rows = Asignacion == "TOTAL")
  ) %>%
  tab_options(
    table.width = pct(90),                    
    data_row.padding = px(12),                
    column_labels.padding = px(15),          
    table.border.top.style = "solid",
    table.border.top.color = "#2E4053",
    table.border.bottom.style = "solid",
    table.border.bottom.color = "#2E4053"
  )
TABLA Nº 2: ASIGNACIÓN JERÁRQUICA DEL AÑO DE FINALIZACIÓN DEL POZO
Asignación Rango de Años ni hi (%)
1 Muy antiguas 1380 6.14
2 Antiguas 2515 11.19
3 Medias 4635 20.63
4 Recientes 9100 40.49
5 Muy recientes 4842 21.55
TOTAL 22472 100

5 REPRESENTACIÓN GRÁFICA

5.1 DIAGRAMA DE BARRAS - FRECUENCIA ABSOLUTA

par(mar = c(7, 4, 4, 2))
barplot(as.numeric(df_comp_final$ni),
        main = "GRÁFICO Nº 1: DISTRIBUCIÓN DEL AÑO DE FINALIZACIÓN DEL POZO",
        ylab = "Cantidad de Pozos",
        col = "#B0C4DE",      
        names.arg = df_comp_final$Tipo, 
        las = 2,            
        cex.names = 0.8,      
        cex.axis = 0.8,      
        cex.main = 1.1,        
        ylim = c(0, max(as.numeric(df_comp_final$ni), na.rm = TRUE) + max(as.numeric(df_comp_final$ni), na.rm = TRUE) * 0.1)) 
mtext("Rango de Año de Finalización", side = 1, line = 6)

5.2 DIAGRAMA DE BARRAS - FRECUENCIA RELATIVA

par(mar = c(5, 4, 4, 2))

barplot(as.numeric(df_comp_jerarquia$hi),
        main = "GRÁFICO Nº 2: PORCENTAJE DEL AÑO DE FINALIZACIÓN DEL POZO",
        ylab = "Porcentaje (%)",
        col = "#B0C4DE",      
        names.arg = df_comp_jerarquia$Asignacion, 
        las = 1,            
        cex.names = 1.0,      
        cex.axis = 0.8,      
        cex.main = 1.1,        
        ylim = c(0, max(as.numeric(df_comp_jerarquia$hi), na.rm = TRUE) + 10)) 

mtext("Asignación", side = 1, line = 3)

6 CONJETURA DEL MODELO

Se validó el año de finalización (Completion Year) de los pozos mediante una Distribución Normal \(𝑁(𝜇,𝜎)\), ya que la Binomial no se ajustó adecuadamente (Chi-cuadrado por encima del valor crítico). La forma de campana de la distribución observada sugiere un mejor ajuste con un modelo continuo simétrico.

n_total_Comp <- sum(as.numeric(df_comp_jerarquia$ni))
media_comp <- sum((1:5) * as.numeric(df_comp_jerarquia$ni)) / n_total_Comp
var_comp <- sum(as.numeric(df_comp_jerarquia$ni) * ((1:5) - media_comp)^2) / n_total_Comp
sd_comp <- sqrt(var_comp)

# Probabilidad de cada categoría bajo la curva Normal
limites_comp <- c(-Inf, 1.5, 2.5, 3.5, 4.5, Inf)
prob_normal_comp <- diff(pnorm(limites_comp, mean = media_comp, sd = sd_comp))
P_Normal_Comp <- prob_normal_comp * 100

par(mar = c(9, 4, 4, 2))
max_y_comp <- max(max(as.numeric(df_comp_jerarquia$hi)), max(P_Normal_Comp))
barplot(rbind(as.numeric(df_comp_jerarquia$hi), P_Normal_Comp), 
        beside = TRUE,
        main = "GRÁFICO Nº 3: Comparado de lo Observado frente a lo Esperado del Año de Finalización",
        ylab = "Porcentaje (%)",
        names.arg = df_comp_jerarquia$Asignacion, 
        col = c("#B0C4DE", "#AED6F1"), 
        ylim = c(0, max_y_comp + 25), 
        las = 1, 
        cex.names = 0.9,
        cex.main = 0.85)
legend("topright", 
       legend = c("Realidad", "Modelo"), 
       fill = c("#B0C4DE", "#AED6F1"), 
       bty = "n", cex = 0.8)
mtext("Rango de Año de Finalización", side = 1, line = 6)

7 TEST DE PEARSON

Fo_C <- as.numeric(df_comp_jerarquia$hi)
Fe_C <- P_Normal_Comp 
test_correlacion_comp <- cor.test(Fo_C, Fe_C)
r_valor_comp <- round(test_correlacion_comp$estimate, 4)
par(mar = c(5, 5, 4, 2)) 
plot(Fo_C, Fe_C, 
     main = "GRÁFICO Nº 4: CORRELACIÓN DEL MODELO NORMAL - AÑO DE FINALIZACIÓN",
     cex.main = 0.85,
     xlab = "Frecuencia Observada (%)", 
     ylab = "Frecuencia Esperada (%)", 
     pch = 19,            
     col = "#2E4053",    
     cex = 1.5)         
abline(lm(Fe_C ~ Fo_C), col = "red", lwd = 2)
text(x = min(Fo_C), y = max(Fe_C), 
     labels = paste("r =", r_valor_comp), 
     pos = 4, font = 2, col = "#2E4053")

Correlacion_C <- cor(Fo_C, Fe_C) * 100
Correlacion_C
## [1] 87.14688

8 TEST DE CHI-CUADRADO

x2_C <- sum(((Fo_C - Fe_C)^2) / Fe_C)
gl_C <- length(Fo_C) - 1 - 2   # -2 por los parámetros estimados: media y sd
vc_C <- qchisq(0.99, gl_C)
cat("Estadístico Chi-cuadrado (Calculado):", round(x2_C, 4), "\n")
## Estadístico Chi-cuadrado (Calculado): 8.3641
cat("Valor Crítico (Tabla):", round(vc_C, 4), "\n")
## Valor Crítico (Tabla): 9.2103
cat("¿Se acepta el modelo? (Calculado < Crítico):", x2_C < vc_C, "\n")
## ¿Se acepta el modelo? (Calculado < Crítico): TRUE

9 TABLA RESUMEN DE BONDAD DEL AJUSTE

tabla_resumen_C <- data.frame(
  Variable = "Año de Finalización del Pozo",
  Pearson = round(Correlacion_C, 2),
  Chi2    = round(x2_C, 4),
  Umbral  = round(vc_C, 2),
  Resultado = ifelse(x2_C < vc_C, "Modelo Aceptado", "Modelo Rechazado")
)
tabla_resumen_C %>% 
  gt() %>% 
  tab_header(
    title = md("**TABLA Nº 3: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD**")
  ) %>%
  cols_label(
    Variable = "Variable",        
    Pearson  = "Test Pearson (%)",
    Chi2     = "Chi Cuadrado", 
    Umbral   = "Umbral de Aceptación",
    Resultado = "Resultado Final"
  ) %>%
  tab_source_note(
    source_note = "Autor: Dallyana Lozano"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.width = pct(95),
    table.border.top.color = "#2E4053",
    table.border.bottom.color = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding = px(10) 
  )
TABLA Nº 3: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado Final
Año de Finalización del Pozo 87.15 8.3641 9.21 Modelo Aceptado
Autor: Dallyana Lozano

10 CÁLCULO DE PROBABILIDADES

  1. ¿Cuál es la probabilidad de que el año de finalización de un pozo seleccionado al azar corresponda al rango “Recientes”?
prob_alta_comp <- df_comp_final$hi[4]
prob_alta_comp
## [1] "40.49"

La probabilidad de que un pozo tenga su año de finalización en el rango Recientes (1976-2001) es de aproximadamente 40.49%.

  1. ¿Cuál es la probabilidad de que corresponda al rango “Muy antiguas”?
prob_baja_comp <- df_comp_final$hi[1]
prob_baja_comp
## [1] "6.14"

La probabilidad de encontrar pozos en el rango Muy antiguas (1900-1925) es de 6.14%..

11 CONCLUSIÓN

El modelo Normal N(μ,σ) se ajustó adecuadamente a la variable Año de Finalización del Pozo, confirmando el patrón de campana observado en la distribución (crecimiento, pico y declive). La mayor concentración de pozos se ubica en los rangos Recientes (40.5%) y Muy recientes (21.6%), reflejando el periodo de mayor actividad de perforación dentro del bloque.