El presente informe estadístico analiza la variable Inicio de Perforación de pozos petroleros de Brasil, aplicando técnicas descriptivas e inferenciales.
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 | ||
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")
)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")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")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")Se evalúa la bondad de ajuste comparando las frecuencias observadas y esperadas mediante el estadístico χ² y su valor crítico al 95%.
## [1] 0.2093672
## [1] 5
## [1] 11.0705
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)| Periodo | Modelo | Pearson…. | Chi.Cuadrado | Umbral | Decisión |
|---|---|---|---|---|---|
| 1920–1999 | Normal | 83.45 | 0.2094 | 11.0705 | Modelo aceptado |
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%).
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")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"
)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()Se verifica estadísticamente si el modelo Weibull reproduce adecuadamente los datos recientes.
## [1] 0.05956591
## [1] 1
## [1] 3.841459
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)| Periodo | Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|---|
| 2000–2019 | Weibull | 82.57 | 0.0596 | 3.8415 | Modelo aceptado |
¿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.
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.