INTRODUCCION
Este estudio analiza la evolución temporal de los pozos petrolíferos en Brasil. La Variable Año de Inicio de los pozos petrolíferos es de tipo ordinal, pero se convirtió en discreta al asignarle identificadores numéricos (\(X_i\)) para facilitar el análisis probabilístico y la comparación con el modelo.
Carga de paquetes
# Extraemos los primeros 4 caracteres del texto de la fecha (año) de forma segura
Datos <- Datos_Brutos %>%
mutate(
Anio_Exacto = as.numeric(substr(as.character(INICIO), 1, 4))
) %>%
filter(!is.na(Anio_Exacto) & Anio_Exacto > 1900) %>%
mutate(
Decada_Inicio = floor(Anio_Exacto / 10) * 10,
Periodo = paste0(Decada_Inicio, " - ", Decada_Inicio + 9)
)
Variable_Exacta <- Datos$Anio_Exacto
Variable_Clases <- Datos$Periodo
Variable_Orden <- Datos$Decada_Inicio
if(length(Variable_Exacta) == 0) stop("ERROR: No hay datos válidos.")df_calc <- data.frame(Periodo = Variable_Clases, Orden = Variable_Orden)
TDF_Raw <- df_calc %>%
group_by(Orden, Periodo) %>%
summarise(ni = n(), .groups = 'drop') %>%
arrange(Orden)
ni <- TDF_Raw$ni
N <- sum(ni)
hi <- (ni / N) * 100
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))
TDF_Decadas <- data.frame(
Periodo = TDF_Raw$Periodo,
ni = ni,
hi = round(hi, 2),
Ni_asc = Ni_asc,
Ni_desc = Ni_desc,
Hi_asc = round(Hi_asc, 2),
Hi_desc = round(Hi_desc, 2)
)TABLA DE DISTRIBUCIÓN DE FRECUENCIA
# Totales
totales <- c("TOTAL", sum(ni), round(sum(hi), 2), "-", "-", "-", "-")
TDF_Char <- TDF_Decadas %>% mutate(across(everything(), as.character))
TDF_Show <- rbind(TDF_Char, totales)
colnames(TDF_Show) <- names(TDF_Decadas)
TDF_Show %>%
gt() %>%
tab_header(
title = md("DISTRIBUCIÓN POR DÉCADAS"),
subtitle = md("Variable: **Inicio de Perforación**")
) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
cols_label(
Periodo = "Periodo (Década)",
ni = "Cant. Pozos (ni)",
hi = "Porcentaje (hi%)",
Ni_asc = "Ni (Asc)", Ni_desc = "Ni (Desc)",
Hi_asc = "Hi (Asc)", Hi_desc = "Hi (Desc)"
) %>%
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)
)| DISTRIBUCIÓN POR DÉCADAS | ||||||
| Variable: Inicio de Perforación | ||||||
| Periodo (Década) | Cant. Pozos (ni) | Porcentaje (hi%) | Ni (Asc) | Ni (Desc) | Hi (Asc) | Hi (Desc) |
|---|---|---|---|---|---|---|
| 1920 - 1929 | 2 | 0.01 | 2 | 29575 | 0.01 | 100 |
| 1930 - 1939 | 7 | 0.02 | 9 | 29573 | 0.03 | 99.99 |
| 1940 - 1949 | 192 | 0.65 | 201 | 29566 | 0.68 | 99.97 |
| 1950 - 1959 | 840 | 2.84 | 1041 | 29374 | 3.52 | 99.32 |
| 1960 - 1969 | 2414 | 8.16 | 3455 | 28534 | 11.68 | 96.48 |
| 1970 - 1979 | 2562 | 8.66 | 6017 | 26120 | 20.34 | 88.32 |
| 1980 - 1989 | 9501 | 32.13 | 15518 | 23558 | 52.47 | 79.66 |
| 1990 - 1999 | 3670 | 12.41 | 19188 | 14057 | 64.88 | 47.53 |
| 2000 - 2009 | 5690 | 19.24 | 24878 | 10387 | 84.12 | 35.12 |
| 2010 - 2019 | 4697 | 15.88 | 29575 | 4697 | 100 | 15.88 |
| TOTAL | 29575 | 100 | - | - | - | - |
| Autor: Ashly Alzate | ||||||
Gráficos de Barras
col_gris_azulado <- "#5D6D7E"
col_ejes <- "#2E4053"
vals_x <- TDF_Decadas$Periodo
vals_y <- TDF_Decadas$ni
ylim_max <- max(vals_y) * 1.1
# GRÁFICO 1: Frecuencia Absoluta (LOCAL)
par(mar = c(10, 5, 4, 2))
bp <- barplot(vals_y,
main = "Gráfica No.1: Distribucion de Fecha de Inicio(Inicio) de Pozos Petroleros de Brazil",
cex.main = 0.8,
ylab = "Cantidad de Pozos",
col = col_gris_azulado, 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.8)
title(xlab = "Década", line = 8)
grid(nx=NA, ny=NULL, col="#D7DBDD", lty="dotted")
box(bty="l", col=col_ejes)Gráfico 2: Frecuencia Absoluta
par(mar = c(10, 5, 4, 2))
bp2 <- barplot(vals_y,
main = "Gráfica N°2: Distribucion de Fecha de Inicio(Inicio) de Pozos Petroleros de Brazil",
cex.main = 0.8,
ylab = "Cantidad de Pozos",
col = col_gris_azulado, border = "white", axes = FALSE,
ylim = c(0, N),
axisnames = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp2, labels = vals_x, col = col_ejes, col.axis = col_ejes, las=2, cex.axis=0.8)
title(xlab = "Década", line = 8)
grid(nx=NA, ny=NULL, col="#D7DBDD", lty="dotted")
box(bty="l", col=col_ejes)Gráfico 3: Porcentual (LOCAL)
par(mar = c(10, 5, 4, 2))
bp3 <- barplot(vals_y_pct,
main = "Gráfica N°3: Distribucion Porcentual de Fecha de Inicio(Inicio) de Pozos Petroleros de Brazil",
cex.main = 0.8,
ylab = "% del Total",
col = col_gris_azulado, border = "white", axes = FALSE,
ylim = c(0, max(vals_y_pct)*1.2),
axisnames = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp3, labels = vals_x, col = col_ejes, col.axis = col_ejes, las=2, cex.axis=0.8)
text(x = bp3, y = vals_y_pct, label = paste0(round(vals_y_pct, 1), "%"), pos = 3, cex = 0.7, col = col_ejes)
title(xlab = "Década", line = 8)
grid(nx=NA, ny=NULL, col="#D7DBDD", lty="dotted")
box(bty="l", col=col_ejes)Gráfico 4: Porcentual (GLOBAL - Escala 0 a 100%)
par(mar = c(10, 5, 4, 2))
bp4 <- barplot(vals_y_pct,
main = "Gráfica N°4: Distribucion Porcentual de Fecha de Inicio(Inicio) de Pozos Petroleros de Brazil",
cex.main = 0.8,
ylab = "% del Total",
col = col_gris_azulado, border = "white", axes = FALSE,
ylim = c(0, 100), # Eje Y fijo a 100%
axisnames = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp4, labels = vals_x, col = col_ejes, col.axis = col_ejes, las=2, cex.axis=0.8)
text(x = bp4, y = vals_y_pct, label = paste0(round(vals_y_pct, 1), "%"), pos = 3, cex = 0.7, col = col_ejes)
title(xlab = "Década", line = 8)
abline(h=seq(0,100,20), col="#D7DBDD", lty="dotted")
box(bty="l", col=col_ejes)Gráfica 5: Diagrama de Caja
par(mar = c(7, 5, 4, 2))
boxplot(Variable_Exacta, horizontal = TRUE, col = col_gris_azulado,
main = "Gráfica N°5: Diagrama de Caja de Fecha de Inicio de Pozos Petroleros en Brazil",
cex.main = 0.8,
xlab = "", outline = TRUE, outpch = 19, outcol = "#C0392B",
boxwex = 0.5, frame.plot = FALSE, xaxt = "n")
eje_x <- pretty(Variable_Exacta, n = 8)
axis(1, at = eje_x, labels = format(eje_x, scientific=FALSE), cex.axis=0.8, col=col_ejes, col.axis=col_ejes)
title(xlab = "Año Exacto", line = 4)Gráfica 6: Ojivas
par(mar = c(6, 5, 4, 8), xpd = TRUE)
x_vals_num <- unique(Datos$Decada_Inicio) %>% sort()
x_labels <- unique(Datos$Periodo) %>% sort()
y_asc <- TDF_Decadas$Ni_asc
y_desc <- TDF_Decadas$Ni_desc
col_azul <- "#2E4053"
col_rojo <- "#C0392B"
# Definimos col_ejes por si no lo tenías declarado arriba
col_ejes <- "#2E4053"
plot(x_vals_num, y_asc, type = "o", col = col_azul, lwd=2, pch=19,
main = "Gráfica N°6: Ojivas Ascendente y Descendente de Fecha de Inicio de Pozos Petroleros de Brazil",
cex.main = 0.8,
ylab = "Frecuencia Acumulada", xlab = "",
axes = FALSE, frame.plot = FALSE)
# Cambiamos las = 2 por las = 1 para que los textos queden horizontales
axis(1, at = x_vals_num, labels = x_labels, las = 1, cex.axis = 0.8, col = col_ejes, col.axis = col_ejes)
axis(2, col = col_ejes, col.axis = col_ejes)
title(xlab = "Década", line = 4)
lines(x_vals_num, y_desc, type = "o", col = col_rojo, lwd=2, pch=19)
legend("right", legend = c("Ascendente", "Descendente"),
col = c(col_azul, col_rojo), lty = 1, pch = 19, cex = 0.7, lwd=2,
inset = c(-0.15, 0), bty="n")
grid()
grid(nx = NULL, ny = NA, col = "lightgray", lty = "dotted")Cálculo de Indicadores (Variable exacta)
media_val <- mean(Variable_Exacta)
mediana_val <- median(Variable_Exacta)
t_moda <- table(Variable_Exacta)
freq_max <- max(t_moda)
modas_calc <- as.numeric(names(t_moda)[t_moda == freq_max])
moda_txt <- paste(modas_calc, collapse = ", ")
rango_txt <- paste0("[", min(Variable_Exacta), "; ", max(Variable_Exacta), "]")
varianza_val <- var(Variable_Exacta)
sd_val <- sd(Variable_Exacta)
cv_val <- (sd_val / abs(media_val)) * 100
asimetria_val <- skewness(Variable_Exacta, type = 2)
curtosis_val <- kurtosis(Variable_Exacta, type = 2)
vals_atipicos <- boxplot.stats(Variable_Exacta)$out
num_atipicos <- length(vals_atipicos)
status_atipicos <- if(num_atipicos > 0) {
paste0(num_atipicos, " outliers")
} else {
"0 (Sin atípicos)"
}
df_resumen <- data.frame(
"Variable" = "Año de Inicio (Exacto)",
"Rango" = rango_txt,
"Media" = media_val,
"Mediana" = mediana_val,
"Moda" = moda_txt,
"Varianza" = varianza_val,
"Desv_Std" = sd_val,
"CV_Porc" = cv_val,
"Asimetria" = asimetria_val,
"Curtosis" = curtosis_val,
"Atipicos" = status_atipicos
)
df_resumen %>%
gt() %>%
tab_header(
title = md("**ESTADÍSTICOS DESCRIPTIVOS**"),
subtitle = "Indicadores calculados sobre años exactos"
) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
fmt_number(columns = c(Media, Mediana, Varianza, Desv_Std, CV_Porc, Curtosis), decimals = 2) %>%
fmt_number(columns = c(Asimetria), decimals = 4) %>%
cols_label(
Variable = "Variable",
Rango = "Rango [Min; Max]",
Media = "Media (X̄)",
Mediana = "Mediana (Me)",
Moda = "Moda (Mo)",
Varianza = "Varianza (S²)",
Desv_Std = "Desv. Est. (S)",
CV_Porc = "C.V. (%)",
Asimetria = "Asimetría (As)",
Curtosis = "Curtosis (K)",
Atipicos = "Outliers"
) %>%
tab_options(
column_labels.background.color = "#2E4053",
table.border.top.color = "black",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(8)
) %>%
tab_style(
style = list(cell_text(weight = "bold", color = "white")),
locations = cells_column_labels()
)| ESTADÍSTICOS DESCRIPTIVOS | ||||||||||
| Indicadores calculados sobre años exactos | ||||||||||
| Variable | Rango [Min; Max] | Media (X̄) | Mediana (Me) | Moda (Mo) | Varianza (S²) | Desv. Est. (S) | C.V. (%) | Asimetría (As) | Curtosis (K) | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Año de Inicio (Exacto) | [1922; 2018] | 1,990.64 | 1,988.00 | 1982 | 262.92 | 16.21 | 0.81 | −0.3246 | −0.52 | 96 outliers |
| Autor: Ashly Alzate | ||||||||||
Los valores de la variable Año de Inicio fluctúan entre 1922 y 2018 y giran en torno a la media de 1,990.64 (coincidente con la mediana de 1,988.00), con una desviación estándar de 16.21, con 96 valores atípicos identificados, siendo un conjunto de datos heterogéneo (C.V. = 0.81%), cuyos valores se agrupan fuertemente en la parte alta de la variable. Por lo anterior, el comportamiento es perjudicial.