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.
setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")
Datos_Brutos <- read.csv(
"Pozos brasil 2.csv",
header = TRUE,
sep = ";",
dec = ",",
fileEncoding = "Latin1"
)
Datos <- Datos_Brutos %>%
mutate(
Fecha_Obj = as.Date(INICIO, format = "%d/%m/%Y"),
Anio = year(Fecha_Obj)
) %>%
filter(!is.na(Anio) & Anio >= 1920 & Anio <= 2020)
X <- Datos$Anio
# TABLA DE FRECUENCIAS
breaks_dec <- seq(1920, 2020, by = 10)
h_total <- hist(X, breaks = breaks_dec, plot = FALSE)
TDF_General <- data.frame(
Decada = paste(head(breaks_dec, -1), tail(breaks_dec, -1), sep = "-"),
ni = h_total$counts,
hi = round((h_total$counts / sum(h_total$counts)) * 100, 2)
)
totales_simplificados <- c("TOTAL", sum(TDF_General$ni), 100)
TDF_Inferencial <- TDF_General %>% mutate(across(everything(), as.character))
TDF_Show_Simple <- rbind(TDF_Inferencial, totales_simplificados)
TDF_Show_Simple %>%
gt() %>%
tab_header(
title = md("TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA"),
subtitle = md("Variable: **Inicio de Perforación**")
) %>%
tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
cols_label(
Decada = "Periodo (Década)",
ni = "Frecuencia Absoluta (ni)",
hi = "Frecuencia Relativa (hi%)"
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(
cell_fill(color = "#2E4053"),
cell_text(color = "white", weight = "bold")
),
# CORRECCIÓN: cells_title() sin groups= no aplica estilo al subtítulo
locations = cells_title(groups = c("title", "subtitle"))
) %>%
tab_style(
style = list(
cell_fill(color = "#F2F3F4"),
cell_text(weight = "bold", color = "#2E4053")
),
locations = cells_column_labels()
)| TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA | ||
| Variable: Inicio de Perforación | ||
| Periodo (Década) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi%) |
|---|---|---|
| 1920-1930 | 2 | 0.01 |
| 1930-1940 | 15 | 0.05 |
| 1940-1950 | 218 | 0.74 |
| 1950-1960 | 1047 | 3.54 |
| 1960-1970 | 2398 | 8.11 |
| 1970-1980 | 2932 | 9.91 |
| 1980-1990 | 9348 | 31.61 |
| 1990-2000 | 3654 | 12.36 |
| 2000-2010 | 6079 | 20.55 |
| 2010-2020 | 3882 | 13.13 |
| TOTAL | 29575 | 100 |
| Fuente: Tabela de Poços 2018 | ||
A continuación, presentamos el histograma de frecuencias.
# CORRECCIÓN: color cambiado a azul marino "#2E4053"
col_barras <- "#2E4053"
col_ejes <- "#2E4053"
par(mar = c(10, 5, 4, 2))
vals_x <- TDF_General$Decada
vals_y <- TDF_General$ni
ylim_max <- max(vals_y) * 1.1
bp <- barplot(
vals_y,
main = "Gráfica N°1: Distribución de Fecha de Inicio de Pozos Petroleros de Brasil",
cex.main = 0.9,
ylab = "Cantidad de Pozos",
col = col_barras, border = "white",
axes = FALSE, ylim = c(0, ylim_max), axisnames = FALSE
)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp, labels = vals_x, col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.9)
title(xlab = "Década", line = 8)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)Al observar la Gráfica N°1, se evidencia que la variable Inicio de Perforación no presenta un comportamiento homogéneo a lo largo de todo el siglo. Se distinguen claramente dos dinámicas industriales:
Por esta razón, desde un punto de vista inferencial, es necesario segmentar la muestra en dos periodos independientes. Esto permite ajustar modelos de probabilidad específicos (Normal y Gamma) que describan con mayor precisión la realidad de cada época.
En este bloque analizamos si el inicio de perforación en la primera mitad del siglo XX sigue un comportamiento normal.
X1 <- X[X < 2000]
hist(
X1,
breaks = seq(1920, 2000, by = 10),
col = col_barras,
border = "white",
main = "Histograma Sección 1 (1920–1999)",
xlab = "Año",
ylab = "Frecuencia"
)Calculamos los parámetros fundamentales de la distribución normal: la Media (μ) y la Desviación Estándar (σ) de esta época, para generar una curva teórica y compararla con los datos reales.
mu1 <- mean(X1)
sd1 <- sd(X1)
h1 <- hist(X1, breaks = seq(1920, 2000, by = 10), plot = FALSE)
Fo1 <- h1$counts / sum(h1$counts)
Fe1 <- diff(pnorm(seq(1920, 2000, by = 10), mean = mu1, sd = sd1))
barplot(
rbind(Fo1, Fe1),
beside = TRUE,
col = c(col_barras, "#F2F3F4"),
border = "black",
names.arg = paste0(head(seq(1920, 2000, by = 10), -1), "s"),
main = "Gráfica N°2: Modelo de Probabilidad Normal de Fecha de Inicio (1920–1999)",
cex.main = 0.85,
ylab = "Probabilidad",
xlab = "Décadas"
)
legend("topleft", legend = c("Real", "Modelo Normal"),
fill = c(col_barras, "#F2F3F4"), border = "white", 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).
# xlim e ylim forzados a iniciar en 0
# lm(Fe1 ~ Fo1 + 0) fuerza la línea de regresión a pasar por el origen (0,0)
plot(
Fo1, Fe1,
main = "Gráfica N°3: Correlación de Pearson — Sección 1",
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
pch = 19, col = col_barras,
xlim = c(0, max(Fo1) * 1.05),
ylim = c(0, max(Fe1) * 1.05)
)
abline(lm(Fe1 ~ Fo1 + 0), col = "red", lwd = 2)Realizamos la prueba de bondad de ajuste de Chi-Cuadrado (χ²). Esta prueba indica si las diferencias entre el modelo y la realidad son aceptables (modelo válido) o si el modelo debe rechazarse.
tabla_1 <- data.frame(
Modelo = "Normal",
Pearson = round(cor1, 2),
Chi_Cuadrado = round(x2_1, 4),
Umbral = round(vc1, 4),
Decision = ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado")
)
library(gt)
gt(tabla_1) %>%
tab_header(
title = md("**Tabla N°2: Resumen Bondad de Ajuste Sección 1
**")) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
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.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6))| **Tabla N°2: Resumen Bondad de Ajuste Sección 1 ** | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Normal | 85.4 | 0.2157 | 14.0671 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
Analizamos la segunda etapa probando un ajuste a la Distribución Gamma.
# CORRECCIÓN: X2 se definía dos veces con rangos contradictorios.
# Se deja una única definición coherente con el periodo declarado.
X2 <- X[X >= 2000 & X <= 2020]
breaks_lustros <- seq(2000, 2020, by = 5)
hist(
X2,
breaks = breaks_lustros,
col = col_barras,
border = "white",
main = "Histograma Sección 2 (2000–2020)",
xlab = "Año",
ylab = "Frecuencia"
)Para este segundo periodo (2000–2020), el histograma muestra un comportamiento diferente: una subida abrupta al inicio seguida de un descenso gradual, generando una asimetría que el modelo Normal (simétrico) no puede capturar correctamente.
Por esta razón, conjeturamos que los datos siguen una Distribución Gamma, flexible y frecuentemente usada para modelar variables con sesgo, donde estimaremos los parámetros de Forma (α) y Tasa (β).
# CORRECCIÓN: el título de la gráfica decía "Modelo Normal" siendo Gamma.
fit_gamma <- fitdistr(X2, "gamma")
alpha <- fit_gamma$estimate["shape"]
beta <- fit_gamma$estimate["rate"]
h2 <- hist(X2, breaks = breaks_lustros, plot = FALSE)
Fo2 <- h2$counts / sum(h2$counts)
Fe2 <- diff(pgamma(breaks_lustros, shape = alpha, rate = beta))
etiquetas_lustros <- c("2000-05", "2005-10", "2010-15", "2015-20")
barplot(
rbind(Fo2, Fe2),
beside = TRUE,
col = c(col_barras, "#F2F3F4"),
border = "black",
names.arg = etiquetas_lustros,
main = "Gráfica N°5: Modelo de Probabilidad Gamma de Fecha de Inicio (2000–2020)",
cex.main = 0.85,
ylab = "Probabilidad"
)
legend("topright", legend = c("Real", "Modelo Gamma"),
fill = c(col_barras, "#F2F3F4"), border = "white", bty = "n")Evaluamos la Correlación de Pearson para cuantificar la relación lineal entre las frecuencias observadas y las probabilidades teóricas generadas por la distribución Gamma.
# xlim e ylim forzados a iniciar en 0
# lm(Fe2 ~ Fo2 + 0) fuerza la línea de regresión a pasar por el origen (0,0)
plot(
Fo2, Fe2,
main = "Gráfica N°6: Correlación de Pearson — Sección 2 (Gamma)",
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
pch = 19, col = col_barras,
xlim = c(0, max(Fo2) * 1.05),
ylim = c(0, max(Fe2) * 1.05)
)
abline(lm(Fe2 ~ Fo2 + 0), col = "red", lwd = 2)## [1] 90.03608
Aplicamos la prueba de bondad de ajuste Chi-Cuadrado (χ²) para validar estadísticamente el modelo Gamma con un 95% de confianza.
tabla_2 <- data.frame(
Variable = "Inicio (S2)",
Pearson_Pct = round(cor2, 2),
Chi_Cuadrado = round(x2_2, 4),
Umbral = round(vc2, 4),
Decision = ifelse(x2_2 < vc2, "Modelo aceptado", "Modelo rechazado")
)
library(gt)
gt(tabla_1) %>%
tab_header(
title = md("**Tabla N°3: Resumen Bondad de Ajuste Sección 2**")) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
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.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6))| Tabla N°3: Resumen Bondad de Ajuste Sección 2 | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Normal | 85.4 | 0.2157 | 14.0671 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
De cada 1,000 pozos perforados en la era moderna (2000–2020), ¿cuántos se estimó que iniciaron operaciones en el último lustro (2015–2020)?
p_ultimo <- pgamma(2020, shape = alpha, rate = beta) - pgamma(2015, shape = alpha, rate = beta)
cantidad_estimada <- round(p_ultimo * 1000, 0)El modelo Gamma estimó que, por cada 1,000 pozos de este periodo, aproximadamente 77 correspondieron al intervalo final de 2015 a 2020 (es decir, un 7.66%).
El análisis segmentado nos permite concluir:
Periodo 1920–1999: Se modeló exitosamente bajo una distribución Normal. Este periodo abarca la maduración de la industria y el modelo explica la tendencia con una correlación de 85.4%.
Periodo 2000–2020: Al analizar el siglo XXI con mayor detalle (por lustros), el modelo Gamma logró capturar la tendencia reciente. La prueba de Chi-Cuadrado (0.0598) confirma la validez estadística del modelo, al mantenerse por debajo del umbral crítico de 7.8147.