1.Introducción y Metodología

El presente informe estadístico analiza la variable Inicio de Perforación de pozos petroleros de Brasil, aplicando técnicas descriptivas e inferenciales.

2. Tabla de distribución de frecuencia

Dado que la variable abarca casi un siglo (1920-2018), trabajar con años individuales generaría demasiado ruido estadístico. Por ello, agrupamos los datos en décadas (intervalos de 10 años). Esto nos permite visualizar la tendencia estructural y facilita el cálculo de probabilidades en los modelos continuos.

TDF_Raw <- Datos %>%
  group_by(Decada_Inicio, Periodo) %>%
  summarise(ni = n(), .groups = 'drop') %>%
  mutate(hi = round((ni / sum(ni)) * 100, 2)) %>%
  arrange(Decada_Inicio)

# --- 2. LIMPIEZA DE COLUMNAS (CORRECCIÓN AQUÍ) ---
# Usamos 'dplyr::select' para evitar el error de la línea 63
TDF_Final <- TDF_Raw %>% dplyr::select(Periodo, ni, hi)

# --- 3. FILA DE TOTALES ---
Fila_Total <- data.frame(
  Periodo = "TOTAL",
  ni = sum(TDF_Final$ni),
  hi = 100.00
)

TDF_Show_Simple <- bind_rows(TDF_Final, Fila_Total)

# --- 4. GRAFICAR TABLA ---
TDF_Show_Simple %>%
  gt() %>%
  tab_header(
    title = md("DISTRIBUCIÓN POR DÉCADAS"),
    subtitle = md("Variable: **Inicio de Perforación**")
  ) %>%
  tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
  cols_label(
    Periodo = "Periodo (Década)", 
    ni = "Frecuencia Absoluta (ni)", 
    hi = "Frecuencia Relativa (hi%)"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#1B4F72"), cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#EBF5FB"), cell_text(weight = "bold", color = "#1B4F72")),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = list(cell_text(weight = "bold")),
    locations = cells_body(rows = Periodo == "TOTAL")
  )
DISTRIBUCIÓN POR DÉCADAS
Variable: Inicio de Perforación
Periodo (Década) Frecuencia Absoluta (ni) Frecuencia Relativa (hi%)
1920 - 1929 2 0.01
1930 - 1939 7 0.02
1940 - 1949 192 0.65
1950 - 1959 840 2.84
1960 - 1969 2414 8.16
1970 - 1979 2562 8.66
1980 - 1989 9501 32.13
1990 - 1999 3670 12.41
2000 - 2009 5690 19.24
2010 - 2019 4697 15.88
TOTAL 29575 100.00
Fuente: Tabela de Poços 2018

3. Gráficas

3.1 Diagrama de barras local

A continuación, presentamos el histograma de frecuencias

ggplot(TDF_Raw, aes(x = Periodo, y = ni)) +
  geom_col(fill = "#1B4F72", width = 0.7) +
  scale_y_continuous(
    limits = c(0, max(TDF_Raw$ni) + 1000),
    breaks = seq(0, max(TDF_Raw$ni) + 1000, by = 2000)
  ) +
  labs(
    title = "Gráfica No.1: Distribución de Fecha de Inicio (Inicio) de Pozos Petroleros de Brazil",
    x = "Década",
    y = "Cantidad de Pozos"
  ) +
  theme_minimal() +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 90, vjust = 0.5),
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.title = element_text(face = "bold")
  )

4. Agrupación 1 (1920 a 1990)

Este primer periodo representa la fase histórica de crecimiento y consolidación de la industria petrolera. Durante estas décadas el comportamiento del inicio de perforaciones presenta una tendencia aproximadamente simétrica, por lo que se propone un modelo Normal.

X1 <- X[X >= 1920 & X <= 1999]

# Histograma por décadas
breaks_s1 <- seq(1920, 2000, by = 10)
h1 <- hist(X1, breaks = breaks_s1, right = FALSE, plot = FALSE)

ni1 <- h1$counts
Fo1 <- ni1 / sum(ni1)                   
dec1 <- paste(head(breaks_s1,-1), tail(breaks_s1,-1)-1, sep="-")

ylim_max <- max(ni1) * 1.25

barplot(
  ni1,
  main = "Gráfica 4.1: Frecuencia Observada (1920–1999)",
  ylab = "Frecuencia Observada (ni)",
  xlab = "Década",
  col  = "gray60", border = "white",
  names.arg = dec1, las = 2,
  ylim = c(0, ylim_max)
)
grid(nx = NA, ny = NULL, col = "gray80", lty = "dotted")

4.1 Conjetura del modelo

Calculamos los parámetros fundamentales de la distribución normal: la Media (\(\mu\)) y la Desviación Estándar (\(\sigma\)) de esta época, para generar una curva teórica y compararla con los datos reales.

# --- AJUSTE NORMAL ---
media_1 <- mean(X1)
sd_1 <- sd(X1)

# Probabilidades teóricas usando pnorm
prob_normal <- diff(pnorm(breaks_s1, mean = media_1, sd = sd_1))
Fe1 <- prob_normal / sum(prob_normal)

