# LIBRERÍAS
library(readxl)
library(dplyr)
library(gt)
library(e1071)
library(lubridate)
# CARGA DE DATOS
setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")
Datos_Brutos <- read.csv(
"Pozos brasil 2.csv",
header = TRUE,
sep = ";",
dec = ",",
fileEncoding = "Latin1"
)
# PROCESAMIENTO (Agrupación por Décadas)
Datos <- Datos_Brutos %>%
mutate(
Fecha_Obj = as.Date(CONCLUSAO, format = "%d/%m/%Y"),
Anio_Exacto = year(Fecha_Obj)
) %>%
filter(!is.na(Anio_Exacto) & Anio_Exacto > 1900) %>%
mutate(
Decada_Concl = floor(Anio_Exacto / 10) * 10,
Periodo = paste0(Decada_Concl, " - ", Decada_Concl + 9)
)
Variable_Exacta <- Datos$Anio_Exacto
if (length(Variable_Exacta) == 0) stop("ERROR: No hay datos válidos para CONCLUSIÓN.")
# TABLA DE FRECUENCIAS
df_calc <- data.frame(Periodo = Datos$Periodo, Orden = Datos$Decada_Concl)
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)
)Se presenta la distribución de pozos concluidos agrupada en intervalos de 10 años.
totales <- c("TOTAL", sum(ni), round(sum(hi), 2), "-", "-", "-", "-")
TDF_Char <- TDF_Decadas %>% mutate(across(everything(), as.character))
TDF_Show <- rbind(TDF_Char, totales)
TDF_Show %>%
gt() %>%
tab_header(
title = md("**DISTRIBUCIÓN POR DÉCADAS**"),
subtitle = md("Variable: **Año de Conclusión**")
) %>%
tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
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(groups = c("title", "subtitle"))
) %>%
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: Año de Conclusión | ||||||
| Periodo (Década) | Cant. Pozos (ni) | Porcentaje (hi%) | Ni (Asc) | Ni (Desc) | Hi (Asc) | Hi (Desc) |
|---|---|---|---|---|---|---|
| 1920 - 1929 | 2 | 0.01 | 2 | 29311 | 0.01 | 100 |
| 1930 - 1939 | 4 | 0.01 | 6 | 29309 | 0.02 | 99.99 |
| 1940 - 1949 | 189 | 0.64 | 195 | 29305 | 0.67 | 99.98 |
| 1950 - 1959 | 818 | 2.79 | 1013 | 29116 | 3.46 | 99.33 |
| 1960 - 1969 | 2427 | 8.28 | 3440 | 28298 | 11.74 | 96.54 |
| 1970 - 1979 | 2523 | 8.61 | 5963 | 25871 | 20.34 | 88.26 |
| 1980 - 1989 | 9533 | 32.52 | 15496 | 23348 | 52.87 | 79.66 |
| 1990 - 1999 | 3662 | 12.49 | 19158 | 13815 | 65.36 | 47.13 |
| 2000 - 2009 | 5480 | 18.7 | 24638 | 10153 | 84.06 | 34.64 |
| 2010 - 2019 | 4673 | 15.94 | 29311 | 4673 | 100 | 15.94 |
| TOTAL | 29311 | 100 | - | - | - | - |
| Fuente: Tabela de Poços 2018 | ||||||
Representación visual de la actividad de perforación en Brasil.
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 — escala local
par(mar = c(10, 5, 4, 2))
bp <- barplot(
vals_y,
main = "Gráfica N°1: Distribución de Fecha de Conclusión de Pozos Petroleros de Brasil",
ylab = "Cantidad de Pozos Concluidos",
cex.main = 0.8,
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 — escala corregida
par(mar = c(10, 5, 4, 2))
bp2 <- barplot(
vals_y,
main = "Gráfica N°2: Distribución de Fecha de Conclusión de Pozos Petroleros de Brasil",
ylab = "Cantidad de Pozos Concluidos",
cex.main = 0.8,
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 = 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)vals_y_pct <- TDF_Decadas$hi
# GRÁFICO 3: Porcentual — escala local
par(mar = c(10, 5, 4, 2))
bp3 <- barplot(
vals_y_pct,
main = "Gráfica N°3: Distribución Porcentual de Fecha de Conclusión de Pozos Petroleros de Brasil",
ylab = "% del Total",
cex.main = 0.8,
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 — escala global (0 a 100%)
par(mar = c(10, 5, 4, 2))
bp4 <- barplot(
vals_y_pct,
main = "Gráfica N°4: Distribución Porcentual de Fecha de Conclusión de Pozos Petroleros de Brasil",
ylab = "% del Total",
cex.main = 0.8,
col = col_gris_azulado, border = "white",
axes = FALSE, ylim = c(0, 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ÁFICO 5: Boxplot
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 Conclusión de Pozos Petroleros de Brasil",
xlab = "",
outline = TRUE, outpch = 19, outcol = "#C0392B",
cex.main = 0.8,
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 de Conclusión", line = 4)
grid(nx = NA, ny = NULL, col = "lightgray", lty = "dotted")# GRÁFICO 6: Ojivas ascendente y descendente
par(mar = c(10, 5, 4, 8), xpd = TRUE)
x_vals_num <- TDF_Raw$Orden
y_asc <- TDF_Decadas$Ni_asc
y_desc <- TDF_Decadas$Ni_desc
col_azul <- "#2E4053"
col_rojo <- "#C0392B"
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 Conclusión de Pozos Petroleros de Brasil",
cex.main = 0.8,
ylab = "Frecuencia Acumulada", xlab = "",
axes = FALSE, frame.plot = FALSE
)
axis(1, at = x_vals_num, labels = TDF_Decadas$Periodo,
las = 2, 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 = 8)
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(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")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 Conclusión (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 de Conclusión"
) %>%
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 de Conclusión | ||||||||||
| 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 Conclusión (Exacto) | [1922; 2018] | 1,990.57 | 1,988.00 | 1986 | 261.71 | 16.18 | 0.81 | −0.3086 | −0.52 | 88 outliers |
| Autor: Ashly Alzate | ||||||||||
Los valores de la variable Año de Conclusión fluctúan entre 1922 y 2018 y giran en torno a la media de 1,990.57 (próxima a la mediana de 1,988.00), con una desviación estándar de 16.18, con 88 outliers identificados, siendo un conjunto de datos heterogéneo (C.V. = 0.81%), cuyos valores se agrupan fuertemente en la parte alta de la variable. La asimetría de −0.3086 confirma una leve cola hacia los años más antiguos. Por lo anterior, el comportamiento es perjudicial, dado que la elevada cantidad de valores atípicos históricos refleja pozos concluidos en épocas muy tempranas, distantes de la tendencia central moderna.