# 1. CARGAR DATOS

library(readxl)
Produccio_n_Campo_Sacha_csv<- read_excel("C:/Users/LEO/Documents/Producción Campo Sacha.csv.xlsx")
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 ...
##  $ Gas_BE                : 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 ...
gas <- Produccio_n_Campo_Sacha_csv$Gas_BE
gas <- as.numeric(gas)
gas <- na.omit(gas)

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

min <- min(gas)
max <- max(gas)
R <- max - min
A <- R / k

Li <- round(seq(from = min, to = max - A, by = A), 4)
Ls <- round(seq(from = min + A, to = max, by = A), 4)
MC <- round((Li + Ls) / 2, 2)

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

cat("Suma de ni =", sum(ni), "\n")
## Suma de ni = 7705
hi <- ni / sum(ni) * 100
cat("Suma de hi =", sum(hi), "\n")
## Suma de hi = 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi))
Hidsc <- round(rev(cumsum(rev(hi))))

TDFGas <- data.frame(Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc)

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
tabla1_sturges <- TDFGas %>%
  gt() %>%
  tab_header(
    title = md("*Tabla 1: Distribución de Frecuencias*"),
    subtitle = md("**Método Sturges - Variable: Gas_BE**")
  ) %>%
  tab_source_note(
    source_note = md("Campo Sacha")
  ) %>%
  cols_label(
    Li = "L. Inferior",
    Ls = "L. Superior",
    MC = "Marca Clase",
    ni = "Frec. Abs.",
    hi = "Frec. Rel. %",
    Niasc = "Ni Asc.",
    Nidsc = "Ni Desc.",
    Hiasc = "Hi Asc. %",
    Hidsc = "Hi Desc. %"
  ) %>%
  fmt_number(columns = c(Li, Ls, MC), decimals = 2) %>%
  fmt_number(columns = hi, decimals = 2, pattern = "{x}%")

tabla1_sturges
Tabla 1: Distribución de Frecuencias
Método Sturges - Variable: Gas_BE
L. Inferior L. Superior Marca Clase Frec. Abs. Frec. Rel. % Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
0.02 95.02 47.52 5531 71.78% 5531 7705 72 100
95.02 190.02 142.52 1053 13.67% 6584 2174 85 28
190.02 285.02 237.52 461 5.98% 7045 1121 91 15
285.02 380.01 332.51 318 4.13% 7363 660 96 9
380.01 475.01 427.51 217 2.82% 7580 342 98 4
475.01 570.01 522.51 44 0.57% 7624 125 99 2
570.01 665.01 617.51 10 0.13% 7634 81 99 1
665.01 760.01 712.51 31 0.40% 7665 71 99 1
760.01 855.01 807.51 26 0.34% 7691 40 100 1
855.01 950.00 902.51 0 0.00% 7691 14 100 0
950.00 1,045.00 997.50 0 0.00% 7691 14 100 0
1,045.00 1,140.00 1,092.50 5 0.06% 7696 14 100 0
1,140.00 1,235.00 1,187.50 9 0.12% 7705 9 100 0
Campo Sacha
histo_Gas <- hist(gas,
                  main = "Gráfica: Distribución del Gas_BE\nCampo Sacha",
                  xlab = "Gas_BE",
                  ylab = "Cantidad",
                  col = "lightblue",
                  border = "darkblue",
                  las = 1)

Limites <- histo_Gas$breaks
LimInf <- Limites[1:(length(Limites)-1)]
LimSup <- Limites[2:length(Limites)]
Mc <- histo_Gas$mids
ni_R <- histo_Gas$counts

cat("Suma de ni (R automático) =", sum(ni_R), "\n")
## Suma de ni (R automático) = 7705
hi_R <- ni_R / sum(ni_R) * 100
cat("Suma de hi (R automático) =", sum(hi_R), "\n")
## Suma de hi (R automático) = 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_Gas_R <- data.frame(LimInf, LimSup, Mc, ni_R, hi_R,
                        Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)

tabla3_R_auto <- TDF_Gas_R %>%
  gt() %>%
  tab_header(
    title = md("*Tabla 3: Distribución - Intervalos R*"),
    subtitle = md("**Método Automático de R - Variable: Gas_BE**")
  ) %>%
  tab_source_note(
    source_note = md("Intervalos generados automáticamente por hist()")
  ) %>%
  cols_label(
    LimInf = "L. Inferior",
    LimSup = "L. Superior",
    Mc = "Marca Clase",
    ni_R = "Frec. Abs.",
    hi_R = "Frec. Rel. %",
    Ni_asc = "Ni Asc.",
    Ni_dsc = "Ni Desc.",
    Hi_asc = "Hi Asc. %",
    Hi_dsc = "Hi Desc. %"
  ) %>%
  fmt_number(columns = c(hi_R, Hi_asc, Hi_dsc),
             decimals = 2,
             pattern = "{x}%")

