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" ...
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].