#------------------ 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