##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: Liss Murillo ####
### CARRERA: INGENIERÍA EN PETROLEOS #####

#1. Carga de Datos
library(readxl)
Produccio_n_Campo_Sacha_csv <- read_excel("r-graficas/Producción Campo Sacha.csv.xlsx")
## New names:
## • `` -> `...16`
View(Produccio_n_Campo_Sacha_csv)
str(Produccio_n_Campo_Sacha_csv)
## tibble [8,344 × 31] (S3: tbl_df/tbl/data.frame)
##  $ mes                   : chr [1:8344] "Ene" "Ene" "Ene" "Ene" ...
##  $ día                   : num [1:8344] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Pozo                  : chr [1:8344] "SACHA-001A" "SACHA-019A" "SACHA-052B" "SACHA-083A" ...
##  $ Campo                 : chr [1:8344] "SACHA" "SACHA" "SACHA" "SACHA" ...
##  $ Reservorio            : chr [1:8344] "U" "U" "U INFERIOR" "HOLLIN INFERIOR" ...
##  $ Bpd                   : num [1:8344] NA 53 249 139 186 136 NA 456 161 164 ...
##  $ Bppd_BH               : num [1:8344] 159 NA NA NA NA NA 155 NA NA NA ...
##  $ Bfpd_BE               : num [1:8344] NA 534 346 1158 1163 ...
##  $ Bfpd_BH               : num [1:8344] 695 NA NA NA NA NA 441 NA NA NA ...
##  $ Bapd_BE               : num [1:8344] NA 481 97 1019 977 ...
##  $ Bapd_BH               : num [1:8344] 536 NA NA NA NA NA 286 NA NA NA ...
##  $ Bsw_BE                : num [1:8344] NA 90.1 28 88 84 ...
##  $ Bsw_BH                : num [1:8344] 77.1 NA NA NA NA ...
##  $ Api_BE                : num [1:8344] NA 26.7 27.8 27.7 24 20.5 NA 28.5 29.9 26.3 ...
##  $ Api_BH                : num [1:8344] 27.8 NA NA NA NA NA 23.2 NA NA NA ...
##  $ ...16                 : num [1:8344] NA 10.76 50.55 1.11 27.9 ...
##  $ Gas_BH                : num [1:8344] 32.3 NA NA NA NA ...
##  $ Salinidad_BE          : num [1:8344] NA 15920 30227 1600 13000 ...
##  $ Salinidad_BH          : num [1:8344] 10800 NA NA NA NA NA 3800 NA NA NA ...
##  $ Rgl_BE                : num [1:8344] NA 20.15 146.1 0.96 23.99 ...
##  $ Rgl_BH                : num [1:8344] 46.5 NA NA NA NA ...
##  $ Gor_BE                : num [1:8344] NA 203.02 203.01 7.99 150 ...
##  $ Gor_BH                : num [1:8344] 203 NA NA NA NA ...
##  $ Horas_BE              : num [1:8344] NA 4 5 4 4 10 NA 4 10 10 ...
##  $ Horas_BH              : num [1:8344] 4 NA NA NA NA NA 4 NA NA NA ...
##  $ Bomba_BE              : chr [1:8344] NA "SF-320|SF-320|SF-900|SFGH2500/520/180/9259" "RC 1000|RC 1000|RC 1000/300/120/9250" "P23/68/30/7000" ...
##  $ Bomba_BH              : chr [1:8344] "JET  12K/0//0" NA NA NA ...
##  $ Frecuencia Operaciones: num [1:8344] NA 65 62 46 59 52 NA 58.5 57 54 ...
##  $ Voltaje               : num [1:8344] NA 479 457 364 440 452 NA 475 455 439 ...
##  $ Amperaje              : num [1:8344] NA 29 35 14 59 30 NA 23 35 34 ...
##  $ Presión Intake        : num [1:8344] NA 484 406 0 345 162 NA 546 338 0 ...
##2.Extraer la variable continua 
Bapd_BE <- Produccio_n_Campo_Sacha_csv$Bapd_BE
Bapd_BE <- as.numeric(Bapd_BE)
Bapd_BE <- na.omit(Bapd_BE)

