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_petroleo <- datos$Edicion_recuperacion_petroleo_crudo
Recuperacion_petroleo <- na.omit(Recuperacion_petroleo)

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

R_Recuperacion <- max(Recuperacion_petroleo) - min(Recuperacion_petroleo)
k_Recuperacion <- floor(1 + (3.3 * log10(length(Recuperacion_petroleo))))
A_Recuperacion <- R_Recuperacion / k_Recuperacion

5 Limites e intervalos

liminf <- seq(from = min(Recuperacion_petroleo), 
              by = A_Recuperacion, length.out = k_Recuperacion)
limsup <- liminf + A_Recuperacion
limsup[k_Recuperacion] <- max(Recuperacion_petroleo)
MC <- (liminf + limsup) / 2

6 Creacion de Tabla de Frecuencia

6.1 Frecuencias absolutas

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

6.2 Frecuencias relativas y acumuladas

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

6.3 Tabla de Frecuencias

tabla_Recuperacion_petroleo <- 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 Petróleo Crudo")
## [1] "TABLA: Distribución de Frecuencias de Recuperación de Petróleo Crudo"
print(tabla_Recuperacion_petroleo)
##       liminf    limsup        MC   ni hi_porc Ni_asc Ni_dsc Hiasc_porc
## 1       0.00  41502.46  20751.23 8620   99.97   8620   8623      99.97
## 2   41502.46  83004.92  62253.69    2    0.02   8622      3      99.99
## 3   83004.92 124507.38 103756.15    0    0.00   8622      1      99.99
## 4  124507.38 166009.85 145258.62    0    0.00   8622      1      99.99
## 5  166009.85 207512.31 186761.08    0    0.00   8622      1      99.99
## 6  207512.31 249014.77 228263.54    0    0.00   8622      1      99.99
## 7  249014.77 290517.23 269766.00    0    0.00   8622      1      99.99
## 8  290517.23 332019.69 311268.46    0    0.00   8622      1      99.99
## 9  332019.69 373522.15 352770.92    0    0.00   8622      1      99.99
## 10 373522.15 415024.62 394273.38    0    0.00   8622      1      99.99
## 11 415024.62 456527.08 435775.85    0    0.00   8622      1      99.99
## 12 456527.08 498029.54 477278.31    0    0.00   8622      1      99.99
## 13 498029.54 539532.00 518780.77    1    0.01   8623      1     100.00
##    Hidsc_porc
## 1       1e+02
## 2       3e-02
## 3       1e-02
## 4       1e-02
## 5       1e-02
## 6       1e-02
## 7       1e-02
## 8       1e-02
## 9       1e-02
## 10      1e-02
## 11      1e-02
## 12      1e-02
## 13      1e-02

7 Gráficos

7.1 Histograma

HistoSturges_Recuperacion <- hist(Recuperacion_petroleo,
        main = "Gráfica No.1: Distribución de Recuperación de Petróleo Crudo",
        breaks = seq(min(Recuperacion_petroleo), max(Recuperacion_petroleo) + 
        A_Recuperacion, by = A_Recuperacion),
        xlab = "Recuperación de petróleo crudo",
        ylab = "Frecuencia",
        col = "lightblue",
        xaxt = "n")
axis(1, at = pretty(HistoSturges_Recuperacion$breaks),
  labels = format(pretty(HistoSturges_Recuperacion$breaks), 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)

x_range <- range(c(x_asc, x_desc))
y_range <- c(0, max(c(y_asc, y_desc)))

plot(x_asc, y_asc, type = "o", col = "skyblue",
     main = "Gráfica No.2: Ojivas Ascendente y Descendente de 
              Recuperación de Petróleo Crudo",
     xlab = "Recuperación de petróleo crudo",
     ylab = "Frecuencia acumulada",
     xlim = x_range, ylim = y_range,
     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 = "steelblue4")

legend("topright", legend = c("Ascendente", "Descendente"),
col = c("skyblue", "steelblue4"), lty = 1, pch = 1, cex = 0.7, 
      inset = c(-0.0009, 0.2))

7.3 Diagrama de caja

boxplot(Recuperacion_petroleo, horizontal = TRUE, col = "steelblue",
    main = "Gráfica No.3: DISTRIBUCIÓN DE LA RECUPERACIÓN DE PETRÓLEO CRUDO",
    xlab = "Recuperación de petróleo crudo",
    xaxt = "n")

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

8 Indicadores estadísticos

Recuperacion_num <- as.numeric(Recuperacion_petroleo)
Recuperacion_num <- Recuperacion_num[!is.na(Recuperacion_num)]


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

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

indicadores <- 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))
)

print(indicadores, row.names = FALSE)
##               Indicador       Valor
##                    Moda        0.00
##                 Mediana        0.00
##                   Media      710.65
##     Desviación Estándar     6190.48
##                Varianza 38322104.30
##  Coef. de Variación (%)      871.10
##               Asimetría       76.94
##                Curtosis     6656.41