#UNIVERSIDAD CENTRAL DEL ECUADOR
#GRUPO 6
#VARIABLE CONTINUA-INFERENCIAL

#CARGA DE DATOS 
setwd("~/")
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 ...
# Limpieza de datos
Edicion_Recuperacion_agua_producida <- datos$Edicion_Recuperacion_agua_producida
Edicion_Recuperacion_agua_producida <- as.numeric(Edicion_Recuperacion_agua_producida)
Edicion_Recuperacion_agua_producida <- Edicion_Recuperacion_agua_producida[!is.na(Edicion_Recuperacion_agua_producida) & Edicion_Recuperacion_agua_producida > 0]

# Histograma con un número específico de intervalos (breaks)
hist(Edicion_Recuperacion_agua_producida, 
     main = "Histograma de Edición de Recuperación de Agua Producida",
     cex.main=0.8,
     xlab = "Edición de Recuperación de Agua Producida", 
     ylab = "Frecuencia",
     breaks = 90,  # Ajusta el número de intervalos según el rango de los datos
     col = "yellow",
     xlim= c(0, 200000),
     xaxt = "n")  # Desactiva los ejes X automáticos

# Personalizar las etiquetas del eje X
axis(1, at = seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000), 
     labels = format(seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000), scientific = FALSE))

# Modelo Log Normal
log_Edicion_Recuperacion_agua_producida <- log(Edicion_Recuperacion_agua_producida)
ulog <- mean(log_Edicion_Recuperacion_agua_producida)
sigmalog <- sd(log_Edicion_Recuperacion_agua_producida)

# Histograma con curva Log-Normal
HistogramaLogNormal <- hist(Edicion_Recuperacion_agua_producida, freq = FALSE,
                            main = "Gráfica No.1: Histograma de Edición de Recuperación de Agua Producida con Curva Log-Normal",
                            cex.main=0.8,
                            xlab = "Edición de Recuperación de Agua Producida",
                            ylab = "Densidad",
                            breaks = 90,
                            col = "orange",
                            cex.lab = 1.5,
                            xlim = c(0, 200000),
                            axes = FALSE)

# Personalizar los ejes
axis(1, at = seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000),
     labels = format(seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000), scientific = FALSE))

eje_y <- axTicks(2)
axis(2,
     at = eje_y,
     labels = format(eje_y, scientific = FALSE),
     las = 1,
     cex.axis = 0.5)

# Ajustar la curva log-normal
x <- seq(min(Edicion_Recuperacion_agua_producida), max(Edicion_Recuperacion_agua_producida), length.out = 1000)
lines(x, dlnorm(x, meanlog = ulog, sdlog = sigmalog), col = "red", lwd = 2)

# Test chi-cuadrado
FO <- HistogramaLogNormal$counts
liminf <- HistogramaLogNormal$breaks[-length(HistogramaLogNormal$breaks)]
limsup <- HistogramaLogNormal$breaks[-1]
Plog <- numeric(length(FO))
for (j in 1:length(FO)) {
  Plog[j] <- plnorm(limsup[j], meanlog = ulog, sdlog = sigmalog) -
    plnorm(liminf[j], meanlog = ulog, sdlog = sigmalog)
}
FElog <- Plog * length(Edicion_Recuperacion_agua_producida)

valores_validos_log <- FElog > 0
X2_log <- sum((FO[valores_validos_log] - FElog[valores_validos_log])^2 / FElog[valores_validos_log])
df_log <- sum(valores_validos_log) - 1 - 2
Vc_log <- qchisq(0.90, df = df_log)
X2_log < Vc_log
## [1] FALSE
# Modelo Normal 
u <- mean(Edicion_Recuperacion_agua_producida)
sigma <- sd(Edicion_Recuperacion_agua_producida)

# Histograma con curva Normal
HistogramaNormal <- hist(Edicion_Recuperacion_agua_producida, freq = FALSE,
                         main = "Gráfica No.2: Histograma de Edición de Recuperación de Agua Producida con Curva Normal",
                         cex.main=0.8,
                         xlab = "Edición de Recuperación de Agua Producida",
                         ylab = "Densidad",
                         breaks = 70,  # Ajusta el número de intervalos según el rango de los datos
                         col = "orange3", 
                         cex.lab = 1.5,
                         xlim = c(0, 150000),
                         axes = FALSE)  # Desactivamos los ejes automáticos

# Personalizar los ejes
axis(1, at = seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000),
     labels = format(seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000), scientific = FALSE))

# Eje Y sin notación científica
eje_y <- axTicks(2)
axis(2,
     at = eje_y,
     labels = format(eje_y, scientific = FALSE),
     las = 1,  # Dirección de las etiquetas en el eje Y
     cex.axis = 0.5)  # Ajusta el tamaño de las etiquetas en el eje Y

