1 Carga de Librerías

# Si no las tienes instaladas: install.packages(c("dplyr","gt"))
library(dplyr)
library(gt)

2 Carga de Datos

Datos <- read.csv("produccin-de-pozos-de-gas-y-petrleo-no-convencional.csv",
                   sep = ";", fileEncoding = "UTF-8", stringsAsFactors = FALSE)
str(Datos)
## 'data.frame':    400759 obs. of  40 variables:
##  $ idempresa             : chr  "YSUR" "YSUR" "YSUR" "YSUR" ...
##  $ anio                  : int  2018 2015 2017 2018 2015 2017 2018 2016 2017 2018 ...
##  $ mes                   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ idpozo                : int  132771 131719 145330 132770 136137 131430 132769 135206 131429 132738 ...
##  $ prod_pet              : chr  "7.212" "5.240" "0.00" "3.322" ...
##  $ prod_gas              : chr  "510.173" "1.879.820" "0.00" "101.733" ...
##  $ prod_agua             : chr  "0.34" "1.590" "0.00" "14.2" ...
##  $ iny_agua              : chr  "0" "0.000" "0.00" "0" ...
##  $ iny_gas               : chr  "0" "0.000" "0.00" "0" ...
##  $ iny_co2               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ iny_otro              : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ tef                   : chr  "30.15" "31.000" "0.00" "31" ...
##  $ vida_util             : chr  "" "" "" "" ...
##  $ tipoextraccion        : chr  "Surgencia Natural" "Surgencia Natural" "Sin Sistema de Extracción" "Surgencia Natural" ...
##  $ tipoestado            : chr  "Extracción Efectiva" "Extracción Efectiva" "En Estudio" "Extracción Efectiva" ...
##  $ tipopozo              : chr  "Gasífero" "Gasífero" "Otro tipo" "Gasífero" ...
##  $ observaciones         : chr  "" "" "" "" ...
##  $ fechaingreso          : chr  "2018-02-10 08:37:14.717426" "2015-02-26 13:35:35.533458" "2017-02-16 13:45:37.233373" "2018-02-10 08:37:14.717426" ...
##  $ rectificado           : chr  "f" "f" "f" "f" ...
##  $ habilitado            : chr  "t" "t" "t" "t" ...
##  $ idusuario             : int  444 5 444 444 5 444 444 5 444 444 ...
##  $ empresa               : chr  "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." ...
##  $ sigla                 : chr  "APA.RN.EFO-126(d)" "AEA.NQ.Gu-1176d" "APA.Nq.Hua.x-1" "APA.RN.EFO-122(d)" ...
##  $ formprod              : chr  "LAJA" "PREC" "VMUT" "LAJA" ...
##  $ profundidad           : chr  "3820" "2592" "4100" "3814" ...
##  $ formacion             : chr  "lajas" "precuyo" "vaca muerta" "lajas" ...
##  $ idareapermisoconcesion: chr  "FEO" "NDD" "X009" "FEO" ...
##  $ areapermisoconcesion  : chr  "ESTACION FERNANDEZ ORO" "AL NORTE DE LA DORSAL" "HUACALERA" "ESTACION FERNANDEZ ORO" ...
##  $ idareayacimiento      : chr  "Z155" "GUA" "Y325" "Z155" ...
##  $ areayacimiento        : chr  "ESTACION FERNANDEZ ORO" "GUANACO" "HUACALERA" "ESTACION FERNANDEZ ORO" ...
##  $ cuenca                : chr  "NEUQUINA" "NEUQUINA" "NEUQUINA" "NEUQUINA" ...
##  $ provincia             : chr  "Rio Negro" "Neuquén" "Neuquén" "Rio Negro" ...
##  $ coordenadax           : chr  "-6.783.808.193" "-6.924.999.839" "-6.979.045.203" "-6.786.739.055" ...
##  $ coordenaday           : chr  "-3.901.910.996" "-3.886.503.323" "-3.820.704.866" "-3.900.716.726" ...
##  $ tipo_de_recurso       : chr  "NO CONVENCIONAL" "NO CONVENCIONAL" "NO CONVENCIONAL" "NO CONVENCIONAL" ...
##  $ proyecto              : chr  "GAS PLUS" "GAS PLUS" "Sin Proyecto" "GAS PLUS" ...
##  $ clasificacion         : chr  "EXPLOTACION" "EXPLOTACION" "EXPLORACION" "EXPLOTACION" ...
##  $ subclasificacion      : chr  "DESARROLLO" "DESARROLLO" "EXPLORACION" "DESARROLLO" ...
##  $ sub_tipo_recurso      : chr  "TIGHT" "TIGHT" "SHALE" "TIGHT" ...
##  $ fecha_data            : chr  "31/1/2018" "31/1/2015" "31/1/2017" "31/1/2018" ...

