#Estadistica Descriptiva

#Alexander Sailema

#20/11/2025
library(gt)
library(dplyr)
#Cargar Datos

setwd("~/")
datos<-read.csv("soil_pollution_diseases.csv",header = TRUE,dec = ".",
                sep = ",")

#Extracción Variable Cuantitativa Continua

Materia_orgánica_suelo <- datos$Soil_Organic_Matter_.

min <-min(Materia_orgánica_suelo)
max <-max(Materia_orgánica_suelo)
R <-max-min
K <- floor(1+3.33*log10(length(Materia_orgánica_suelo)))
A <-R/K

Li <-round(seq(from=min,to=max-A,by=A),2)
Ls <-round(seq(from=min+A,to=max,by=A),2)
Mc <-(Li+Ls)/2

ni<-c()
for (i in 1:K) {
  if (i < K) {
    ni[i] <- length(subset(Materia_orgánica_suelo, Materia_orgánica_suelo >= Li[i] & Materia_orgánica_suelo < Ls[i]))
  } else {
    ni[i] <- length(subset(Materia_orgánica_suelo, Materia_orgánica_suelo >= Li[i] & Materia_orgánica_suelo <= Ls[i]))
  }
}

sum(ni)
## [1] 3000
hi <-ni/sum(ni)*100
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))

TDF_hi <-ni/sum(ni)*100
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))

TDF_Materia_orgánica_suelo <- data.frame(
  Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)

colnames(TDF_Materia_orgánica_suelo) <- c("Li","Ls","Mc","ni","hi","Ni_asc","Ni_desc","Hi_asc(%)","Hi_desc(%)")

#Crear fila de totales

totales<-c(
  Li="TOTAL",
  Ls="-",
  Mc="-",
  ni=sum(ni),
  hi=sum(hi),
  Ni_asc="-",
  Ni_desc="-",
  Hi_asc="-",
  Hi_desc="-")

TDF_Materia_orgánica_suelo <-rbind(TDF_Materia_orgánica_suelo,totales) 