# Gráfico
par(mar = c(7,5,4,2))
col_real   <- "#9ecae1"
col_modelo <- "#08519c"

barplot(rbind(Fo1, Fe1), beside = TRUE, col = c(col_real, col_modelo), 
        border = NA, names.arg = dec1, las=2,
        ylim = c(0, max(c(Fo1, Fe1)) * 1.15),
        main = "Gráfica 4.2: Ajuste Distribución Normal",
        ylab = "Frecuencia Relativa")
legend("topleft", legend = c("Observado", "Modelo Normal"), fill = c(col_real, col_modelo), bty="n")

4.2 Test de Pearson

Aplicamos el coeficiente de correlación para medir qué tan fuerte es la relación lineal entre la frecuencia observada (realidad) y la esperada (modelo normal). Un valor alto indicará que el modelo describe bien la tendencia.

# Correlación
cor1 <- cor(Fo1, Fe1)
pearson_pct1 <- cor1 * 100

print(paste0("Pearson Sección 1 (%): ", round(pearson_pct1, 2), "%"))
## [1] "Pearson Sección 1 (%): 83.45%"
lim_max <- max(c(Fo1, Fe1)) * 1.05
plot(Fo1, Fe1, xlim = c(0, lim_max), ylim = c(0, lim_max),
     pch=19, col="#08519c", main="Gráfica 4.3: Pearson S1 (Normal)", xlab="Fo", ylab="Fe")
abline(0,1, col="red", lwd=2)
grid(col = "gray85", lty = "dotted")

4.3 Test de Chi-cuadrado

Se evalúa la bondad de ajuste comparando las frecuencias observadas y esperadas mediante el estadístico χ² y su valor crítico al 95%.

x2_1 <- sum((Fo1 - Fe1)^2 / Fe1)
x2_1
## [1] 0.2093672
df1 <- length(Fo1) - 1 - 2
df1
## [1] 5
vc1 <- qchisq(0.95, df1)
vc1
## [1] 11.0705

4.4 Tabla resumen de test

tabla_1 <- data.frame(
  Periodo = "1920–1999",
  Modelo = "Normal",
  `Pearson (%)` = round(pearson_pct1, 2),
  `Chi Cuadrado` = round(x2_1, 4),
  `Umbral` = round(vc1, 4),
  Decisión = ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado")
)

tabla_1 %>%
  kbl(caption = "Tabla N°2: Resumen de Bondad de Ajuste – Sección 1", align = "c") %>%
  kable_classic(full_width = FALSE, html_font = "Arial") %>%
  row_spec(0, bold = TRUE, background = "#08306B", color = "white") %>%
  row_spec(1, background = "#EFF3FF") %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, color = "#08519C", bold = TRUE) %>%
  column_spec(6, color = "darkgreen", bold = TRUE)
Tabla N°2: Resumen de Bondad de Ajuste – Sección 1
Periodo Modelo Pearson…. Chi.Cuadrado Umbral Decisión
1920–1999 Normal 83.45 0.2094 11.0705 Modelo aceptado

4.5 Calculo de Probabilidades

De cada 1,000 pozos perforados en este periodo, ¿cuántos se estimó que iniciaron operaciones antes de 1980?

p_modelo_antes_1980 <- pnorm(1980, mean = media_1, sd = sd_1)

cantidad_antes_1980 <- round(p_modelo_antes_1980 * 1000, 0)

cantidad_antes_1980
## [1] 466

El modelo Normal estima que, por cada 1,000 pozos de la etapa histórica, aproximadamente 466 pozos iniciaron perforación antes de 1980 (equivalente a 46.64%).

5. Agrupación 2 (2000 a 2019)

En el periodo moderno (2000–2019) se utiliza una agrupación por lustros (5 años) para reducir el ruido anual y obtener clases con frecuencias más estables, lo cual mejora la comparación Observado vs Modelo y fortalece los tests inferenciales.

X2 <- X[X >= 2000 & X <= 2019]

# Lustros (5 años) -> cortes hasta 2020 para cerrar el último intervalo 2015-2019
breaks_2 <- seq(2000, 2020, by = 5)

h2 <- hist(X2, breaks = breaks_2, right = FALSE, plot = FALSE)
ni2 <- h2$counts
Fo2 <- ni2 / sum(ni2)

lab2 <- paste(head(breaks_2, -1), tail(breaks_2, -1) - 1, sep = "-")

# --- DIAGRAMA LOCAL (ni) ---
ylim_max2 <- max(ni2) * 1.25

par(mar = c(7,5,4,2))
barplot(
  ni2,
  main = "Gráfica 5.1: Frecuencia Observada – INICIO (2000–2019)",
  ylab = "Frecuencia Observada (ni)",
  xlab = "Lustro (5 años)",
  col  = "gray60",
  border = "white",
  names.arg = lab2,
  las = 2,
  ylim = c(0, ylim_max2)
)
grid(nx = NA, ny = NULL, col = "gray85", lty = "dotted")