3 Extracción de la Variable

# Variable cuantitativa DISCRETA: año de producción
Anio <- as.numeric(Datos$anio)
Anio <- Anio[!is.na(Anio)]

4 Conteo

n <- length(Anio)
n
## [1] 400759
# --- Regla de Sturges (referencia) ---
k_sturges <- 1 + 3.322 * log10(n)
cat("Numero de clases sugerido por Sturges: k =", round(k_sturges, 2), "\n")
## Numero de clases sugerido por Sturges: k = 19.61
cat("NOTA: 'anio' es discreta con pocos valores distintos (2006 a 2026); no se agrupa\n")
## NOTA: 'anio' es discreta con pocos valores distintos (2006 a 2026); no se agrupa
cat("en clases. Se usa la tabla de frecuencia simplificada generada en R con table().\n")
## en clases. Se usa la tabla de frecuencia simplificada generada en R con table().
TDF_anio <- table(Anio)
TDF_anio
## Anio
##  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018 
##  2368  2442  2280  1698  2038  2599  3640  5184  8777 12841 17225 20734 24895 
##  2019  2020  2021  2022  2023  2024  2025  2026 
## 28917 31716 34506 38918 43219 48439 54222 14101

5 Tabla de Frecuencia

tabla_anio <- as.data.frame(TDF_anio)
colnames(tabla_anio)[1] <- "Anio"

tabla_resumen <- tabla_anio %>%
  rename(ni = Freq) %>%
  mutate(`hi (%)` = round(ni / sum(ni) * 100, 2))

#### Fila de totales ####
totales <- data.frame(Anio = "TOTAL",
                       ni = sum(tabla_resumen$ni),
                       `hi (%)` = sum(tabla_resumen$`hi (%)`),
                       check.names = FALSE)
tabla_final <- rbind(data.frame(lapply(tabla_resumen, as.character), check.names = FALSE), totales)

tabla_final_gt <- tabla_final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Distribución de Frecuencias del Año de Producción**")
  ) %>%
  tab_source_note(source_note = "Autor: Mayerli Nazareno") %>%
  cols_label(
    Anio = "Año",
    ni = "Frecuencia (ni)",
    `hi (%)` = "Porcentaje (hi%)"
  ) %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )

tabla_final_gt
Tabla N°1 de Distribución de Frecuencias del Año de Producción
Año Frecuencia (ni) Porcentaje (hi%)
2006 2368 0.59
2007 2442 0.61
2008 2280 0.57
2009 1698 0.42
2010 2038 0.51
2011 2599 0.65
2012 3640 0.91
2013 5184 1.29
2014 8777 2.19
2015 12841 3.2
2016 17225 4.3
2017 20734 5.17
2018 24895 6.21
2019 28917 7.22
2020 31716 7.91
2021 34506 8.61
2022 38918 9.71
2023 43219 10.78
2024 48439 12.09
2025 54222 13.53
2026 14101 3.52
TOTAL 400759 99.99
Autor: Mayerli Nazareno

6 Gráficas

6.1 Diagramas de Barras de Cantidad

par(mar = c(8, 6, 4, 2))
barplot(TDF_anio,
        main = "", xlab = "", ylab = "",
        col = "darkorange", las = 2)