TDF_Materia_orgánica_suelo %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nro. 7*"),
    subtitle = md("**Tabla de distribución de frecuencias de la Materia orgánica en Suelo**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
Tabla Nro. 7
Tabla de distribución de frecuencias de la Materia orgánica en Suelo
Li Ls Mc ni hi Ni_asc Ni_desc Hi_asc(%) Hi_desc(%)
5 87.83 46.415 414 13.8 414 3000 13.8 100
87.83 170.67 129.25 281 9.37 695 2586 23.17 86.2
170.67 253.5 212.085 240 8 935 2305 31.17 76.83
253.5 336.33 294.915 229 7.63 1164 2065 38.8 68.83
336.33 419.17 377.75 227 7.57 1391 1836 46.37 61.2
419.17 502 460.585 241 8.03 1632 1609 54.4 53.63
502 584.83 543.415 233 7.77 1865 1368 62.17 45.6
584.83 667.67 626.25 244 8.13 2109 1135 70.3 37.83
667.67 750.5 709.085 219 7.3 2328 891 77.6 29.7
750.5 833.33 791.915 218 7.27 2546 672 84.87 22.4
833.33 916.17 874.75 232 7.73 2778 454 92.6 15.13
916.17 999 957.585 222 7.4 3000 222 100 7.4
TOTAL - - 3000 100 - - - -
Autor: Grupo 3
hist(Materia_orgánica_suelo)

#Histograma



#Simplificación con el histograma

Hist_Materia_orgánica_suelo<-hist(Materia_orgánica_suelo,breaks = 8,plot = F)
k<-length(Hist_Materia_orgánica_suelo$breaks)
Li<-Hist_Materia_orgánica_suelo$breaks[1:(length(Hist_Materia_orgánica_suelo$breaks)-1)]
Ls<-Hist_Materia_orgánica_suelo$breaks[2:length(Hist_Materia_orgánica_suelo$breaks)]
ni<-Hist_Materia_orgánica_suelo$counts
sum(ni)
## [1] 3000
Mc<-Hist_Materia_orgánica_suelo$mids
hi<-(ni/sum(ni))
sum(hi)
## [1] 1
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDF_Materia_orgánica_suelo<-data.frame(Li=round(Li,2),
                              Ls=round(Ls,2),
                              Mc=round(Mc,2),
                              ni=ni,
                              hi=round(hi*100,2),
                              Ni_asc=Ni_asc,
                              Ni_desc=Ni_desc,
                              Hi_asc=round(Hi_asc*100,2),
                              Hi_desc=round(Hi_desc*100,2))
colnames(TDF_Materia_orgánica_suelo)<-c("Lim inf","Lim sup","MC","ni","hi(%)","Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")

#Crear fila de totales
totales<-c(Li="TOTAL",
           Ls="-",
           Mc="-",
           ni = sum(as.numeric(TDF_Materia_orgánica_suelo$ni)),
           hi = sum(as.numeric(TDF_Materia_orgánica_suelo$hi)),
           Ni_asc="-",
           Ni_desc="-",
           Hi_asc="-",
           Hi_desc="-")

TDF_Materia_orgánica_suelo<-rbind(TDF_Materia_orgánica_suelo,totales)

TDF_Materia_orgánica_suelo %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nro. 8*"),
    subtitle = md("**Tabla Simplificada de distribución de frecuencias de 
                  la Materia orgánica en suelo**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
Tabla Nro. 8
Tabla Simplificada de distribución de frecuencias de la Materia orgánica en suelo
Lim inf Lim sup MC ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
0 100 50 502 16.73 502 3000 16.73 100
100 200 150 270 9 772 2498 25.73 83.27
200 300 250 291 9.7 1063 2228 35.43 74.27
300 400 350 287 9.57 1350 1937 45 64.57
400 500 450 278 9.27 1628 1650 54.27 55
500 600 550 285 9.5 1913 1372 63.77 45.73
600 700 650 279 9.3 2192 1087 73.07 36.23
700 800 750 261 8.7 2453 808 81.77 26.93
800 900 850 265 8.83 2718 547 90.6 18.23
900 1000 950 282 9.4 3000 282 100 9.4
TOTAL - - 3000 100 - - - -
Autor: Grupo 3
#Histograma

Hist_Materia_orgánica_suelo<-hist(Materia_orgánica_suelo,breaks = 8,plot = F)
hist(Materia_orgánica_suelo,breaks = 10,
     main = "Gráfica N°31: Distribución de la Materia orgánica en suelo",
     xlab = "Materia orgánica suelo",
     ylab = "Cantidad",
     ylim = c(0,500),
     col = "red",
     cex.main=0.9,
     cex.lab=1,
     cex.axis=0.9,
     xaxt="n")
axis(1,at=Hist_Materia_orgánica_suelo$breaks,labels = Hist_Materia_orgánica_suelo$breaks,las=1,
     cex.axis=0.9)

#Gráficas
#Ni Global
hist(Materia_orgánica_suelo, breaks = 10,
     main = "Gráfica N°32: Distribución de la Materia orgánica en suelo",
     xlab = "Materia orgánica suelo",
     ylab = "Cantidad",
     ylim = c(0, length(Materia_orgánica_suelo)),
     col = "green",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Materia_orgánica_suelo$breaks,
     labels = Hist_Materia_orgánica_suelo$breaks, las = 1,
     cex.axis = 0.9)

# Filtrar solo las filas numéricas (excluyendo la fila "TOTAL")

TDF_Materia_orgánica_suelo$hi <- as.numeric(TDF_Materia_orgánica_suelo$hi)
datos_grafico <- subset(TDF_Materia_orgánica_suelo, !(MC %in% c("-", "TOTAL")))

#Hi Global
barplot(datos_grafico$hi,
        space = 0,
        col = "skyblue",
        main = "Gráfica N°33: Distribución porcentual de frecuencias de la 
        Materia orgánica en suelo",
        xlab = "Materia orgánica suelo",
        ylab = "Porcentaje (%)",
        names.arg = datos_grafico$MC,
        ylim = c(0, 100))

#Ni Local
hist(Materia_orgánica_suelo, breaks = 10,
     main = "Gráfica N°34 Distribución para la Materia orgánica en suelo ",
     xlab = "Materia orgánica suelo",
     ylab = "Cantidad",
     ylim = c(0,max(ni)),
     col = "yellow",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")

axis(1, at = Hist_Materia_orgánica_suelo$breaks,
     labels = Hist_Materia_orgánica_suelo$breaks, las = 1,
     cex.axis = 0.9)

#Hi local
barplot(datos_grafico$hi,
        space = 0,
        col = "blue",
        main = "Gráfica N°35: Distribución porcentual de frecuencias de la
        Materia orgánica en suelo",
        xlab = "Materia orgánica suelo",
        ylab = "Porcentaje (%)",
        names.arg = datos_grafico$MC,
        ylim = c(0, 20))

# Diagrama de Caja

boxplot(Materia_orgánica_suelo,
        horizontal = TRUE,
        main = "Gráfica N°36 Distribución de Frecuencia para la 
        Materia orgánica en suelo ",
        xlab = " Materia orgánica suelo ",
        col = "brown",
        outline = TRUE,
        pch = 1)

# Diagrama de Ojiva Ascendente y Descendente Ni

plot(Li ,Ni_desc,
     main = "Gráfica N°37: Distribución de frecuencias Ascendente y descendente 
      para la Materia orgánica en suelo",
     xlab = " Materia orgánica suelo",
     ylab = "Cantidad",
     xlim = c(0,1000),
     col = "red",
     cex.axis=0.8,
     type = "o",
     lwd = 3,
     las=1,
     xaxt="n")
lines(Ls,Ni_asc,
      col = "orange",
      type = "o",
      lwd = 3)
axis(1, at = seq(0, 1000, by = 100))

# Diagrama de Ojiva Ascendente y Descendente Porcentual

plot(Li, Hi_desc * 100,
     main = "Gráfica N°38: Distribución de frecuencia Ascendente y Descendente 
     porcentual para la Materia orgánica en suelo ",
     xlab = " Materia orgánica suelo ",
     ylab = "Porcentaje (%)",
     xlim = c(0,1000),
     col = "red",
     type = "o",
     lwd = 2,
     xaxt="n")
lines(Ls, Hi_asc * 100,
      col = "orange",
      type = "o",
      lwd = 3)
axis(1, at = seq(0,1000,by=100))