#------------------ UNIVERSIDAD CENTRAL DEL ECUADOR
##-----Facultad de Ingeniería en Geología, Minas, Petróleo y Ambiental 
###-----------------Carrera de Ingeniería Ambiental

# Proyecto: Estudio de Residuos y Reciclaje en la India
# Etapa: Estadistica Descriptiva
# Integrantes: Jazmin Guañuna, Nayely Perugachi, Helen Taipe, Gabriela Usiña
# Fecha: 26/5/2025

# VARIABLE CUANTITATIVA CONTINUA: LONGITUD

#Carga de datos
library(readr)

datos <- read.csv("Waste_Management_and_Recycling_India.csv",,
                  header = TRUE,
                  sep = ",",
                  dec = ".")

str(datos)
## 'data.frame':    850 obs. of  13 variables:
##  $ City.District                    : chr  "Mumbai" "Mumbai" "Mumbai" "Mumbai" ...
##  $ Waste.Type                       : chr  "Plastic" "Organic" "E-Waste" "Construction" ...
##  $ Waste.Generated..Tons.Day.       : int  6610 1181 8162 8929 5032 7456 7118 9189 8609 6632 ...
##  $ Recycling.Rate....               : int  68 56 53 56 44 73 37 57 48 71 ...
##  $ Population.Density..People.km..  : int  11191 11191 11191 11191 11191 11191 11191 11191 11191 11191 ...
##  $ Municipal.Efficiency.Score..1.10.: int  9 5 8 5 7 9 6 10 8 6 ...
##  $ Disposal.Method                  : chr  "Composting" "Composting" "Incineration" "Landfill" ...
##  $ Cost.of.Waste.Management....Ton. : int  3056 2778 3390 1498 2221 3195 3686 1791 1681 2311 ...
##  $ Awareness.Campaigns.Count        : int  14 12 13 14 16 6 14 12 20 12 ...
##  $ Landfill.Name                    : chr  "Mumbai Landfill" "Mumbai Landfill" "Mumbai Landfill" "Mumbai Landfill" ...
##  $ Landfill.Location..Lat..Long.    : chr  "22.4265, 77.4931" "22.4265, 77.4931" "22.4265, 77.4931" "22.4265, 77.4931" ...
##  $ Landfill.Capacity..Tons.         : int  45575 45575 45575 45575 45575 45575 45575 45575 45575 45575 ...
##  $ Year                             : int  2019 2019 2019 2019 2019 2020 2020 2020 2020 2020 ...
# PROCESAMIENTO 

# Extraer coordenadas como caracteres
coordenadas <- strsplit(as.character(datos$Landfill.Location..Lat..Long.), ",")

# Convertir a vectores numéricos
latitud <- as.numeric(trimws(sapply(coordenadas, `[`, 1)))  
longitud <- as.numeric(trimws(sapply(coordenadas, `[`, 2))) 

# Quita los NA
longitud <- na.omit(longitud)

# Verifica que sea numérico
str(longitud)
##  num [1:850] 77.5 77.5 77.5 77.5 77.5 ...
# Procedimiento Sturges
min_long <- min(longitud)
max_long <- max(longitud)
R <- max_long - min_long
k <- floor(1 + (3.3 * log10(length(longitud))))
A <- R / k

# Límites
li <- seq(from = min_long, to = max_long - A, by = A)
ls <- seq(from = min_long + A, to = max_long, by = A)
li <- round(li, 2)
ls <- round(ls, 2)

MC <- (li + ls) / 2
MC <- (li + ls) / 2
MC <- round(MC, 2)  # Redondear a 2 decimales

I1 <- subset(longitud, longitud>=li[1] & latitud<ls[1])
length(I1)
## [1] 850
# Frecuencia absoluta
ni <- c()
for (i in 1:k) {
  if (i == k) {
    ni[i] <- length(subset(longitud, longitud >= li[i] & longitud <= ls[i]))
  } else {
    ni[i] <- length(subset(longitud, longitud >= li[i] & longitud < ls[i]))
  }
}


# Frecuencias Relativas y Acumuladas
n <- sum(ni)
hi <- (ni / n) * 100
sum(hi)
## [1] 100
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))

# Tabla de frecuencias
TDF_longitud <- data.frame(li, ls, MC, ni, round(hi, 2),
                           Ni_asc, round(Hi_asc, 2),
                           Ni_dsc, round(Hi_dsc, 2))

colnames(TDF_longitud) <- c("Li", "Ls", "Mc", "ni", "hi (%)",
                            "Ni", "Hi (%)", "Nidsc", "Hidsc (%)")