tabla3_R_auto
Tabla 3: Distribución - Intervalos R
Método Automático de R - Variable: Gas_BE
L. Inferior L. Superior Marca Clase Frec. Abs. Frec. Rel. % Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
0 100 50 5618 72.91% 5618 7705 72.91% 100.00%
100 200 150 1016 13.19% 6634 2087 86.10% 27.09%
200 300 250 486 6.31% 7120 1071 92.41% 13.90%
300 400 350 286 3.71% 7406 585 96.12% 7.59%
400 500 450 198 2.57% 7604 299 98.69% 3.88%
500 600 550 29 0.38% 7633 101 99.07% 1.31%
600 700 650 2 0.03% 7635 72 99.09% 0.93%
700 800 750 36 0.47% 7671 70 99.56% 0.91%
800 900 850 20 0.26% 7691 34 99.82% 0.44%
900 1000 950 0 0.00% 7691 14 99.82% 0.18%
1000 1100 1050 5 0.06% 7696 14 99.88% 0.18%
1100 1200 1150 8 0.10% 7704 9 99.99% 0.12%
1200 1300 1250 1 0.01% 7705 1 100.00% 0.01%
Intervalos generados automáticamente por hist()
barplot(TDFGas$ni,
        space = 0,
        main = "Frecuencia Absoluta Local\nGas_BE",
        col = "blue",
        xlab = "Marca de Clase",
        ylab = "ni",
        names.arg = TDFGas$MC)

barplot(TDFGas$Niasc,
        space = 0,
        main = "Frecuencia Absoluta Global\nGas_BE",
        col = "steelblue",
        ylab = "Ni",
        names.arg = round(TDFGas$MC,2),
        las = 2)

barplot(TDFGas$hi,
        space = 0,
        col = "blue",
        xlab = "Marca de Clase",
        ylab = "Porcentaje (%)",
        names.arg = TDFGas$MC)

barplot(TDFGas$Hiasc,
        space = 0,
        main = "Porcentaje Acumulado\nGas_BE",
        col = "lightblue",
        border = "darkblue",
        ylab = "Porcentaje (%)",
        names.arg = round(TDFGas$MC,2),
        ylim = c(0,100),
        las = 2)

plot(TDFGas$Ls, TDFGas$Niasc,
     type = "o",
     col = "blue",
     main = "Ojivas Combinadas (ni)\nGas_BE",
     xlab = "Gas_BE",
     ylab = "Frecuencia Acumulada")

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

plot(TDFGas$Ls, TDFGas$Hiasc,
     type = "o",
     col = "darkgreen",
     main = "Ojivas Combinadas (%)\nGas_BE",
     xlab = "Gas_BE",
     ylab = "Porcentaje Acumulado",
     ylim = c(0,100))

lines(TDFGas$Li, TDFGas$Hidsc,
      type = "o",
      col = "orange")

abline(h = 50, col = "red", lty = 2)

boxplot(gas,
        horizontal = TRUE,
        col = "blue",
        main = "Diagrama de Caja\nGas_BE",
        xlab = "Gas_BE")

outliers <- boxplot.stats(gas)$out
num_outliers <- length(outliers)

x <- mean(gas)
Me <- median(gas)

intervalo_modal <- which.max(TDFGas$ni)
li_modal <- TDFGas$Li[intervalo_modal]
ls_modal <- TDFGas$Ls[intervalo_modal]

ri <- min(gas)
rs <- max(gas)

varianza <- var(gas)
s <- sd(gas)
CV <- (s / x) * 100

library(e1071)
As <- skewness(gas)
K <- kurtosis(gas)

TablaIndicadores <- data.frame(
  Variable = "Gas_BE",
  minimo = round(ri,2),
  maximo = round(rs,2),
  x = round(x,2),
  Me = round(Me,2),
  Moda = paste0("[",round(li_modal,2),", ",round(ls_modal,2),"]"),
  sd = round(s,2),
  Cv = round(CV,2),
  As = round(As,2),
  K = round(K,2),
  Outliers = num_outliers
)

TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("*Tabla: Indicadores estadísticos*"),
    subtitle = md("**Variable: Gas_BE**")
  ) %>%
  tab_source_note(
    source_note = md("Campo Sacha")
  )
Tabla: Indicadores estadísticos
Variable: Gas_BE
Variable minimo maximo x Me Moda sd Cv As K Outliers
Gas_BE 0.02 1235 98.34 52.17 [0.02, 95.02] 127.26 129.4 3.07 13.89 835
Campo Sacha
# CONCLUSIÓN
#La variable "Gas_BE" presenta valores que oscilan entre 0.02 y 1235, con una media aritmética de 98.34 y una mediana de 52.17, indicando que la mayor parte de los datos se concentra por debajo de la media debido a la presencia de valores extremadamente altos. El intervalo modal se encuentra entre 0.02 y 95.02, reflejando que los registros más frecuentes se ubican en la parte baja de la escala de medición. La desviación estándar de 127.26 y el coeficiente de variación de 129.4% evidencian una dispersión considerable, lo que sugiere alta variabilidad en las mediciones. La distribución muestra una marcada asimetría positiva (3.07) y una curtosis elevada (13.89), indicando que la mayoría de los datos se concentra en la parte baja con colas largas hacia valores extremos. Además, se identifican 835 valores atípicos, lo que refuerza la presencia de registros extremos que podrían corresponder a lecturas extraordinarias o errores de medición. En conjunto, el comportamiento de la variable indica un proceso heterogéneo, con gran dispersión y predominio de valores bajos, aunque con mediciones extremas que requieren análisis detallado para interpretar correctamente la dinámica del Campo Sacha.