# 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.