TDF_longitud
##       Li    Ls    Mc  ni hi (%)  Ni Hi (%) Nidsc Hidsc (%)
## 1  68.74 71.45 70.10  25   2.94  25   2.94   850    100.00
## 2  71.45 74.16 72.81 125  14.71 150  17.65   825     97.06
## 3  74.16 76.87 75.52  50   5.88 200  23.53   700     82.35
## 4  76.87 79.58 78.22  75   8.82 275  32.35   650     76.47
## 5  79.58 82.28 80.93  75   8.82 350  41.18   575     67.65
## 6  82.28 84.99 83.63 100  11.76 450  52.94   500     58.82
## 7  84.99 87.70 86.34 100  11.76 550  64.71   400     47.06
## 8  87.70 90.41 89.06 100  11.76 650  76.47   300     35.29
## 9  90.41 93.12 91.76 100  11.76 750  88.24   200     23.53
## 10 93.12 95.83 94.47 100  11.76 850 100.00   100     11.76
# Crear Fila de Totales
totales <- c(
  li= "-",
  ls= "-",
  MC= "-",
  ni= sum(ni),
  hi= sum(hi),
  Ni_asc= "-",
  Ni_dsc= "-",
  Hi_asc= "-",
  Hi_dsc= "-") 
TDF_longitud_con_totales <- rbind(TDF_longitud,totales) 

#Mostrar tabla final
TDF_longitud_con_totales
##       Li    Ls    Mc  ni hi (%)  Ni Hi (%) Nidsc Hidsc (%)
## 1  68.74 71.45  70.1  25   2.94  25   2.94   850       100
## 2  71.45 74.16 72.81 125  14.71 150  17.65   825     97.06
## 3  74.16 76.87 75.52  50   5.88 200  23.53   700     82.35
## 4  76.87 79.58 78.22  75   8.82 275  32.35   650     76.47
## 5  79.58 82.28 80.93  75   8.82 350  41.18   575     67.65
## 6  82.28 84.99 83.63 100  11.76 450  52.94   500     58.82
## 7  84.99  87.7 86.34 100  11.76 550  64.71   400     47.06
## 8   87.7 90.41 89.06 100  11.76 650  76.47   300     35.29
## 9  90.41 93.12 91.76 100  11.76 750  88.24   200     23.53
## 10 93.12 95.83 94.47 100  11.76 850    100   100     11.76
## 11     -     -     - 850    100   -      -     -         -
#Histograma
Hitograma <- hist(longitud,
     breaks = seq(min(longitud), max(longitud), A),
     main = "Gráfica No.86: 
     Distribución de la Cantidad de  Longitud 
     en el Estudio de Residuos de la India",
     xlab = "Longitud (°)",
     ylab = "Cantidad",
     col = "blue3")

## Procedimiento con R
Histograma_longitud <- hist(longitud, 
        main = "Gráfica No. 87: 
        Distribución de Cantidad de Longitud
        en el Estudio de Residuos de la India",
        xlab = "Longitud (°)", 
        ylab = "Cantidad", 
        col = "purple3")

# Limites del histograma
limites <- Histograma_longitud$breaks
liminf <- limites[-length(limites)]
limsup <- limites[-1]
MC <- Histograma_longitud$mids
ni <- Histograma_longitud$counts

# Confirmar que todos los vectores tengan la misma longitud
stopifnot(length(liminf) == length(limsup), 
          length(MC) == length(ni))

# Total de datos
n <- sum(ni)

# Frecuencia relativa sin redondear
hi <- (ni / n) * 100

# Frecuencias acumuladas
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

# Redondear después
hi_r <- round(hi, 2)
Hiasc_r <- round(Hiasc, 2)
Hidsc_r <- round(Hidsc, 2)

# Tabla de frecuencias
Tabla_Longitud <- data.frame(
  liminf = liminf,
  limsup = limsup,
  MC = MC,
  ni = ni,
  `hi (%)` = hi_r,
  Ni = Niasc,
  Nidsc = Nidsc,
  `Hi (%)` = Hiasc_r,
  `Hidsc (%)` = Hidsc_r
)

# Fila de totales 
totales <- data.frame(
  liminf = "-",
  limsup = "-",
  MC = "-",
  ni = sum(ni),
  `hi (%)` = round(sum(hi), 2),  
  Ni = "-",
  Nidsc = "-",
  `Hi (%)` = "-",
  `Hidsc (%)` = "-"
)

# Combinar tabla + totales
TDF.totales <- rbind(Tabla_Longitud, totales)

# Mostrar tabla
TDF.totales
##    liminf limsup MC  ni hi....  Ni Nidsc Hi.... Hidsc....
## 1      68     70 69  25   2.94  25   850   2.94       100
## 2      70     72 71  50   5.88  75   825   8.82     97.06
## 3      72     74 73  75   8.82 150   775  17.65     91.18
## 4      74     76 75  25   2.94 175   700  20.59     82.35
## 5      76     78 77 100  11.76 275   675  32.35     79.41
## 6      78     80 79   0   0.00 275   575  32.35     67.65
## 7      80     82 81  50   5.88 325   575  38.24     67.65
## 8      82     84 83  75   8.82 400   525  47.06     61.76
## 9      84     86 85 125  14.71 525   450  61.76     52.94
## 10     86     88 87  25   2.94 550   325  64.71     38.24
## 11     88     90 89 100  11.76 650   300  76.47     35.29
## 12     90     92 91  75   8.82 725   200  85.29     23.53
## 13     92     94 93  25   2.94 750   125  88.24     14.71
## 14     94     96 95 100  11.76 850   100    100     11.76
## 15      -      -  - 850 100.00   -     -      -         -
# Histograma R ni Local
Histograma<- hist(longitud,
                  breaks=limites,
                  main = "Gráfica No. 88:
          Distribución de la Cantidad de Longitud 
          en el Estudio de Residuos de la India",
                  ylab = "Cantidad",
                  xlab = "Longitud (°)",
                  col = "blue3")