mtext("Cantidad de Registros", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Año", side = 1, line = 6)
mtext("Gráfica N°1: Cantidad de Registros por Año",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

6.2 Diagramas de Barras Porcentual

hi_valores <- as.numeric(tabla_resumen$`hi (%)`)
par(mar = c(8, 6, 4, 2))
bp <- barplot(hi_valores,
              main = "", xlab = "", ylab = "",
              col = "darkorange",
              ylim = c(0, max(hi_valores) * 1.3),
              names.arg = tabla_resumen$Anio, las = 2)
mtext("Porcentaje %", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Año", side = 1, line = 6)
mtext("Gráfica N°2: Distribución Porcentual por Año",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp, y = hi_valores, labels = paste0(hi_valores, "%"),
     pos = 3, cex = 0.6, col = "black")

6.3 Diagrama de Cajas (Boxplot)

par(mar = c(4, 6, 4, 2))
boxplot(Anio,
        main = "", ylab = "Año",
        col = "lightblue", horizontal = TRUE)
mtext("Gráfica N°3: Diagrama de Caja del Año de Producción",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

6.4 Ojiva

valores <- as.numeric(names(TDF_anio))
Fi <- cumsum(as.numeric(TDF_anio))
par(mar = c(5, 6, 4, 2))
plot(valores, Fi, type = "o", pch = 19, col = "purple",
     main = "", xlab = "Año", ylab = "Frecuencia Acumulada (Fi)")
mtext("Gráfica N°4: Ojiva - Frecuencia Acumulada por Año",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

7 Indicadores Estadísticos

media_anio   <- mean(Anio)
mediana_anio <- median(Anio)
sd_anio      <- sd(Anio)
min_anio     <- min(Anio)
max_anio     <- max(Anio)
cv_anio      <- sd_anio / media_anio * 100

moda_numerica <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
moda_anio <- moda_numerica(Anio)

skewness <- function(x) {
  n <- length(x)
  (sum((x - mean(x))^3) / n) / (sd(x)^3)
}
kurtosis <- function(x) {
  n <- length(x)
  m4 <- sum((x - mean(x))^4) / n
  m2 <- sum((x - mean(x))^2) / n
  m4 / m2^2 - 3
}
as_anio <- skewness(Anio)
k_anio  <- kurtosis(Anio)

bp_stats   <- boxplot.stats(Anio)
atipicos   <- bp_stats$out
n_atipicos <- length(atipicos)

tabla_indicadores <- data.frame(
  "Variable"        = "Año",
  "Rango"           = paste(min_anio, "-", max_anio),
  "Media (Mx)"      = round(media_anio, 2),
  "Mediana (Me)"    = mediana_anio,
  "Moda (Mo)"       = moda_anio,
  "Varianza (V)"    = round(sd_anio^2, 2),
  "Desv. Est. (Sd)" = round(sd_anio, 2),
  "C.V. (%)"        = round(cv_anio, 2),
  "Asimetria (As)"  = round(as_anio, 3),
  "Curtosis (K)"    = round(k_anio, 3),
  check.names = FALSE
)

tabla_indicadores_gt <- tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2 de Indicadores del Año de Producción**")
  ) %>%
  tab_source_note(source_note = "Autor: Mayerli Nazareno") %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )

tabla_indicadores_gt
Tabla N°2 de Indicadores del Año de Producción
Variable Rango Media (Mx) Mediana (Me) Moda (Mo) Varianza (V) Desv. Est. (Sd) C.V. (%) Asimetria (As) Curtosis (K)
Año 2006 - 2026 2020.61 2021 2025 16.49 4.06 0.2 -1.073 1.11
Autor: Mayerli Nazareno

8 Conclusiones

tendencia    <- if (abs(media_anio - mediana_anio) / mediana_anio > 0.05) "mediana" else "media"
valor_tend   <- if (tendencia == "media") round(media_anio, 2) else mediana_anio
homogeneidad <- if (cv_anio <= 33) "homogéneo" else "heterogéneo"
agrupamiento <- if (abs(as_anio) < 0.5) "débilmente" else if (abs(as_anio) < 1) "medianamente" else "fuertemente"
zona         <- if (as_anio > 0.5) "baja" else if (as_anio < -0.5) "alta" else "media"
atipicos_txt <- if (n_atipicos == 0) "sin valores atípicos" else
  paste0("con ", n_atipicos, " valores atípicos (años: ", paste(unique(atipicos), collapse = ", "), ")")

cat(paste0(
  "Los valores de año fluctúan entre ", min_anio, " y ", max_anio,
  " y giran en torno a la ", tendencia, " (", valor_tend, "), ",
  "con una desviación estándar de ", round(sd_anio, 2), ", ",
  atipicos_txt, ", siendo un conjunto de datos **", homogeneidad, "**, ",
  "cuyos valores se agrupan ", agrupamiento, " en la parte ", zona, " de año. ",
  "Por lo anterior, el comportamiento es *[defina 'beneficioso' o 'perjudicial' según el ",
  "contexto: los años más antiguos (2006-2008) aparecen como atípicos porque hay pocos ",
  "registros históricos frente a la actividad reciente]*."
))

Los valores de año fluctúan entre 2006 y 2026 y giran en torno a la media (2020.61), con una desviación estándar de 4.06, con 7090 valores atípicos (años: 2008, 2006, 2007), siendo un conjunto de datos homogéneo, cuyos valores se agrupan fuertemente en la parte alta de año. Por lo anterior, el comportamiento es [defina ‘beneficioso’ o ‘perjudicial’ según el contexto: los años más antiguos (2006-2008) aparecen como atípicos porque hay pocos registros históricos frente a la actividad reciente].