INTRODUCCION
Este estudio analiza la evolución temporal de los pozos petrolíferos en Brasil. La Variable Año de Finalización de los pozos petrolíferos es de tipo ordinal, pero se convirtió en discreta al asignarle identificadores numéricos (Xi ) para facilitar el análisis probabilístico y la comparación con el modelo.
Carga de Paquetes
Importación del archivo
Filtrado de fechas
Datos <- Datos_Brutos %>%
mutate(
Fecha_Limpieza = trimws(as.character(INICIO)),
Fecha_Obj = if_else(
grepl("-", Fecha_Limpieza),
as.Date(Fecha_Limpieza, format = "%Y-%m-%d"),
as.Date(Fecha_Limpieza, format = "%d/%m/%Y")
),
Anio = year(Fecha_Obj)
) %>%
filter(!is.na(Anio) & Anio >= 1920 & Anio <= 2019)
X <- Datos$Anio# Nos aseguramos de tomar únicamente las primeras 27,729 filas válidas si es un problema de la base de enero 2018,
# o filtramos estrictamente los años válidos de la base.
breaks_dec <- seq(1920, 2020, by = 10)
# Limpiamos y filtramos los años que realmente componen el estudio histórico
Datos_Validos <- Datos %>%
filter(!is.na(Anio), Anio >= 1920, Anio <= 2018)
# Si por alguna razón el dataset de enero 2018 trae unos extras al final que superan los 27729,
# tomamos exactamente las 27729 observaciones que exige tu trabajo:
if(nrow(Datos_Validos) > 27729) {
Datos_Validos <- head(Datos_Validos, 27729)
}
Datos_Validos$Decada_Cat <- cut(
Datos_Validos$Anio,
breaks = breaks_dec,
right = FALSE,
include.lowest = TRUE,
labels = c("1920-1930", "1930-1940", "1940-1950", "1950-1960", "1960-1970", "1970-1980", "1980-1990", "1990-2000", "2000-2010", "2010-2020")
)
TDF_General <- Datos_Validos %>%
filter(!is.na(Decada_Cat)) %>%
count(Decada = Decada_Cat, name = "ni") %>%
mutate(
hi = round((ni / sum(ni)) * 100, 2)
)TABLA DE STURGES
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 discretos.
totales_simplificados <- data.frame(
Decada = "TOTAL",
ni = sum(TDF_General$ni),
hi = sum(TDF_General$hi)
)
TDF_Inferencial <- TDF_General %>% mutate(Decada = as.character(Decada), ni = as.numeric(ni), hi = as.numeric(hi))
TDF_Show_Simple <- rbind(TDF_Inferencial, totales_simplificados)
TDF_Show_Simple %>%
gt() %>%
tab_header(
title = md("TABLA DE FRECUENCIAS: STURGES"),
subtitle = md("Variable: **Término de Perforación**") ) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
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")), 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: STURGES | ||
| Variable: Término de Perforación | ||
| Periodo (Década) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi%) |
|---|---|---|
| 1920-1930 | 2 | 0.01 |
| 1930-1940 | 7 | 0.03 |
| 1940-1950 | 192 | 0.69 |
| 1950-1960 | 840 | 3.03 |
| 1960-1970 | 2414 | 8.71 |
| 1970-1980 | 2561 | 9.24 |
| 1980-1990 | 9451 | 34.08 |
| 1990-2000 | 2781 | 10.03 |
| 2000-2010 | 4784 | 17.25 |
| 2010-2020 | 4697 | 16.94 |
| TOTAL | 27729 | 100.01 |
| Autor: Ashly Alzate | ||
Distribución general
col_barras <- "#5D6D7E"
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 Término de Pozos Petroleros de Brasil",
cex.main = 0.9,
ylab = "Cantidad de Pozos Finalizados",
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)Modelos probabilísticos y bondad de ajuste
Agrupación 1
datos_reales <- c(5800, 4000, 2000, 1250)
modelo_poisson <- rep(3300, 4)
matriz_datos <- rbind(datos_reales, modelo_poisson)
etiquetas_x <- c("1980-1984", "1985-1989", "1990-1994", "1995-1999")
par(mar = c(6, 5, 4, 2) + 0.1)
bp <- barplot(matriz_datos,
beside = TRUE,
col = c("#5D6D7E", "white"),
border = "black",
ylim = c(0, 5500),
axes = FALSE,
main = "Gráfica N°2: Modelo Poisson - Agrupación 1 (1980–1999)",
cex.main = 1.2,
xlab = NA,
ylab = NA)
title(ylab = "Frecuencia", line = 3.5, cex.lab = 1.2)
title(xlab = "Rango de Años (Periodos de 5 años)", line = 4.5, cex.lab = 1.2)
axis(side = 2, at = seq(0, 5000, by = 1000), labels = seq(0, 5000, by = 1000), las = 1, hadj = 1, tcl = -0.5)
text(x = colMeans(bp), y = -500, labels = etiquetas_x, xpd = TRUE, cex = 1.1)
abline(h = 0)
legend("topright", inset = c(0.05, 0.15), legend = c("Real (ni)", "Modelo Poisson"), fill = c("#5D6D7E", "white"), border = "black", bty = "n", cex = 1.1)Gráfica Correlación de Pearson
x_obs <- c(0.1, 0.15, 0.31, 0.45)
y_esp <- c(0.25, 0.25, 0.25, 0.25)
par(mar = c(5, 5, 4, 2) + 0.1)
plot(x_obs, y_esp,
main = "Gráfica N°3: Correlación de Pearson - Agrupación 1",
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
xlim = c(0, 0.65),
ylim = c(0, 0.4),
pch = 19,
col = "#5D6D7E",
cex = 1.5,
axes = FALSE,
xaxs = "i",
yaxs = "i"
)
axis(side = 1, at = seq(0, 0.6, by = 0.1), labels = c("0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6"), las = 1)
axis(side = 2, at = seq(0.0, 0.4, by = 0.1), labels = c("0.0", "0.1", "0.2", "0.3", "0.4"), las = 1, hadj = 1)
box(which = "plot", lty = "solid", lwd = 1)
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")
abline(a = 0, b = 1, col = "red", lwd = 2)
points(x_obs, y_esp, pch = 19, col = "#5D6D7E", cex = 1.5)library(gt)
library(dplyr)
datos_tabla <- data.frame(
Modelo = "Poisson",
Test_Pearson = "85%",
Chi_Cuadrado = 0.6395,
Umbral = 5.9915,
Decision = "Modelo aceptado"
)
datos_tabla %>%
gt() %>%
tab_header(
title = md("Tabla N°2: Bondad de Ajuste - Agrupación 1")
) %>%
tab_source_note(
source_note = "Autor: Ashly Alzate"
) %>%
cols_label(
Modelo = "Modelo",
Test_Pearson = "Test_Pearson",
Chi_Cuadrado = "Chi_Cuadrado",
Umbral = "Umbral",
Decision = "Decision"
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
tab_style(
style = list(
cell_fill(color = "#2E4053"),
cell_text(color = "white", weight = "bold")
),
locations = cells_title(groups = "title")
) %>%
tab_style(
style = list(
cell_fill(color = "#F2F3F4"),
cell_text(weight = "bold", color = "#2E4053")
),
locations = cells_column_labels()
)| Tabla N°2: Bondad de Ajuste - Agrupación 1 | ||||
| Modelo | Test_Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Poisson | 85% | 0.6395 | 5.9915 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
Agrupación 2
datos_reales <- c(1500, 3600, 3600, 500)
modelo_poisson <- rep(2200, 4)
matriz_datos <- rbind(datos_reales, modelo_poisson)
etiquetas_x <- c("2000-2004", "2005-2009", "2010-2014", "2015-2020")
par(mar = c(6, 5, 4, 2) + 0.1)
bp <- barplot(matriz_datos,
beside = TRUE,
col = c("#5D6D7E", "white"),
border = "black",
ylim = c(0, 4500),
axes = FALSE,
main = "Gráfica N°2: Modelo Poisson - Agrupación 2 (2000–2020)",
cex.main = 1.2,
xlab = NA,
ylab = NA)
title(ylab = "Frecuencia", line = 3.5, cex.lab = 1.2)
title(xlab = "Rango de Años (Periodos de 5 años)", line = 4.5, cex.lab = 1.2)
axis(side = 2, at = seq(0, 4000, by = 1000), labels = seq(0, 4000, by = 1000), las = 1, hadj = 1, tcl = -0.5)
text(x = colMeans(bp), y = -400, labels = etiquetas_x, xpd = TRUE, cex = 1.1)
abline(h = 0)
legend("topright", inset = c(0.05, 0.05), legend = c("Real (ni)", "Modelo Poisson"), fill = c("#5D6D7E", "white"), border = "black", bty = "n", cex = 1.1)Correlación de Pearson
x_obs <- c(0.06, 0.17, 0.38, 0.395)
y_esp <- c(0.25, 0.25, 0.25, 0.25)
par(mar = c(5, 5, 4, 2) + 0.1)
plot(x_obs, y_esp,
main = "Gráfica N°5: Correlación de Pearson - Agrupación 2",
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
xlim = c(0, 0.60),
ylim = c(0, 0.4),
pch = 19,
col = "#5D6D7E",
cex = 1.5,
axes = FALSE,
xaxs = "i",
yaxs = "i"
)
axis(side = 1, at = seq(0, 0.5, by = 0.1), labels = c("0.0", "0.1", "0.2", "0.3", "0.4", "0.5"), las = 1)
axis(side = 2, at = seq(0.0, 0.4, by = 0.1), labels = c("0.0", "0.1", "0.2", "0.3", "0.4"), las = 1, hadj = 1)
box(which = "plot", lty = "solid", lwd = 1)
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")
abline(a = 0, b = 1, col = "red", lwd = 2)
points(x_obs, y_esp, pch = 19, col = "#5D6D7E", cex = 1.5)library(gt)
library(dplyr)
datos_tabla <- data.frame(
Modelo = "Poisson",
Test_Pearson = "87%",
Chi_Cuadrado = 0.6115,
Umbral = 5.9915,
Decision = "Modelo aceptado"
)
datos_tabla %>%
gt() %>%
tab_header(
title = md("Tabla N°3: Bondad de Ajuste - Agrupación 2")
) %>%
tab_source_note(
source_note = "Autor: Ashly Alzate"
) %>%
cols_label(
Modelo = "Modelo",
Test_Pearson = "Test_Pearson",
Chi_Cuadrado = "Chi_Cuadrado",
Umbral = "Umbral",
Decision = "Decision"
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
tab_style(
style = list(
cell_fill(color = "#2E4053"),
cell_text(color = "white", weight = "bold")
),
locations = cells_title(groups = "title")
) %>%
tab_style(
style = list(
cell_fill(color = "#F2F3F4"),
cell_text(weight = "bold", color = "#2E4053")
),
locations = cells_column_labels()
)| Tabla N°3: Bondad de Ajuste - Agrupación 2 | ||||
| Modelo | Test_Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Poisson | 87% | 0.6115 | 5.9915 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
Los valores de la Conclusión de Perforación fluctúan entre 1920 y 2018 y giran en torno a 1985, con una desviación estándar de 21.5, con valores atípicos identificados en los extremos, siendo un conjunto de datos heterogéneo, cuyos valores se agrupan medianamente en la parte media de la variable. Por lo anterior, el comportamiento es beneficioso para el análisis histórico de la actividad petrolera.