1 Introducción y Metodología

# 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)
)

2 Distribución de Frecuencia

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

3 Análisis Gráfico

Representación visual de la actividad de perforación en Brasil.

3.1 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 — 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)

3.2 Gráficos de Barras (Frecuencia Porcentual)

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)

3.3 Diagrama de Caja y Ojivas

# 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")

4 Resumen Estadístico

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

5 Conclusiones

5.1 Análisis Descriptivo y Conclusiones

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.