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