1 Carga de datos

setwd("/cloud/project/")
datos<-read.csv("DATOS.csv", header = TRUE, sep=";" , dec=".")
str(datos)
## 'data.frame':    10190 obs. of  17 variables:
##  $ Distrito_edit                        : chr  "1" "1" "1" "1" ...
##  $ Year_edit_Fecha_del_derrame          : int  2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
##  $ Mes_edit_Fecha_del_derrame           : int  6 3 4 4 6 6 3 9 10 6 ...
##  $ Categoria_Instalaciones              : chr  "Instalacion fija" "Pozos" "Pozos" "Pozos" ...
##  $ Operacion_general                    : chr  "Produccion" "Otro" "Produccion" "Produccion" ...
##  $ Categoria_Fuente                     : chr  NA "Tanques/Almacenamiento" "Lineas/Tuberias" "Infraestructura Fija" ...
##  $ Grupo_causas_probable                : chr  NA "Afectaciones externas" "Factores humanos" "Problemas tecnicos" ...
##  $ Liberacion_petroleo_crudo_edicion    : num  0 0 0 0 0 ...
##  $ Edicion_recuperacion_petroleo_crudo  : num  NA 0 0 0 0 0 0 0 0 NA ...
##  $ Volumen_liberado_Cond_Final          : num  0 0 0 10 0 0 0 1 0 0 ...
##  $ Liberacion_agua_de_produccion_edicion: num  6720 3780 5040 420 10920 ...
##  $ Liberacion_volumen_gas               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Volumen_condensado_recuperado        : num  NA 0 0 1 0 0 0 0 0 NA ...
##  $ Edicion_Recuperacion_agua_producida  : num  NA 420 4620 0 10920 ...
##  $ Derrame_sobre_agua_limpio            : chr  "NO" "NO" "NO" "NO" ...
##  $ Estado_general                       : chr  "Observaciones tecnicas" NA NA NA ...
##  $ Codigo_area                          : int  1 1 1 1 1 1 1 1 1 3 ...

2 Instalacion de Librerias

#install.packages("e1071")
library(e1071)

3 Extraccion de variable

Recuperacion_agua_producida <- datos$Edicion_Recuperacion_agua_producida
Recuperacion_agua_producida <- na.omit(Recuperacion_agua_producida)

4 Calculo de rango y número de clases (Sturges)

R_agua <- max(Recuperacion_agua_producida) - min(Recuperacion_agua_producida)
k_agua <- floor(1 + (3.3 * log10(length(Recuperacion_agua_producida))))
A_agua <- R_agua / k_agua

5 Limites e intervalos

liminf <- seq(from = min(Recuperacion_agua_producida), by = A_agua, length.out = k_agua)
limsup <- liminf + A_agua
limsup[k_agua] <- max(Recuperacion_agua_producida)
MC <- (liminf + limsup) / 2

6 Creacion de Tabla de Frecuencia

6.1 Frecuencias absolutas

ni <- numeric(k_agua)
for (i in 1:k_agua) {
  if (i == k_agua) {
    ni[i] <- length(subset(Recuperacion_agua_producida, 
Recuperacion_agua_producida >= liminf[i] & Recuperacion_agua_producida
<= limsup[i]))
  } else {
    ni[i] <- length(subset(Recuperacion_agua_producida, 
Recuperacion_agua_producida >= liminf[i] & Recuperacion_agua_producida 
< limsup[i]))
  }
}

6.2 Frecuencias relativas y acumuladas