# Ajustar la curva normal
x <- seq(min(Edicion_Recuperacion_agua_producida), max(Edicion_Recuperacion_agua_producida), length.out = 1000)
lines(x, dnorm(x, mean = u, sd = sigma), col = "red", lwd = 2)

# Test de chi-cuadrado
FO <- HistogramaNormal$counts
liminf <- HistogramaNormal$breaks[-length(HistogramaNormal$breaks)]
limsup <- HistogramaNormal$breaks[-1]
P <- numeric(length(FO))
for (i in 1:length(FO)) {
  P[i] <- pnorm(limsup[i], mean = u, sd = sigma) - pnorm(liminf[i], mean = u, sd = sigma)
}
FE <- P * length(Edicion_Recuperacion_agua_producida)

valores_validos <- FE > 0
X2_normal <- sum((FO[valores_validos] - FE[valores_validos])^2 / FE[valores_validos])
df_normal <- sum(valores_validos) - 1 - 2
Vc_normal <- qchisq(0.90, df = df_normal)
X2_normal < Vc_normal
## [1] FALSE
# Cálculo de probabilidad entre 200 y 400
lim_inf <- 200
lim_sup <- 400
probabilidad_normal <- pnorm(lim_sup, mean = u, sd = sigma) - 
  pnorm(lim_inf, mean = u, sd = sigma)
probabilidad_normal * 100  # Multiplicamos por 100 para obtener la probabilidad en porcentaje
## [1] 0.1472043
# Graficar la curva normal y sombrear el área correspondiente
HistogramaNormal <- hist(Edicion_Recuperacion_agua_producida, freq = FALSE,
                         main = "Gráfica. Cálculo de Probabilidades (Normal)",
                         cex.main=0.8,
                         xlab = "Edición de Recuperación de Agua Producida",
                         ylab = "Densidad de probabilidad",
                         breaks = 90,
                         col = "yellow3",
                         cex.lab = 1.5,
                         xlim = c(0, 150000),  # Color semi-transparente
                         cex.lab = 1.5, 
                         axes = FALSE)  # Desactivamos los ejes automáticos

# Personalizar los ejes
axis(1, at = seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000),
     labels = format(seq(0, max(Edicion_Recuperacion_agua_producida), by = 5000), scientific = FALSE))

eje_y <- axTicks(2)
axis(2,
     at = eje_y,
     labels = format(eje_y, scientific = FALSE),
     las = 1,  # Dirección de las etiquetas en el eje Y
     cex.axis = 0.5)  # Ajusta el tamaño de las etiquetas en el eje Y

# Calcular la media y desviación estándar de los datos
u <- mean(Edicion_Recuperacion_agua_producida, na.rm = TRUE)
sigma <- sd(Edicion_Recuperacion_agua_producida, na.rm = TRUE)

# Crear la secuencia de valores para la curva normal
x_vals <- seq(min(Edicion_Recuperacion_agua_producida), max(Edicion_Recuperacion_agua_producida), length.out = 1000)
curve_normal <- dnorm(x_vals, mean = u, sd = sigma)

# Graficar la curva normal sobre el histograma
lines(x_vals, curve_normal, col = "red", lwd = 2)

# Definir el triángulo para el área de interés
y_inf <- dnorm(lim_inf, mean = u, sd = sigma)
y_sup <- dnorm(lim_sup, mean = u, sd = sigma)

# Coordenadas de los triángulos
triangle_x <- c(lim_inf, lim_inf + (lim_sup - lim_inf) / 2, lim_sup)
triangle_y <- c(0, max(y_inf, y_sup), 0)

# Dibujar el triángulo en el área entre 200 y 400
polygon(triangle_x, triangle_y, col = rgb(1, 0, 0, 0.5), border = "red")  # Triángulo destacado en rojo

# Mostrar la probabilidad calculada
cat("Probabilidad entre 200 y 400:", probabilidad_normal * 100, "%\n")
## Probabilidad entre 200 y 400: 0.1472043 %
# Cálculo de intervalo de confianza
# Tamaño de la muestra
n <- length(Edicion_Recuperacion_agua_producida)

# Error estándar de la media (SE = sigma / sqrt(n))
error <- sigma / sqrt(n)

# Intervalo de confianza al 95%: media ± 2 * error estándar
li <- u - 2 * error  # Límite inferior
ls <- u + 2 * error  # Límite superior

# Mostrar los valores
cat("Media muestral (u):", u, "\n")
## Media muestral (u): 11520.25
cat("Desviación estándar (sigma):", sigma, "\n")
## Desviación estándar (sigma): 53001.46
cat("Error estándar de la media:", error, "\n")
## Error estándar de la media: 658.0605
cat("Límite inferior del intervalo de confianza:", li, "\n")
## Límite inferior del intervalo de confianza: 10204.13
cat("Límite superior del intervalo de confianza:", ls, "\n")
## Límite superior del intervalo de confianza: 12836.37