setwd("/cloud/project/datos")
datos <- read.csv("Petroleo_Ontaro.csv", header=T, dec=".", sep=";")

c_elevacion <- datos$GROUND_ELEVATION
c_elevacion_sin_na <- na.omit(c_elevacion)

if(length(c_elevacion_sin_na) == 0) {
  stop("La columna 'GROUND_ELEVATION' no tiene datos válidos.")
}

n <- length(c_elevacion_sin_na)
print(n)
## [1] 24601
k <- 1 + (3.3 * log10(n))
k <- floor(k)
print(k)
## [1] 15
min_valor <- min(c_elevacion_sin_na)
max_valor <- max(c_elevacion_sin_na)

if (!is.finite(min_valor) | !is.finite(max_valor)) {
  stop("Los valores de min o max no son finitos.")
}

R <- max_valor - min_valor
A <- R / k

if (A <= 0) {
  stop("El valor de A es menor o igual a cero, lo cual no es válido.")
}

Li <- round(seq(from = min_valor, to = max_valor - A, by = A), 4)
Li
##  [1]   0.3000  46.5467  92.7933 139.0400 185.2867 231.5333 277.7800 324.0267
##  [9] 370.2733 416.5200 462.7667 509.0133 555.2600 601.5067 647.7533
Ls <- round(seq(from = min_valor + A, to = max_valor, by = A), 4)
Ls
##  [1]  46.5467  92.7933 139.0400 185.2867 231.5333 277.7800 324.0267 370.2733
##  [9] 416.5200 462.7667 509.0133 555.2600 601.5067 647.7533 694.0000
Mc <- round((Li+Ls)/2,2)
Mc
##  [1]  23.42  69.67 115.92 162.16 208.41 254.66 300.90 347.15 393.40 439.64
## [11] 485.89 532.14 578.38 624.63 670.88
ni <- numeric(length(Li))
for(i in 1:length(Li)){
  ni[i] <- sum(c_elevacion_sin_na >= Li[i] & c_elevacion_sin_na < Ls[i])
}
ni[length(Li)] <- sum(c_elevacion_sin_na >= Li[length(Li)] & c_elevacion_sin_na <= max_valor)
ni
##  [1]    37   222    88  7695 14491  1481   420   104    16    27    14     4
## [13]     0     1     1
hi <- ni/sum(ni)
sum(hi)
## [1] 1
hi_porc <- hi*100
sum(hi_porc)
## [1] 100
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(ni))
Hi_asc <- round(cumsum(hi_porc),2)
Hi_dsc <- round(rev(cumsum(hi_porc)),2)

TDFc_elevacion <- data.frame(Li,Ls, Mc, ni, hi_porc, Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)
TDFc_elevacion
##          Li       Ls     Mc    ni      hi_porc Ni_asc Ni_dsc Hi_asc Hi_dsc
## 1    0.3000  46.5467  23.42    37  0.150400390     37  24601   0.15 100.00
## 2   46.5467  92.7933  69.67   222  0.902402341    259  24600   1.05 100.00
## 3   92.7933 139.0400 115.92    88  0.357709036    347  24599   1.41  99.99
## 4  139.0400 185.2867 162.16  7695 31.279216292   8042  24599  32.69  99.99
## 5  185.2867 231.5333 208.41 14491 58.904109589  22533  24595  91.59  99.98
## 6  231.5333 277.7800 254.66  1481  6.020080485  24014  24581  97.61  99.92
## 7  277.7800 324.0267 300.90   420  1.707247673  24434  24554  99.32  99.81
## 8  324.0267 370.2733 347.15   104  0.422747043  24538  24538  99.74  99.74
## 9  370.2733 416.5200 393.40    16  0.065038007  24554  24434  99.81  99.32
## 10 416.5200 462.7667 439.64    27  0.109751636  24581  24014  99.92  97.61
## 11 462.7667 509.0133 485.89    14  0.056908256  24595  22533  99.98  91.59
## 12 509.0133 555.2600 532.14     4  0.016259502  24599   8042  99.99  32.69
## 13 555.2600 601.5067 578.38     0  0.000000000  24599    347  99.99   1.41
## 14 601.5067 647.7533 624.63     1  0.004064875  24600    259 100.00   1.05
## 15 647.7533 694.0000 670.88     1  0.004064875  24601     37 100.00   0.15
colnames(TDFc_elevacion)[colnames(TDFc_elevacion)=="hi_porc"] <- "hi"
names(TDFc_elevacion)
## [1] "Li"     "Ls"     "Mc"     "ni"     "hi"     "Ni_asc" "Ni_dsc" "Hi_asc"
## [9] "Hi_dsc"
hist(c_elevacion_sin_na,
     breaks = seq(min(c_elevacion_sin_na), max(c_elevacion_sin_na), by = A),
     col = "#4EEE94",
     main = "Gráfica No4.01: Distribucion de Elevación de Terreno",
     xlab = "Elevacion de Terreno",
     ylab = "Cantidad"
)

x_asc <- c(min(Li),Ls)
y_asc <- c(0, Ni_asc)

x_dsc <- c(Li,c(Ls))
y_dsc <- c(Ni_dsc, 0)

plot(x_asc, y_asc, type = "b", col="#836FFF", pch=19,
     main = "Gráfica No4.02: Distribucion de Elevación de Terreno",
     xlab = "Elevacion de Terreno",
     ylab = "Cantidad",
     xlim = range(c(x_asc,x_dsc)),
     ylim = c(0, max(c(y_asc, y_dsc))))

if (length(x_dsc) > length(y_dsc)) {
  y_dsc <- c(y_dsc, rep(NA, length(x_dsc) - length(y_dsc)))  # Añadir NAs
}

lines(x_dsc, y_dsc, type = "b", col = "#EE7942", pch = 19)

boxplot(c_elevacion_sin_na, horizontal = T, col = "#FFDAB9",
        main = "Gráfica No4.03: Distribucion de Elevación de Terreno",
        xlab = "Elevación de Terreno")