##3. Cálculo de intervalos (sturges)
R <- max(Bapd_BE) - min(Bapd_BE)
k <- floor(1 + (3.3 * log10(length(Bapd_BE))))
A <- R / k

liminf <- seq(from = min(Bapd_BE), 
              by = A, 
              length.out = k)

limsup <- liminf + A
limsup[k] <- max(Bapd_BE)

MC <- (liminf + limsup) / 2

##4.Tabla de distribución de frecuencias
##4.1 Frecuencia absoluta
ni <- numeric(k)
for (i in 1:k) {
  if (i == k) {
    ni[i] <- sum(Bapd_BE >= liminf[i] &Bapd_BE <= limsup[i])
  } else {
    ni[i] <- sum(Bapd_BE >= liminf[i] & Bapd_BE < limsup[i])
  }
}

##4.2 Frecuencias relativas y acumuladas
hi <- (ni / length(Bapd_BE)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

##4.3 Tabla de frecuencias
tabla_Bapd_BE<- data.frame(
  Límite_Inferior = round(liminf, 2),
  Límite_Superior = round(limsup, 2),
  Marca_Clase = round(MC, 2),
  ni = ni,
  hi_porc = round(hi, 2),
  Ni_asc = Niasc,
  Ni_dsc = Nidsc,
  Hiasc_porc = round(Hiasc, 2),
  Hidsc_porc = round(Hidsc, 2))

# TABLA 1 CON GT()
library(gt)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(e1071)
tabla_Bapd_BE %>%
  gt() %>%
  tab_header(
    title = md("**Tabla 1: Distribución de Frecuencias de Bapd_BE"),
    subtitle = md("Campo Sacha | Método Sturges")  
  ) %>%
  tab_source_note(
    source_note = md("**Campo Sacha**")
  ) %>%  # ¡SOLO UN PARÉNTESIS AQUÍ!
  cols_label(
    Límite_Inferior = "L. Inferior",
    Límite_Superior = "L. Superior", 
    Marca_Clase = "Marca Clase",
    hi_porc = "hi %",
    Ni_asc = "Ni Asc.",
    Ni_dsc = "Ni Desc.",
    Hiasc_porc = "Hi Asc. %",
    Hidsc_porc = "Hi Desc. %"
  ) %>%
  fmt_number(
    columns = c(Límite_Inferior, Límite_Superior, Marca_Clase),
    decimals = 2
  ) %>%
  fmt_number(
    columns = c(hi_porc, Hiasc_porc, Hidsc_porc),
    decimals = 2,
    pattern = "{x}%"
  )
**Tabla 1: Distribución de Frecuencias de Bapd_BE
Campo Sacha | Método Sturges
L. Inferior L. Superior Marca Clase ni hi % Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
1.00 329.00 165.00 5464 70.91% 5464 7705 70.91% 100.00%
329.00 657.00 493.00 847 10.99% 6311 2241 81.91% 29.09%
657.00 985.00 821.00 410 5.32% 6721 1394 87.23% 18.09%
985.00 1,313.00 1,149.00 346 4.49% 7067 984 91.72% 12.77%
1,313.00 1,641.00 1,477.00 177 2.30% 7244 638 94.02% 8.28%
1,641.00 1,969.00 1,805.00 133 1.73% 7377 461 95.74% 5.98%
1,969.00 2,297.00 2,133.00 107 1.39% 7484 328 97.13% 4.26%
2,297.00 2,625.00 2,461.00 72 0.93% 7556 221 98.07% 2.87%
2,625.00 2,953.00 2,789.00 5 0.06% 7561 149 98.13% 1.93%
2,953.00 3,281.00 3,117.00 54 0.70% 7615 144 98.83% 1.87%
3,281.00 3,609.00 3,445.00 61 0.79% 7676 90 99.62% 1.17%
3,609.00 3,937.00 3,773.00 17 0.22% 7693 29 99.84% 0.38%
3,937.00 4,265.00 4,101.00 12 0.16% 7705 12 100.00% 0.16%
Campo Sacha
##5. Gráficos
##5.1 Histograma
hist(Bapd_BE,
     main = "Gráfica No.1: Distribución de Bapd_BE - Campo Sacha",
     breaks = seq(min(Bapd_BE), max(Bapd_BE) + A, by = A),
     xlab = "Bapd_BE",
     ylab = "Cantidad",
     col = "lightblue",
     border = "darkblue",
     xaxt = "n")  # IMPORTANTE: Suprimir eje X automático

# Eje X personalizado con MARCAS DE CLASE
axis(1, at = MC,  # Posiciones: Marcas de Clase
     labels = round(MC, 2),  # Etiquetas: valores redondeados
     las = 1)  # Etiquetas horizontales

##5.2 Ojivas
x_asc <- c(min(liminf), limsup)
y_asc <- c(0, Niasc)
x_desc <- c(liminf, max(limsup))
y_desc <- c(Nidsc, 0)
x_range <- range(c(x_asc, x_desc))
y_range <- c(0, max(c(y_asc, y_desc)))

plot(x_asc, y_asc, type = "o", col = "skyblue",
     main = "Gráfica No.2: Ojivas Ascendente y Descendente de Bapd_BE",
     xlab = "Bapd_BE",
     ylab = "Frecuencia acumulada",
     xlim = x_range, ylim = y_range,
     xaxt = "n", pch = 16, lwd = 2)

axis(1, at = pretty(x_range), 
     labels = format(pretty(x_range), scientific = FALSE))
axis(2, at = pretty(y_range))

lines(x_desc, y_desc, type = "o", col = "steelblue4", pch = 17, lwd = 2)

legend("right", 
       legend = c("Ojiva Ascendente", "Ojiva Descendente"),
       col = c("skyblue", "steelblue4"), 
       pch = c(16, 17), 
       lty = 1, 
       lwd = 2,
       cex = 0.8)

##5.3 Diagramas de cajas
boxplot(Bapd_BE, 
        horizontal = TRUE, 
        col = "steelblue",
        main = "Gráfica No.3: Distribución de Bapd_BE - Campo Sacha",
        xlab = "Bapd_BE",
        xaxt = "n")

axis(1, at = pretty(Bapd_BE), 
     labels = format(pretty(Bapd_BE), scientific = FALSE))

# Outliers

outliers <- boxplot.stats(Bapd_BE)$out
cat("\nNúmero de outliers:", length(outliers), "\n")
## 
## Número de outliers: 984
if(length(outliers) > 0) {
  cat("Outliers:", round(outliers, 2), "\n")
}
## Outliers: 1019 2175 4153 1953 3365 2335 1221 1062 2244 1541 1092 2383 1062 2301 3000 1046 1388 986 3000 1063 1867 3328 1262 3411 1344 1853 3576 989 2322 2386 1032 1552 1829 1019 1224 1804 1374 1038 2175 1942 1547 2275 2389 1050 1075 1262 1834 1063 1353 1534 1025 1404 1862 1179 1046 1111 2244 1527 1092 1891 1432 1239 1541 1104 2253 2389 1829 3323 1030 1236 2164 3584 994 3411 1541 1386 2383 1817 1352 989 1018 1896 1834 1030 1262 2189 990 3000 4153 1048 3305 1434 1380 2383 1220 3434 1019 1344 3567 1783 1418 1062 1945 1179 1995 1525 1981 989 1389 2390 1239 1061 4221 1389 1046 2172 1227 3421 2248 2013 1525 2031 1742 1030 1408 1810 2175 3585 2392 1111 1004 1061 4221 3585 1389 1119 1098 2890 1029 1208 1389 3482 1527 2148 992 3434 1812 2031 1518 3305 1025 3243 1046 1104 2396 1264 1353 1360 1036 1397 1062 1995 3355 1371 1485 1211 2175 3069 2167 996 1053 1216 2390 1781 1045 1030 1734 1001 1209 1001 1525 2394 1211 3446 1119 2927 2090 2172 1381 989 4221 2013 1380 3305 1038 1025 996 1220 1755 1958 1049 3583 2390 1781 2189 1062 2045 1353 989 3483 1004 1248 4265 3237 1029 1030 1157 1778 1055 1485 1380 3441 1778 2915 1995 2170 1001 1091 1049 1013 2164 4243 1264 1520 1035 1025 1276 1771 1734 2335 997 1833 1119 2979 1371 1833 1015 1734 2390 1833 1264 1979 1029 1030 2396 1046 3585 1379 1775 1520 1102 2248 1781 1357 1527 3237 1833 2223 1010 1130 1527 989 2396 997 993 1004 1055 1062 1485 1023 3489 2045 1038 1097 4243 1268 1958 3001 1049 1995 1058 2184 1011 997 1013 1479 990 2379 4199 1035 1742 1001 2003 1069 1019 3411 2025 3536 1833 2062 1087 1478 1054 1411 1382 1357 1376 1676 1015 2383 1953 1247 1766 1352 1085 1080 1492 3602 1113 1781 2149 1282 1501 1059 1268 3246 2179 1085 1598 1057 1527 1030 2176 1602 1860 1124 3007 1483 2379 989 1035 1001 2181 1085 997 2003 1352 1072 1382 2248 1520 3604 3246 1030 993 1943 1059 1268 1072 1689 2383 4199 1275 1001 1602 1104 1054 3536 2062 1689 3536 997 1112 1766 2062 1104 1995 3007 1352 1087 2390 3536 1275 1995 1352 1034 1386 999 1282 1035 2161 1085 1846 1397 1781 3051 989 1010 1786 2263 1061 1943 1050 1550 1685 1001 1119 2132 1400 1406 1558 1036 993 3441 1302 1407 1775 2313 2003 1057 1121 3587 3228 1010 2396 1826 2317 1112 2363 1522 989 2145 3436 2062 3037 1386 2918 2089 1127 1176 1058 1051 1709 1063 996 2312 1786 2910 1357 2368 2979 1046 2152 1404 3024 3591 999 3116 1995 1101 2160 3101 1781 1282 1050 1386 2216 996 3368 3017 989 1681 3483 3391 1113 1160 1055 1053 2371 2325 3391 1353 1407 3251 2207 3278 1001 3244 1052 1046 2379 993 3377 1988 1097 3602 3466 989 1063 1761 3399 3011 3246 1689 2089 2325 1775 1162 1404 993 1119 1514 1514 3584 1051 2172 1407 1338 2374 3515 1766 1101 3255 1697 2143 2093 1807 2375 2138 1112 1052 1053 1404 993 1774 3004 1265 1514 1216 2325 1558 2121 3594 2318 3246 1160 1350 1681 2353 2160 1680 1795 1807 1282 3004 1407 1763 1051 1766 993 2337 1380 1996 4188 1162 1689 1059 1481 2349 2207 3810 1807 1113 1061 2390 3765 1250 3264 2156 1407 3515 2093 1121 1046 1404 1767 1095 1053 2375 1514 1160 2383 2145 1112 2089 1353 1250 1697 2160 1778 2253 2386 3855 2067 3594 1059 2156 1400 1239 1072 1807 1380 1103 3025 1162 1088 1029 1568 1689 2004 3283 1400 1161 1051 1365 1059 3810 1080 2383 1350 1673 1067 1795 1207 1121 2135 1020 1393 1775 2111 993 1338 1157 1038 1676 1061 1393 1076 2389 1778 2253 1514 3515 1112 3593 2156 1795 1088 3031 1090 1035 1751 1714 1035 1772 2376 3103 1329 1217 1619 1153 1686 1065 2192 2178 1371 1010 3614 1177 1038 993 1112 1189 3453 1067 3275 3108 3187 993 1112 1029 1083 1686 995 1243 1171 1207 1243 3593 3173 1162 1584 1404 1131 1059 1502 1392 3103 1189 1029 1435 1112 1767 1018 1080 1622 1392 2376 2253 1514 1619 1425 2375 1335 991 1619 1413 1775 1628 1175 1018 1400 1622 1751 1368 1563 1077 1958 1626 1053 2173 2148 3262 1755 2376 1805 1404 3109 1018 1593 1059 1799 3593 1376 1514 1020 1053 1714 1023 1090 3515 1795 2204 3095 1131 3262 1803 1044 1112 3810 1327 1166 1598 1018 1053 1395 1413 2389 1073 1964 2301 1413 2376 3578 1798 1714 1376 3167 1029 1063 3144 1651 2294 1340 1400 1201 1067 3515 3878 1678 1305 1974 1627 2305 2146 1023 1739 2256 1514 2314 1375 1777 1369 3141 1127 1063 1162 1887 2305 2389 1623 2172 1739 1018 1627 1413 1112 1018 3299 1025 1693 1073 2320 1798 2204 1714 1090 2397 1397 1958 1130 1172 1688 1618 3168 1748 1353 3878 1021 1073 1608 3814 1705 1801 1420 1010 3725 1393 3681 1067 1400 3149 1504 1285 2172 3957 1623 3831 1290 3515 2401 1544 3878 1714 1375 1127 1073 1398 1556 1777 1960 3787 3193 1021 2337 1510 1393 2204 3155 2335 2209 3193 1868 1602 1025 1660 2156 1514 1371 1018 1558 3878 1545 1803 2401 1704 2330 2401 1446 1059 1021 2168 1112 1018 1290 1040 3181 1500 1863 1454 2404 1415 1013 1397 1751 3771 2349 1421 1353 1067 3515 2209 1127 1130 1018 1447 2164 1678 1825 1068 1814 1775 3192 1290 1032 1009 1071 2383 3528 2040 1013 1916 2395 2204 2366 2204 1696 1073 2172 1393 1300 1112 1704 1942 3771 2228 3141 1290 2054 1786 1344 1063 2374 1032
##6. Indicadores estadísticos 
get_mode_interval <- function() {
  idx <- which.max(ni)
  return(paste0("[", round(liminf[idx], 2), ", ", round(limsup[idx], 2), "]"))
}

media <- mean(Bapd_BE)
mediana <- median(Bapd_BE)
moda_intervalo <- get_mode_interval()
desv <- sd(Bapd_BE)
varianza <- var(Bapd_BE)
cv <- (desv / media) * 100
asim <- skewness(Bapd_BE)
curt <- kurtosis(Bapd_BE)     

# CREAR DATA.FRAME DE INDICADORES (¡ESTA PARTE FALTABA!)
indicadores <- data.frame(
  Indicador = c("Mínimo", "Máximo", "Media", "Mediana", "Moda (intervalo)",
                "Desviación Estándar", "Varianza", "Coef. Variación (%)",
                "Asimetría", "Curtosis", "N° Outliers"),
  Valor = c(round(min(Bapd_BE), 2), round(max(Bapd_BE), 2),
            round(media, 2), round(mediana, 2), moda_intervalo,
            round(desv, 2), round(varianza, 2), round(cv, 2),
            round(asim, 2), round(curt, 2), length(outliers))
)

# TABLA 2 CON GT()
indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla 2: Indicadores Estadísticos de Bapd_BE**")
  ) %>%
  tab_source_note(
    source_note = md("**Campo Sacha**")
  ) %>%
  cols_label(
    Indicador = "Indicador",
    Valor = "Valor"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(columns = Indicador)
  )
Tabla 2: Indicadores Estadísticos de Bapd_BE
Indicador Valor
Mínimo 1
Máximo 4265
Media 390.36
Mediana 115
Moda (intervalo) [1, 329]
Desviación Estándar 651.19
Varianza 424053
Coef. Variación (%) 166.82
Asimetría 2.83
Curtosis 9.06
N° Outliers 984
Campo Sacha
##7. Conclusión 
#La variable Bapd_BE fluctúa entre 1 y 4 265 y sus valores están en torno a los 115 (media = 390.36), con una desviación estándar de 651.19 siendo un conjunto de valores heterogéneos (CV = 166.82 %) cuyos valores se concentran en el intervalo modal [1, 329] y con distribución leptocúrtica (K = 9.06) y sesgo pronunciado hacia la derecha (As = 2.83) a excepción de los 984 valores atípicos identificados, por lo tanto el comportamiento de la variable indica un proceso mayoritariamente inestable con alta dispersión en las mediciones, aunque con un rango principal de concentración que permite identificar tendencias operativas relevantes en el Campo Sacha.