#UNIVERSIDAD CENTRAL DEL ECUADOR
#Facultad de Ingeniería en Geología, Minas, Petroleos y Ambiental
#Ingeniería Ambiental
#Autor: Grupo 1
#fecha:2/12/2025
datos <- datasets::airquality
#extraccion variable cuantitativa continua
Ozono <- datos$Ozone
Ozono <- subset(Ozono, Ozono >= 0)
#Tabla de distribución de frecuencia
#Manualmente
min <- min(Ozono)
max <- max(Ozono)
R <- max - min
K <- floor(1 + 3.33 * log10(length(Ozono)))
k <- floor(K)
A <- R / K
lim_inf <- round(seq(from = min, to = max - A, by = A), 2)
lim_sup <- round(seq(from = min + A, to = max, by = A), 2)
MC <- (lim_inf + lim_sup) / 2
ni <- c()
for (i in 1:K) {
if (i < K) {
ni[i] <- length(subset(Ozono, Ozono >= lim_inf[i] & Ozono < lim_sup[i]))
} else {
ni[i] <- length(subset(Ozono, Ozono >= lim_inf[i] & Ozono <= lim_sup[i]))
}
}
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_Ozono <- data.frame(lim_inf,
lim_sup,
MC,
ni,
round(hi,2),
Ni_asc,
Ni_desc,
round(Hi_asc,2),
round(Hi_desc,2))
colnames(TDF_Ozono) <- c("Lim inf","Lim sup","MC","ni","hi(%)",
"Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
# crear de fila de totales
totales <- c(lim_inf="TOTAL",
lim_sup=" ",
MC=" ",
ni=sum(ni),
hi=sum(hi),
Ni_asc=" ",
Ni_des=" ",
Hi_asc=" ",
Hi_des=" ")
TDF_Ozono_total <- rbind(TDF_Ozono, totales)
library(knitr)
## Warning: package 'knitr' was built under R version 4.5.2
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.5.2
kable(TDF_Ozono_total, align='c',
caption="Tabla de Distribución de Frecuencias de la Concentración de
Ozono en el Aire") %>%
kable_styling(full_width=FALSE, position="center",
bootstrap_options=c("striped","hover","condensed"))
Tabla de Distribución de Frecuencias de la Concentración de Ozono en el
Aire
|
Lim inf
|
Lim sup
|
MC
|
ni
|
hi(%)
|
Ni asc
|
Ni desc
|
Hi asc(%)
|
Hi desc(%)
|
|
1
|
24.86
|
12.93
|
50
|
43.1
|
50
|
116
|
43.1
|
100
|
|
24.86
|
48.71
|
36.785
|
30
|
25.86
|
80
|
66
|
68.97
|
56.9
|
|
48.71
|
72.57
|
60.64
|
12
|
10.34
|
92
|
36
|
79.31
|
31.03
|
|
72.57
|
96.43
|
84.5
|
15
|
12.93
|
107
|
24
|
92.24
|
20.69
|
|
96.43
|
120.29
|
108.36
|
6
|
5.17
|
113
|
9
|
97.41
|
7.76
|
|
120.29
|
144.14
|
132.215
|
2
|
1.72
|
115
|
3
|
99.14
|
2.59
|
|
144.14
|
168
|
156.07
|
1
|
0.86
|
116
|
1
|
100
|
0.86
|
|
TOTAL
|
|
|
116
|
100
|
|
|
|
|
# GRAFICAS
# Histograma
hist_Ozono <- hist(Ozono, breaks=11,
main="Gráfica N°1: Distribución de la Concentración de
Ozono Presente en el Aire",
xlab="Ozono",
ylab="Cantidad",
ylim=c(0, max(ni)),
col="purple",
cex.main=0.9,
cex.lab=1,
cex.axis=0.9,
xaxt="n")
axis(1, at=hist_Ozono$breaks,
labels=hist_Ozono$breaks, las=1,
cex.axis=0.9)

# Global
hist_Ozono <- hist(Ozono, breaks=11,
main="Gráfica N°2: Distribución de la Concentración de
Ozono Presente en el Aire",
ylab="Cantidad",
ylim=c(0, length(Ozono)),
col="purple",
cex.main=1,
cex.lab=1,
cex.axis=0.9,
xaxt="n")
axis(1, at=hist_Ozono$breaks,
labels=hist_Ozono$breaks, las=1,
cex.axis=0.9)

barplot(TDF_Ozono[["hi(%)"]],
space=0,
col="skyblue",
main="Gráfica N°3: Distribución de la Concentración de Ozono
Presente en el Aire",
xlab="Ozono",
ylab="Porcentaje (%)",
names.arg=TDF_Ozono$MC,
ylim=c(0,100))

# Diagrama de Caja
barplot(TDF_Ozono$'hi(%)', space=0,
col="lightblue",
main="Gráfica N°4: Distribución de la Concentración de Ozono
Presente en el Aire",
ylab="Porcentaje (%)",
ylim=c(0,40),
cex.main=0.9,
cex.lab=1,
cex.axis=0.9,
names.arg=TDF_Ozono$MC)

boxplot(Ozono,
horizontal=TRUE,
main="Gráfica N°5: Distribución de la Concentración de Ozono
Presente en el Aire",
xlab="Ozono",
col="purple",
outline=TRUE,
pch=1)

Li <- lim_inf
Ls <- lim_sup
# Diagrama de Ojiva Ascendente y Descendente
plot(Li, Ni_desc,
main="Gráfica N°6: Ojiva Ascendente y Descendente de la Distribución de
la Concentración de Ozono",
xlab="Ozono",
ylab="Cantidad",
xlim=c(min(Li), max(Ls)),
col="orange",
type="o",
lwd=3,
xaxt="n")
lines(Ls, Ni_asc,
col="green",
type="o",
lwd=3)
axis(1, at=unique(round(c(Li, Ls),2)))

# Diagrama de Ojiva Ascendente y Descendente Porcentual
plot(Li, Hi_desc,
main="Gráfica N°7: Ojiva Ascendente y Descendente Porcentual de
la Concentración de Ozono",
xlab="Ozono",
ylab="Porcentaje (%)",
xlim=c(min(Li), max(Ls)),
col="red",
type="o",
lwd=2,
xaxt="n")
lines(Ls, Hi_asc,
col="blue",
type="o",
lwd=3)
axis(1, at=unique(round(c(Li, Ls),2)))
