##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: Liss Murillo ####
### CARRERA: INGENIERIA EN PETROLEOS #####
### GRUPO 4 ###

############################################################
# PASO 1: CARGA DE DATOS
############################################################

library(readxl)
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)

Produccio_n_Campo_Sacha_csv <- read_excel(
  "r-graficas/Producción Campo Sacha.csv.xlsx"
)
## New names:
## • `` -> `...16`
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 ...
############################################################
# PASO 2: SELECCION Y DEPURACION DE LA VARIABLE
############################################################

bfpd_bh <- Produccio_n_Campo_Sacha_csv$Bfpd_BH
bfpd_bh <- as.numeric(bfpd_bh)
bfpd_bh <- na.omit(bfpd_bh)

############################################################
# PASO 3: NUMERO DE INTERVALOS (STURGES)
############################################################

k <- floor(1 + 3.3 * log10(length(bfpd_bh)))

############################################################
# PASO 4: RANGO, AMPLITUD Y CLASES
############################################################

min_b <- min(bfpd_bh)
max_b <- max(bfpd_bh)
R <- max_b - min_b
A <- R / k

Li <- round(seq(min_b, max_b - A, by = A), 2)
Ls <- round(seq(min_b + A, max_b, by = A), 2)
MC <- round((Li + Ls) / 2, 2)

############################################################
# PASO 5: CANTIDADES Y PORCENTAJES
############################################################

ni <- numeric(length(Li))
for (i in 1:length(Li)) {
  ni[i] <- sum(bfpd_bh >= Li[i] & bfpd_bh < Ls[i])
}
ni[length(ni)] <- sum(bfpd_bh >= Li[length(Li)] & bfpd_bh <= max_b)

hi <- ni / sum(ni) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hidsc <- round(rev(cumsum(rev(hi))), 2)

TDF_Bfpd_BH <- data.frame(
  Li, Ls, MC,
  Cantidad = ni,
  Porcentaje = hi,
  Cantidad_Acumulada = Niasc,
  Cantidad_Descendente = Nidsc,
  Porcentaje_Acumulado = Hiasc,
  Porcentaje_Descendente = Hidsc
)

############################################################
# PASO 6: TABLA 1 – METODO STURGES
############################################################

gt(TDF_Bfpd_BH) |>
  tab_header(
    title = "Tabla 1: Distribucion de Cantidad",
    subtitle = "Metodo Sturges - Variable Bfpd_BH"
  ) |>
  tab_source_note("Campo Sacha")
Tabla 1: Distribucion de Cantidad
Metodo Sturges - Variable Bfpd_BH
Li Ls MC Cantidad Porcentaje Cantidad_Acumulada Cantidad_Descendente Porcentaje_Acumulado Porcentaje_Descendente
48.0 267.7 157.85 163 25.508607 163 639 25.51 100.00
267.7 487.4 377.55 294 46.009390 457 476 71.52 74.49
487.4 707.1 597.25 79 12.363067 536 182 83.88 28.48
707.1 926.8 816.95 66 10.328638 602 103 94.21 16.12
926.8 1146.5 1036.65 15 2.347418 617 37 96.56 5.79
1146.5 1366.2 1256.35 20 3.129890 637 22 99.69 3.44
1366.2 1585.9 1476.05 0 0.000000 637 2 99.69 0.31
1585.9 1805.6 1695.75 0 0.000000 637 2 99.69 0.31
1805.6 2025.3 1915.45 0 0.000000 637 2 99.69 0.31
2025.3 2245.0 2135.15 2 0.312989 639 2 100.00 0.31
Campo Sacha
############################################################
# PASO 7: HISTOGRAMA Y TABLA AUTOMATICA
############################################################

histo_Bfpd_BH <- hist(
  bfpd_bh,
  main = "Grafica 1: Distribucion Bfpd_BH",
  xlab = "Bfpd_BH",
  ylab = "Cantidad",
  col = "lightblue",
  border = "darkblue"
)

LimInf <- histo_Bfpd_BH$breaks[-length(histo_Bfpd_BH$breaks)]
LimSup <- histo_Bfpd_BH$breaks[-1]
Mc <- histo_Bfpd_BH$mids
ni_R <- histo_Bfpd_BH$counts
hi_R <- ni_R / sum(ni_R) * 100

Ni_asc <- cumsum(ni_R)
Ni_dsc <- rev(cumsum(rev(ni_R)))
Hi_asc <- round(cumsum(hi_R), 2)
Hi_dsc <- round(rev(cumsum(rev(hi_R))), 2)

TDF_Bfpd_BH_R <- data.frame(
  LimInf, LimSup, Mc,
  Cantidad = ni_R,
  Porcentaje = hi_R,
  Cantidad_Acumulada = Ni_asc,
  Cantidad_Descendente = Ni_dsc,
  Porcentaje_Acumulado = Hi_asc,
  Porcentaje_Descendente = Hi_dsc
)