5.1 Conjetura Del Modelo

La distribución Weibull es adecuada para modelar:

tiempos de ocurrencia

procesos de crecimiento con asimetría positiva

datos_ajuste <- X2 - 1999

fit_weibull <- fitdistr(datos_ajuste, "weibull")
shape_w <- fit_weibull$estimate["shape"]
scale_w <- fit_weibull$estimate["scale"]

# --- ESPERADOS por lustro ---
prob_teorica <- diff(pweibull(breaks_2 - 1999, shape = shape_w, scale = scale_w))
Fe2 <- prob_teorica / sum(prob_teorica)

# --- GRAFICO Real vs Modelo ---
par(mar = c(7,5,4,2))
col_real <- "#9ecae1"
col_mod  <- "#E67E22"

barplot(
  rbind(Fo2, Fe2),
  beside = TRUE,
  col = c(col_real, col_mod),
  border = NA,
  names.arg = lab2,
  las = 2,
  ylim = c(0, max(c(Fo2, Fe2)) * 1.15),
  main = "Gráfica 5.2: Conjetura del Modelo – Weibull (2000–2019)",
  ylab = "Frecuencia Relativa"
)

grid(nx = NA, ny = NULL, col = "gray85", lty = "dotted")

legend(
  "topright",
  legend = c("Real", "Modelo"),
  fill = c(col_real, col_mod),
  bty = "n"
)

5.2 Test de Pearson

Se evalúa la relación entre las frecuencias observadas y las probabilidades generadas por el modelo Weibull.

cor2 <- cor(Fo2, Fe2)
pearson_pct2 <- cor2 * 100

print(paste0("Pearson S2: ", round(pearson_pct2,2), "%"))
## [1] "Pearson S2: 82.57%"
lim_max2 <- max(c(Fo2,Fe2))*1.10
plot(Fo2,Fe2,
     pch=19,col="#E67E22",
     main="Gráfica 5.3: Pearson S2",
     xlab="Frecuencia Observada",
     ylab="Frecuencia Esperada",
     xlim=c(0,lim_max2), ylim=c(0,lim_max2))

abline(0,1,col="red",lwd=2)
grid()

5.3 Test De Chi Cuadrado

Se verifica estadísticamente si el modelo Weibull reproduce adecuadamente los datos recientes.

x2_2 <- sum((Fo2 - Fe2)^2 / Fe2)
df2  <- length(Fo2) - 1 - 2
vc2  <- qchisq(0.95, df2)

x2_2; df2; vc2
## [1] 0.05956591
## [1] 1
## [1] 3.841459

5.4 Tabla de Resumen

tabla_2 <- data.frame(
  Periodo="2000–2019",
  Modelo="Weibull",
  Pearson=round(pearson_pct2,2),
  Chi_Cuadrado=round(x2_2,4),
  Umbral=round(vc2,4),
  Decision=ifelse(x2_2 < vc2,"Modelo aceptado","Modelo rechazado")
)

tabla_2 %>%
kbl(caption="Tabla N°3: Bondad de Ajuste – Sección 2", align="c") %>%
kable_classic(full_width=FALSE, html_font="Arial") %>%
row_spec(0,bold=TRUE, background="#08306B", color="white") %>%
row_spec(1, background="#EFF3FF") %>%
column_spec(2,color="#E67E22", bold=TRUE) %>%
column_spec(6,color="darkgreen", bold=TRUE)
Tabla N°3: Bondad de Ajuste – Sección 2
Periodo Modelo Pearson Chi_Cuadrado Umbral Decision
2000–2019 Weibull 82.57 0.0596 3.8415 Modelo aceptado

5.5 Calculo de Probabilidad

¿Cuál fue la probabilidad de que un pozo iniciara operaciones durante el último lustro del periodo analizado (2015–2019)?

val_fin <- 2019 - 1999
val_ini <- 2015 - 1999

p_ultimo <- pweibull(val_fin, shape = shape_w, scale = scale_w) -
            pweibull(val_ini, shape = shape_w, scale = scale_w)

p_ultimo
## [1] 0.07372108

El modelo Weibull estima que aproximadamente 7.37% de los pozos de la etapa moderna iniciaron perforación en el periodo 2015–2019.

6 Conclusiones

El análisis temporal permitió identificar dos comportamientos estadísticos diferenciados en la variable Inicio de Perforación.

Periodo histórico (1920–1999).
El modelo Normal describe adecuadamente la evolución del inicio de perforaciones, evidenciando una tendencia estable y aproximadamente simétrica durante la fase de crecimiento y consolidación de la industria petrolera.

Periodo moderno (2000–2019).
El modelo Weibull captura correctamente la dinámica reciente, caracterizada por una mayor variabilidad temporal y un comportamiento asimétrico asociado a los cambios estructurales de la actividad petrolera.

En conjunto, el análisis confirma que la evolución histórica del inicio de perforaciones presenta dos regímenes estadísticos distintos, cada uno explicado mediante un modelo probabilístico específico y validado mediante pruebas de bondad de ajuste.