# Histograma R ni Global
Histograma<- hist(longitud,
                  breaks=limites,
                  main = "Gráfica No. 89: 
          Distribución de la Cantidad de Longitud 
          en el Estudio de Residuos de la India",
                  ylab = "Cantidad",
                  xlab = "Longitud (°)",
                  col = "purple3", ylim = c(0,length(longitud)))

# Histograma R hi Local
barplot(hi,space = 0, ylab = "Porcentaje (%)", xlab = "Longitud (°)",
        names.arg = Tabla_Longitud$MC, 
        main = "Gráfica No. 90: 
          Distribución de la Cantidad de Longitud 
          en el Estudio de Residuos de la India",
        col = "blue3") 

# Histograma R hi Global
barplot(hi,space = 0, ylab = "Porcentaje (%)",xlab = "Longitud (°)",
        names.arg = Tabla_Longitud$MC,
        main = "Gráfica No. 91: 
          Distribución de la Cantidad de Longitud 
          en el Estudio de Residuos de la India", 
        ylim=c(0,100),
        col = "purple3") 

# DIAGRAMA DE CAJA
boxplot(longitud, horizontal=T, 
        col="green3",
        main="Gráfica No. 92:
        Diagrama de Caja de la Cantidad de Longitud 
        en el Estudio de Residuos de la India",
        xlab= "Longitud (°)")

# OJIVAS Ni
plot(limsup,Niasc,col="blue",
     main="Gráfica No. 93:
        Ojivas Ascendente y Descendente de la Cantidad de Longitud 
        en el Estudio de Residuos de la India",
     ylab = "Cantidad", 
     xlab="Longitud (°)", 
     type="o",  pch=16, 
     xlim = c(68,94))

lines(liminf,Nidsc,col="red",type="o", pch=16)

# OJIVAS Hi
plot(limsup,Hiasc,col="blue",
     main="Gráfica No. 93:
        Ojivas Ascendente y Descendente del Porcentaje de Longitud 
        en el Estudio de Residuos de la India",
     ylab = "Porcentaje (%)", 
     xlab="Longitud (°)", 
     type="o", pch=16,
     ylim = c(0,100),
     xlim = c(68,94))

lines(liminf,Hidsc,col="red",type="o", pch=16)

# Indicadores Estadísticos 

#Tendencia Central

# Media Aritmética
X <- mean(longitud)
X
## [1] 83.63824
# Mediana
Me <- median(longitud)
Me
## [1] 84.5308
#Moda
Mo <- "[84,86]"
Mo
## [1] "[84,86]"
# Dispersión 

# Varianza
Varianza <- var(longitud)
Varianza
## [1] 59.98804
# Desviación estándar
Sd <- sd(longitud)
Sd
## [1] 7.745195
# Coeficiente de variación
CV <- (sd(longitud)/X)*100
CV
## [1] 9.260351
# INDICADORES DE FORMA
install.packages("e1071")  
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(e1071)

# Coeficiente de Asimetría
As <- skewness(longitud)
As
## [1] -0.203269
# Curtosis
K <- kurtosis(longitud)
K
## [1] -1.104366
# Tabla de Indicadores
Variable <- "Longitud"
Rango <- "[70.7950445,91.6781059 ]"

Tabla_indicadores <- data.frame(Variable,Rango,X,Me,Mo,Varianza,Sd,CV,As,K)
Tabla_indicadores
##   Variable                    Rango        X      Me      Mo Varianza       Sd
## 1 Longitud [70.7950445,91.6781059 ] 83.63824 84.5308 [84,86] 59.98804 7.745195
##         CV        As         K
## 1 9.260351 -0.203269 -1.104366
Tabla_indicadores <- data.frame(Variable,Rango,round(X,3),Me,Mo,round(Sd,3),round(CV,3),round(As,3),round(K,3))
colnames(Tabla_indicadores) <- c("Variable","Rango","X", "Me", "Mo","Sd","CV","As","K")
Tabla_indicadores
##   Variable                    Rango      X      Me      Mo    Sd   CV     As
## 1 Longitud [70.7950445,91.6781059 ] 83.638 84.5308 [84,86] 7.745 9.26 -0.203
##        K
## 1 -1.104