##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: Liss Murillo ####
### CARRERA: INGENIERÍA EN PETROLEOS #####
###Grupo 4###
############################################################
# PASO 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 ...
############################################################
# PASO 2: SELECCIÓN Y DEPURACIÓN DE LA VARIABLE
############################################################
salinidad <- Produccio_n_Campo_Sacha_csv$Salinidad_BE
salinidad <- as.numeric(salinidad)
salinidad <- na.omit(salinidad)
############################################################
# PASO 3: NÚMERO DE INTERVALOS (REGLA DE STURGES)
############################################################
k <- 1 + (3.3 * log10(length(salinidad)))
k <- floor(k)
############################################################
# PASO 4: RANGO, AMPLITUD Y CLASES
############################################################
min <- min(salinidad)
max <- max(salinidad)
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)
############################################################
# PASO 5: FRECUENCIAS (ni, hi y acumuladas)
############################################################
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
ni[i] <- sum(salinidad >= Li[i] & salinidad < Ls[i])
}
ni[length(Li)] <- sum(salinidad >= Li[length(Li)] & salinidad <= 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))))
TDFSalinidad <- data.frame(Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc)
############################################################
# PASO 6: TABLAS DE DISTRIBUCIÓN DE FRECUENCIAS
############################################################
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 <- TDFSalinidad %>%
gt() %>%
tab_header(
title = md("*Tabla 1: Distribución de Frecuencias*"),
subtitle = md("**Método Sturges - Variable: Salinidad_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: Salinidad_BE |
| L. Inferior |
L. Superior |
Marca Clase |
Frec. Abs. |
Frec. Rel. % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 0.00 |
6,153.85 |
3,076.92 |
1515 |
19.66% |
1515 |
7705 |
20 |
100 |
| 6,153.85 |
12,307.69 |
9,230.77 |
1360 |
17.65% |
2875 |
6190 |
37 |
80 |
| 12,307.69 |
18,461.54 |
15,384.62 |
1278 |
16.59% |
4153 |
4830 |
54 |
63 |
| 18,461.54 |
24,615.38 |
21,538.46 |
487 |
6.32% |
4640 |
3552 |
60 |
46 |
| 24,615.38 |
30,769.23 |
27,692.31 |
700 |
9.09% |
5340 |
3065 |
69 |
40 |
| 30,769.23 |
36,923.08 |
33,846.15 |
392 |
5.09% |
5732 |
2365 |
74 |
31 |
| 36,923.08 |
43,076.92 |
40,000.00 |
705 |
9.15% |
6437 |
1973 |
84 |
26 |
| 43,076.92 |
49,230.77 |
46,153.85 |
471 |
6.11% |
6908 |
1268 |
90 |
16 |
| 49,230.77 |
55,384.62 |
52,307.69 |
348 |
4.52% |
7256 |
797 |
94 |
10 |
| 55,384.62 |
61,538.46 |
58,461.54 |
161 |
2.09% |
7417 |
449 |
96 |
6 |
| 61,538.46 |
67,692.31 |
64,615.38 |
132 |
1.71% |
7549 |
288 |
98 |
4 |
| 67,692.31 |
73,846.15 |
70,769.23 |
92 |
1.19% |
7641 |
156 |
99 |
2 |
| 73,846.15 |
80,000.00 |
76,923.08 |
64 |
0.83% |
7705 |
64 |
100 |
1 |
| Campo Sacha |
############################################################
# PASO 7: HISTOGRAMA Y TABLA CON INTERVALOS AUTOMÁTICOS
############################################################
histo_Salinidad <- hist(salinidad,
main = "Gráfica: Distribución de la Salinidad_BE\nCampo Sacha",
xlab = "Salinidad_BE",
ylab = "Cantidad",
col = "lightblue",
border = "darkblue",
las = 1)

Limites <- histo_Salinidad$breaks
LimInf <- Limites[1:(length(Limites)-1)]
LimSup <- Limites[2:length(Limites)]
Mc <- histo_Salinidad$mids
ni_R <- histo_Salinidad$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_Salinidad_R <- data.frame(LimInf, LimSup, Mc, ni_R, hi_R,
Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)
tabla3_R_auto <- TDF_Salinidad_R %>%
gt() %>%
tab_header(
title = md("*Tabla 3: Distribución - Intervalos R*"),
subtitle = md("**Método Automático de R - Variable: Salinidad_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: Salinidad_BE |
| L. Inferior |
L. Superior |
Marca Clase |
Frec. Abs. |
Frec. Rel. % |
Ni Asc. |
Ni Desc. |
Hi Asc. % |
Hi Desc. % |
| 0 |
5000 |
2500 |
1201 |
15.59% |
1201 |
7705 |
15.59% |
100.00% |
| 5000 |
10000 |
7500 |
1085 |
14.08% |
2286 |
6504 |
29.67% |
84.41% |
| 10000 |
15000 |
12500 |
1210 |
15.70% |
3496 |
5419 |
45.37% |
70.33% |
| 15000 |
20000 |
17500 |
853 |
11.07% |
4349 |
4209 |
56.44% |
54.63% |
| 20000 |
25000 |
22500 |
297 |
3.85% |
4646 |
3356 |
60.30% |
43.56% |
| 25000 |
30000 |
27500 |
412 |
5.35% |
5058 |
3059 |
65.65% |
39.70% |
| 30000 |
35000 |
32500 |
530 |
6.88% |
5588 |
2647 |
72.52% |
34.35% |
| 35000 |
40000 |
37500 |
664 |
8.62% |
6252 |
2117 |
81.14% |
27.48% |
| 40000 |
45000 |
42500 |
272 |
3.53% |
6524 |
1453 |
84.67% |
18.86% |
| 45000 |
50000 |
47500 |
504 |
6.54% |
7028 |
1181 |
91.21% |
15.33% |
| 50000 |
55000 |
52500 |
228 |
2.96% |
7256 |
677 |
94.17% |
8.79% |
| 55000 |
60000 |
57500 |
157 |
2.04% |
7413 |
449 |
96.21% |
5.83% |
| 60000 |
65000 |
62500 |
94 |
1.22% |
7507 |
292 |
97.43% |
3.79% |
| 65000 |
70000 |
67500 |
74 |
0.96% |
7581 |
198 |
98.39% |
2.57% |
| 70000 |
75000 |
72500 |
91 |
1.18% |
7672 |
124 |
99.57% |
1.61% |
| 75000 |
80000 |
77500 |
33 |
0.43% |
7705 |
33 |
100.00% |
0.43% |
| Intervalos generados automáticamente por hist() |
############################################################
# PASO 8: GRÁFICAS, MEDIDAS ESTADÍSTICAS Y CONCLUSIÓN
############################################################
barplot(TDFSalinidad$ni,
space = 0,
main = "Frecuencia Absoluta Local\nSalinidad_BE",
col = "blue",
xlab = "Marca de Clase",
ylab = "ni",
names.arg = TDFSalinidad$MC)

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

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

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

plot(TDFSalinidad$Ls, TDFSalinidad$Niasc,
type = "o",
col = "blue",
main = "Ojivas Combinadas (ni)\nSalinidad_BE",
xlab = "Salinidad_BE",
ylab = "Frecuencia Acumulada")
lines(TDFSalinidad$Li, TDFSalinidad$Nidsc,
type = "o",
col = "red")

plot(TDFSalinidad$Ls, TDFSalinidad$Hiasc,
type = "o",
col = "darkgreen",
main = "Ojivas Combinadas (%)\nSalinidad_BE",
xlab = "Salinidad_BE",
ylab = "Porcentaje Acumulado",
ylim = c(0,100))
lines(TDFSalinidad$Li, TDFSalinidad$Hidsc,
type = "o",
col = "orange")
abline(h = 50, col = "red", lty = 2)

boxplot(salinidad,
horizontal = TRUE,
col = "blue",
main = "Diagrama de Caja\nSalinidad_BE",
xlab = "Salinidad_BE")

outliers <- boxplot.stats(salinidad)$out
num_outliers <- length(outliers)
x <- mean(salinidad)
Me <- median(salinidad)
intervalo_modal <- which.max(TDFSalinidad$ni)
li_modal <- TDFSalinidad$Li[intervalo_modal]
ls_modal <- TDFSalinidad$Ls[intervalo_modal]
ri <- min(salinidad)
rs <- max(salinidad)
varianza <- var(salinidad)
s <- sd(salinidad)
CV <- (s / x) * 100
library(e1071)
As <- skewness(salinidad)
K <- kurtosis(salinidad)
TablaIndicadores <- data.frame(
Variable = "Salinidad_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: Salinidad_BE**")
) %>%
tab_source_note(
source_note = md("Campo Sacha")
)
| Tabla: Indicadores estadísticos |
| Variable: Salinidad_BE |
| Variable |
minimo |
maximo |
x |
Me |
Moda |
sd |
Cv |
As |
K |
Outliers |
| Salinidad_BE |
0 |
80000 |
22946.26 |
17000 |
[0, 6153.85] |
18369.11 |
80.05 |
0.78 |
-0.26 |
0 |
| Campo Sacha |
# CONCLUSIÓN
# La variable Salinidad_BE fluctúa entre 0 y 80 000, con valores concentrados alrededor de 17 000 (mediana) y una media de 22 946,26, presentando una desviación estándar de 18 369,11, lo que evidencia una alta dispersión (CV = 80,05 %). Los valores se concentran en la parte baja de la variable (intervalo modal: 0 – 6 153,85), con asimetría positiva moderada (0,78), distribución platicúrtica (K = −0,26) y ausencia de valores atípicos, indicando un comportamiento heterogéneo de la salinidad en el Campo Sacha.