hi <- (ni / length(Recuperacion_agua_producida)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

6.3 Tabla de Frecuencias

tabla_agua <- data.frame(
  liminf = round(liminf, 2),
  limsup = round(limsup, 2),
  MC = round(MC, 2),
  ni = ni,
  hi_porc = round(hi, 2),
  Ni_asc = Niasc,
  Ni_dsc = Nidsc,
  Hiasc_porc = round(Hiasc, 2),
  Hidsc_porc = round(Hidsc, 2)
)
print("TABLA: Distribución de Frecuencias de Recuperación de Agua Producida")
## [1] "TABLA: Distribución de Frecuencias de Recuperación de Agua Producida"
print(tabla_agua)
##     liminf  limsup      MC   ni hi_porc Ni_asc Ni_dsc Hiasc_porc Hidsc_porc
## 1        0  242502  121251 9137   99.76   9137   9159      99.76     100.00
## 2   242502  485004  363753   16    0.17   9153     22      99.93       0.24
## 3   485004  727506  606255    3    0.03   9156      6      99.97       0.07
## 4   727506  970008  848757    1    0.01   9157      3      99.98       0.03
## 5   970008 1212510 1091259    0    0.00   9157      2      99.98       0.02
## 6  1212510 1455012 1333761    1    0.01   9158      2      99.99       0.02
## 7  1455012 1697514 1576263    0    0.00   9158      1      99.99       0.01
## 8  1697514 1940016 1818765    0    0.00   9158      1      99.99       0.01
## 9  1940016 2182518 2061267    0    0.00   9158      1      99.99       0.01
## 10 2182518 2425020 2303769    0    0.00   9158      1      99.99       0.01
## 11 2425020 2667522 2546271    0    0.00   9158      1      99.99       0.01
## 12 2667522 2910024 2788773    0    0.00   9158      1      99.99       0.01
## 13 2910024 3152526 3031275    0    0.00   9158      1      99.99       0.01
## 14 3152526 3395028 3273777    1    0.01   9159      1     100.00       0.01

7 Gráficos

7.1 Histograma

hist(Recuperacion_agua_producida,
     main = "Distribución de Recuperación de Agua Producida",
     breaks = seq(min(Recuperacion_agua_producida), 
                  max(Recuperacion_agua_producida) + A_agua, by = A_agua),
     xlab = "Recuperación de agua producida",
     ylab = "Frecuencia",
     col = "darkseagreen1",
     xaxt = "n")

axis(1, at = pretty(liminf), labels = format(pretty(liminf), scientific = FALSE))

7.2 Ojivas combinadas

x_asc <- c(min(liminf), limsup)
y_asc <- c(0, Niasc)

x_desc <- c(liminf, max(limsup))
y_desc <- c(Nidsc, 0)

plot(x_asc, y_asc, type = "o", col = "darkseagreen2",
     main = "Ojivas Ascendente y Descendente de Recuperación de Agua Producida",
     xlab = "Recuperación de agua",
     ylab = "Frecuencia acumulada",
     xlim = range(c(x_asc, x_desc)), ylim = c(0, max(c(y_asc, y_desc))),
     xaxt = "n", yaxt = "n")
axis(1, at = pretty(x_asc), labels = format(pretty(x_asc), scientific = FALSE))
axis(2, at = pretty(y_asc), labels = format(pretty(y_asc), scientific = FALSE))
lines(x_desc, y_desc, type = "o", col = "darkseagreen4")

legend("topright", legend = c("Ascendente", "Descendente"),
col = c("darkseagreen2", "darkseagreen4"), lty = 1, pch = 1, cex = 0.7)

7.3 Diagrama de caja

boxplot(Recuperacion_agua_producida, horizontal = TRUE, col = "darkseagreen1",
        main = "Boxplot: Recuperación de Agua Producida",
        xlab = "Recuperación de agua producida",
        xaxt = "n")

axis(1, at = pretty(Recuperacion_agua_producida), 
     labels = format(pretty(Recuperacion_agua_producida), scientific = FALSE))

8 Indicadores estadísticos

get_mode <- function(v) { 
  v <- as.numeric(v)
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]}
media <- mean(Recuperacion_agua_producida)
mediana <- median(Recuperacion_agua_producida)
moda <- get_mode(Recuperacion_agua_producida)
desv <- sd(Recuperacion_agua_producida)
varianza <- var(Recuperacion_agua_producida)
cv <- (desv / media) * 100

asim <- skewness(Recuperacion_agua_producida)
curt <- kurtosis(Recuperacion_agua_producida)

indicadores_agua <- data.frame(
  Indicador = c("Moda", "Mediana", "Media", "Desviación Estándar",
                "Varianza", "Coef. de Variación (%)", "Asimetría", "Curtosis"),
  Valor = c(round(moda, 2), round(mediana, 2), round(media, 2), round(desv, 2),
            round(varianza, 2), round(cv, 2), round(asim, 2), round(curt, 2))
)

# Evitar notación científica en la impresión de la tabla
indicadores_agua$Valor <- format(indicadores_agua$Valor, scientific = FALSE)

print(indicadores_agua, row.names = FALSE)
##               Indicador         Valor
##                    Moda          0.00
##                 Mediana       1050.00
##                   Media       8159.39
##     Desviación Estándar      44910.60
##                Varianza 2016962041.07
##  Coef. de Variación (%)        550.42
##               Asimetría         51.15
##                Curtosis       3614.08