gt(TDF_Bfpd_BH_R) |>
  tab_header(
    title = "Tabla 2: Distribucion por Intervalos Automaticos",
    subtitle = "Variable Bfpd_BH"
  )
Tabla 2: Distribucion por Intervalos Automaticos
Variable Bfpd_BH
LimInf LimSup Mc Cantidad Porcentaje Cantidad_Acumulada Cantidad_Descendente Porcentaje_Acumulado Porcentaje_Descendente
0 200 100 73 11.424100 73 639 11.42 100.00
200 400 300 276 43.192488 349 566 54.62 88.58
400 600 500 128 20.031299 477 290 74.65 45.38
600 800 700 64 10.015649 541 162 84.66 25.35
800 1000 900 66 10.328638 607 98 94.99 15.34
1000 1200 1100 10 1.564945 617 32 96.56 5.01
1200 1400 1300 20 3.129890 637 22 99.69 3.44
1400 1600 1500 0 0.000000 637 2 99.69 0.31
1600 1800 1700 0 0.000000 637 2 99.69 0.31
1800 2000 1900 0 0.000000 637 2 99.69 0.31
2000 2200 2100 0 0.000000 637 2 99.69 0.31
2200 2400 2300 2 0.312989 639 2 100.00 0.31
############################################################
# PASO 8: GRAFICAS
############################################################

barplot(ni,
        main = "Grafica 2: Cantidad Local",
        xlab = "Marca de Clase",
        ylab = "Cantidad",
        col = "blue",
        names.arg = MC)

barplot(
  Niasc,
  main = "Grafica 3: Cantidad Acumulada",
  xlab = "Marca de Clase",
  ylab = "Cantidad Acumulada",
  col = "steelblue",
  names.arg = round(MC, 1),
  las = 2,
  cex.names = 0.8
)

barplot(hi,
        main = "Grafica 4: Porcentaje",
        xlab = "Marca de Clase",
        ylab = "Porcentaje (%)",
        col = "blue",
        names.arg = MC)

barplot(
  Hiasc,
  main = "Grafica 5: Porcentaje Acumulado",
  xlab = "Marca de Clase",
  ylab = "Porcentaje Acumulado (%)",
  col = "lightblue",
  ylim = c(0, 100),
  names.arg = round(MC, 1),
  las = 2,
  cex.names = 0.8
)

plot(Ls, Niasc,
     type = "o",
     col = "blue",
     main = "Grafica 6: Ojiva de Cantidad",
     xlab = "Bfpd_BH",
     ylab = "Cantidad Acumulada")

lines(Li, Nidsc, type = "o", col = "red")

plot(Ls, Hiasc,
     type = "o",
     col = "darkgreen",
     main = "Grafica 7: Ojiva Porcentual",
     xlab = "Bfpd_BH",
     ylab = "Porcentaje Acumulado (%)",
     ylim = c(0,100))

lines(Li, Hidsc, type = "o", col = "orange")
abline(h = 50, lty = 2, col = "red")

boxplot(bfpd_bh,
        horizontal = TRUE,
        col = "blue",
        main = "Grafica 8: Diagrama de Caja",
        xlab = "Bfpd_BH",
        ylab = "Cantidad")

############################################################
# PASO 9: TABLA 3 – INDICADORES ESTADISTICOS
############################################################

TablaIndicadores <- data.frame(
  Variable = "Bfpd_BH",
  Minimo = min(bfpd_bh),
  Maximo = max(bfpd_bh),
  Media = mean(bfpd_bh),
  Mediana = median(bfpd_bh),
  SD = sd(bfpd_bh),
  CV = sd(bfpd_bh)/mean(bfpd_bh)*100,
  Asimetria = skewness(bfpd_bh),
  Curtosis = kurtosis(bfpd_bh),
  Outliers = length(boxplot.stats(bfpd_bh)$out)
)

gt(TablaIndicadores) |>
  tab_header(
    title = "Tabla 3: Indicadores Estadisticos",
    subtitle = "Variable Bfpd_BH - Campo Sacha"
  )
Tabla 3: Indicadores Estadisticos
Variable Bfpd_BH - Campo Sacha
Variable Minimo Maximo Media Mediana SD CV Asimetria Curtosis Outliers
Bfpd_BH 48 2245 457.0383 379 282.05 61.71255 1.777434 5.194195 22
############################################################
# CONCLUSION
############################################################
# La variable Bfpd_BH fluctúa entre 48 y 2245 y sus valores se concentran alrededor de 379 (mediana), con una desviación estándar de 282,05, lo que indica una variabilidad moderada-alta. La distribución presenta asimetría positiva (1,78) y curtosis leptocúrtica (5,19), además de la presencia de 22 valores atípicos, evidenciando un comportamiento productivo irregular con eventos extremos.