# Tema: Estadística Multivariable
# Autor: Camila Zambrano
# Fecha: 22/06/2026

0.Carga de librerías

library(gt)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(e1071)
library(htmltools)

1. Carga de datos

setwd("~/CAMILA")
datos <- read.csv("Datos Cambiados..csv",
                  header = TRUE,
                  sep = ",",
                  dec = ".",
                  na.strings = "-")

2. Definición de la variable

datos <- na.omit(datos)

datos <- datos[order(datos$AQI, datos$PM2.5), ] 

datos_prom <- aggregate(PM2.5 ~ AQI, data = datos, mean) 

# Variable independiente (X): Material Paticulado 2.5
X <- datos_prom$PM2.5

# Variable dependiente (Y): Índice de Calidad del Aire
Y <- datos_prom$AQI

3. Tabla pares de valores

TVP_PM2.5_AQI <- data.frame(X, Y)

n_modelo <- nrow(TVP_PM2.5_AQI)

cat("Tamaño muestral del modelo =", n_modelo)
## Tamaño muestral del modelo = 448

En el modelo logarítmico el tamaño muestral disminuye a 448 debido al tratamiento aplicado a los datos antes de construir el modelo. Inicialmente se realizó una depuración. Posteriormente, se aplicó una agregación de datos mediante la función aggregate(), agrupando los valores de PM2.5 según cada nivel de AQI y calculando su promedio. Este procedimiento permitió obtener una relación única entre la variable independiente (PM2.5 promedio) y la variable dependiente (AQI), por lo que el número de observaciones del modelo corresponde al número de valores únicos de AQI disponibles, resultando en un tamaño muestral de 448.

# Tabla pares de valores
tabla <- TVP_PM2.5_AQI %>%
  gt() %>%
  cols_align(
    align = "center",
    columns = everything()
  ) %>%
  fmt_number(
    columns = everything(),
    decimals = 2
  ) %>%
  tab_header(
    title = md("*Tabla N°1*"),
    subtitle = md("*Pares de valores de PM2.5 y AQI, Calidad del aire en India 2015-2020*")
  ) %>%
  tab_source_note(
    source_note = md(paste0(
      "**Nota:** Tamaño muestral n = ", nrow(TVP_PM2.5_AQI),
      " observaciones utilizadas en el análisis."
    ))
  )

div(
  style = "height:400px; overflow-y:auto;",
  tabla
)
Tabla N°1
Pares de valores de PM2.5 y AQI, Calidad del aire en India 2015-2020
X Y
6.30 23.00
9.46 26.00
9.97 29.00
14.48 30.00
9.55 31.00
9.26 32.00
11.97 33.00
11.09 34.00
12.64 35.00
12.97 36.00
11.00 37.00
12.30 38.00
12.25 39.00
14.34 40.00
15.01 41.00
13.65 42.00
14.97 43.00
15.36 44.00
14.38 45.00
15.60 46.00
13.92 47.00
15.70 48.00
16.57 49.00
17.76 50.00
16.41 51.00
17.23 52.00
18.41 53.00
20.50 54.00
17.43 55.00
19.32 56.00
17.60 57.00
20.98 58.00
19.58 59.00
19.34 60.00
21.04 61.00
21.36 62.00
18.75 63.00
22.79 64.00
23.59 65.00
22.55 66.00
24.27 67.00
26.38 68.00
26.01 69.00
28.40 70.00
25.72 71.00
27.57 72.00
28.03 73.00
27.01 74.00
30.28 75.00
28.96 76.00
27.05 77.00
29.27 78.00
26.94 79.00
31.22 80.00
29.49 81.00
32.09 82.00
32.00 83.00
30.96 84.00
30.32 85.00
32.49 86.00
34.56 87.00
32.35 88.00
34.07 89.00
35.04 90.00
36.45 91.00
35.69 92.00
34.87 93.00
37.22 94.00
39.05 95.00
40.78 96.00
40.51 97.00
39.87 98.00
40.09 99.00
40.38 100.00
40.52 101.00
40.96 102.00
43.77 103.00
44.81 104.00
42.54 105.00
44.96 106.00
47.63 107.00
47.35 108.00
43.19 109.00
47.10 110.00
44.35 111.00
48.74 112.00
48.85 113.00
50.28 114.00
50.34 115.00
50.27 116.00
49.89 117.00
48.10 118.00
51.55 119.00
53.24 120.00
52.90 121.00
54.51 122.00
53.48 123.00
55.31 124.00
56.30 125.00
54.89 126.00
54.32 127.00
54.47 128.00
54.89 129.00
52.51 130.00
55.60 131.00
62.52 132.00
60.26 133.00
65.95 134.00
56.13 135.00
60.66 136.00
62.69 137.00
55.83 138.00
61.89 139.00
58.18 140.00
60.36 141.00
58.11 142.00
63.89 143.00
64.11 144.00
66.35 145.00
65.22 146.00
59.73 147.00
64.35 148.00
62.86 149.00
67.02 150.00
66.26 151.00
59.04 152.00
65.44 153.00
64.06 154.00
63.50 155.00
67.36 156.00
70.14 157.00
66.94 158.00
67.52 159.00
67.32 160.00
68.04 161.00
64.65 162.00
69.87 163.00
70.04 164.00
68.10 165.00
66.98 166.00
61.03 167.00
72.45 168.00
73.21 169.00
64.66 170.00
63.71 171.00
75.49 172.00
70.00 173.00
66.49 174.00
67.95 175.00
70.81 176.00
87.40 177.00
87.60 178.00
77.36 179.00
74.55 180.00
88.92 181.00
77.27 182.00
71.55 183.00
86.52 184.00
91.66 185.00
84.86 186.00
79.56 187.00
53.58 188.00
87.53 189.00
73.82 190.00
71.45 191.00
81.65 192.00
85.22 193.00
77.52 194.00
85.81 195.00
76.63 196.00
80.45 197.00
84.96 198.00
92.31 199.00
84.65 200.00
69.83 201.00
82.01 202.00
90.29 203.00
84.66 204.00
85.60 205.00
82.25 206.00
83.98 207.00
88.14 208.00
80.99 209.00
84.07 210.00
94.77 211.00
69.56 212.00
136.85 213.00
90.86 214.00
87.83 215.00
108.04 216.00
81.83 217.00
81.84 218.00
93.00 219.00
92.40 220.00
91.30 221.00
93.40 222.00
95.33 223.00
101.84 224.00
95.24 225.00
90.94 226.00
96.40 227.00
93.45 228.00
93.18 229.00
95.00 230.00
101.24 231.00
90.38 232.00
84.29 233.00
86.52 234.00
96.96 235.00
100.96 236.00
89.56 237.00
89.01 238.00
85.69 239.00
90.45 240.00
104.71 241.00
105.95 242.00
91.67 243.00
112.96 244.00
98.60 245.00
108.40 246.00
91.70 247.00
106.70 248.00
88.03 249.00
110.71 251.00
81.63 252.00
113.33 253.00
115.57 254.00
108.68 255.00
82.70 256.00
100.67 257.00
92.68 258.00
74.83 259.00
104.84 260.00
135.89 261.00
111.32 262.00
111.54 263.00
110.73 264.00
112.05 265.00
103.95 266.00
115.13 267.00
99.59 268.00
102.04 269.00
108.02 270.00
103.37 271.00
120.98 272.00
106.87 273.00
118.64 274.00
105.02 275.00
119.99 276.00
119.11 277.00
121.38 278.00
110.89 279.00
101.28 280.00
116.54 281.00
112.27 282.00
103.33 283.00
112.64 284.00
112.50 285.00
127.54 286.00
107.12 287.00
107.80 288.00
122.35 289.00
99.56 290.00
133.94 291.00
126.08 292.00
108.66 293.00
76.35 294.00
124.61 295.00
132.99 296.00
127.31 297.00
128.31 298.00
128.90 299.00
119.47 300.00
135.55 301.00
116.18 302.00
130.03 303.00
140.84 304.00
129.19 305.00
155.91 306.00
120.20 307.00
95.34 308.00
148.25 309.00
144.66 310.00
177.59 311.00
109.88 312.00
145.90 313.00
125.86 314.00
136.00 315.00
123.61 316.00
146.44 317.00
149.69 318.00
158.10 319.00
132.54 320.00
157.12 321.00
103.64 322.00
135.63 323.00
126.70 324.00
143.88 325.00
177.20 326.00
165.92 327.00
161.30 328.00
161.80 329.00
145.13 330.00
159.33 331.00
154.26 332.00
140.87 333.00
142.14 334.00
160.54 335.00
171.97 336.00
168.43 338.00
192.35 339.00
168.99 340.00
172.55 341.00
192.06 342.00
163.94 343.00
166.04 344.00
178.64 345.00
147.25 346.00
166.24 347.00
182.69 348.00
184.40 349.00
178.97 350.00
134.21 351.00
180.78 352.00
180.61 353.00
194.88 354.00
178.31 356.00
201.08 357.00
158.00 358.00
218.99 359.00
156.19 360.00
136.20 361.00
186.54 362.00
193.10 363.00
205.02 364.00
179.71 365.00
201.20 366.00
181.70 367.00
141.17 368.00
167.03 369.00
201.44 370.00
187.30 371.00
217.49 372.00
233.10 373.00
164.63 374.00
191.17 375.00
208.32 376.00
207.70 377.00
200.85 378.00
209.35 379.00
177.25 380.00
218.98 381.00
216.06 382.00
190.39 383.00
174.49 384.00
204.24 385.00
215.61 387.00
155.18 388.00
218.00 389.00
137.20 390.00
168.00 391.00
176.83 392.00
221.08 394.00
207.18 396.00
218.04 397.00
251.23 398.00
227.28 399.00
183.28 400.00
278.95 401.00
228.78 403.00
227.89 404.00
229.00 405.00
172.20 406.00
244.78 407.00
217.09 411.00
212.36 413.00
269.67 415.00
273.46 417.00
287.56 419.00
240.26 420.00
266.02 421.00
238.69 422.00
249.90 423.00
361.98 424.00
279.18 425.00
228.90 426.00
198.10 428.00
294.36 430.00
250.42 431.00
246.46 432.00
238.82 433.00
254.46 437.00
174.03 438.00
263.72 439.00
252.07 440.00
249.87 441.00
525.09 442.00
209.63 443.00
186.80 444.00
242.58 449.00
257.71 450.00
259.14 451.00
338.57 452.00
261.77 453.00
258.61 454.00
299.11 455.00
263.39 456.00
290.10 458.00
314.32 460.00
303.41 462.00
295.71 463.00
273.71 464.00
293.14 467.00
326.79 468.00
323.98 471.00
313.22 472.00
320.26 473.00
313.29 475.00
247.27 478.00
314.59 480.00
311.03 482.00
353.86 483.00
336.42 484.00
327.04 485.00
408.56 487.00
372.14 492.00
426.52 497.00
331.20 501.00
270.21 502.00
333.43 506.00
319.69 509.00
353.58 510.00
358.91 515.00
225.49 522.00
127.32 531.00
391.20 532.00
363.41 537.00
401.58 557.00
354.56 561.00
378.68 577.00
388.45 591.00
153.28 593.00
423.52 595.00
370.73 597.00
465.08 613.00
582.28 659.00
639.19 675.00
495.90 677.00
Nota: Tamaño muestral n = 448 observaciones utilizadas en el análisis.

4. Gráfica de dispersión

# Asegurar formato numérico
X <- as.numeric(as.character(X))
Y <- as.numeric(as.character(Y))

# Definir límites con manejo de valores faltantes
x_max <- max(X, na.rm = TRUE) * 1.05
y_max <- max(Y, na.rm = TRUE) * 1.05

# Crear gráfico
plot(X, Y,
     type = "n",
     main = "Gráfica N°1\nDiagrama de dispersión entre PM2.5 y AQI\nen el estudio de la calidad del aire en India 2015-2020",
     xlab = expression("Material Particulado 2.5 ("*mu*"g/m³)"),
     ylab = "AQI (Índice)",
     xlim = c(0, x_max),
     ylim = c(0, y_max),
     cex.main = 1.1,
     cex.lab = 1.1,
     cex.axis = 0.9)

# Cuadrícula
grid(nx = NULL, ny = NULL, col = "gray85", lty = 1)

# Puntos (usando na.omit para evitar errores con valores faltantes en puntos)
points(na.omit(data.frame(X, Y)),
       col = "deepskyblue3",
       pch = 16,
       cex = 1.2)

box(lwd = 1.5)

5. Conjetura y parámetros

Conjetura

Conjetura.-
La distribución de los puntos en el gráfico muestra una curva ascendente, lo que sugiere un modelo logarítmico. El AQI aumenta de forma acelerada a medida que se incrementa el Material Particulado 2.5, indicando una relación no lineal y un impacto creciente del contaminante sobre la calidad del aire.



Modelo exponencial general:

\[ Y = a+b*ln(X) \]

Modelo logarítmico aplicado al estudio:

\[ AQI = a+b*ln(PM2.5) \]

Parámetros

modelo_log <- lm(Y ~ log(X), data = TVP_PM2.5_AQI)

a_est <- coef(modelo_log)[1]
a_est
## (Intercept) 
##   -443.7451
b_est <- coef(modelo_log)[2]
b_est
##  log(X) 
## 154.463

Justificación del uso de la regresión lineal (lm)



Aunque el modelo planteado presenta una relación logarítmica, se puede utilizar la función lm() debido a que el modelo puede linealizarse mediante la transformación logarítmica de la variable independiente. Esta transformación permite representar una relación no lineal entre las variables mediante una ecuación lineal respecto a sus parámetros.



Modelo logarítmico general:

\[ Y=a+b\ln(X) \]


Aplicando la transformación:

\[ X_1=\ln(X) \]


Obtenemos un modelo lineal:

\[ Y=a+bX_1 \]


Definimos:

\[ X_1=\ln(X) \]

\[ \beta_0=a,\qquad \beta_1=b \]


Por lo tanto, el modelo queda expresado como:

\[ Y=\beta_0+\beta_1X_1 \]


Modelo logarítmico aplicado al estudio de calidad del aire:

\[ AQI=a+b\ln(PM2.5) \]


Definiendo:

\[ Y=AQI \]

\[ X_1=\ln(PM2.5) \]


Obtenemos:

\[ AQI=\beta_0+\beta_1\ln(PM2.5) \]


Esta ecuación corresponde a una regresión lineal respecto a los parámetros, por lo que puede ser estimada utilizando:

\[ lm(AQI \sim log(PM2.5)) \]


Finalmente, los coeficientes obtenidos permiten reconstruir el modelo logarítmico:

\[ AQI=a+b\ln(PM2.5) \]

6. Gráfica de comparación de la realidad con el modelo

# Límites
x_max <- max(X) * 1.05
y_max <- max(Y) * 1.05

# Gráfico vacío
plot(X, Y,
     type = "n",
     main = "Gráfica N°2\nModelo logarítmico entre PM2.5 y AQI\nen el estudio de la calidad del aire en India 2015-2020",
     xlab = expression("Material Particulado 2.5 ("*mu*"g/m³)"),
     ylab = "AQI (Índice)",
     xlim = c(0, x_max),
     ylim = c(0, y_max),
     cex.main = 1.1,
     cex.lab = 1.1,
     cex.axis = 0.9)

# Cuadrícula
grid(nx = NULL, ny = NULL,
     col = "gray85",
     lty = 1)

# Puntos reales
points(X, Y,
       col = "deepskyblue3",
       pch = 16,
       cex = 1.2)

# Curva del modelo logarítmico
curve(a_est + b_est * log(x),
      from = 0,
      to = x_max,
      col = "red",
      lwd = 3,
      add = TRUE)
box(lwd = 1.5)

legend("topleft",
       legend = c("Datos reales", "Modelo logarítmico"),
       col = c("deepskyblue3", "red"),
       pch = c(16, NA),
       lwd = c(NA, 3),
       bty = "o",
       bg = "white",
       cex = 0.8,
       x.intersp = 0.6,
       y.intersp = 0.8)

7. Test de Bondad

Coeficiente de correlación de Pearson

r <- cor(TVP_PM2.5_AQI$X, TVP_PM2.5_AQI$Y) * 100
r
## [1] 93.01206

8. Restricciones

# Dominio [x]: D = {x|x E R+^0}
# Dominio [y]: D = {x|x E N ^ 0 ≤ x ≤ 2934}

El modelo logarítmico si presenta restricciones importantes. La función logaritmo natural solo está definida para valores estrictamente positivos, por lo que el modelo únicamente es válido cuando (PM2.5 > 0). Adicionalmente, debido a la forma del modelo, cuando los valores de PM2.5 son muy pequeños, el logaritmo toma valores negativos grandes en magnitud, lo que puede generar predicciones de AQI negativas. Esto no es coherente con la naturaleza del índice de calidad del aire, ya que el AQI no puede ser menor a cero.

Por esta razón, el modelo es válido únicamente dentro del rango de datos observados en la muestra, evitando extrapolaciones hacia valores cercanos a cero.

9. Estimación

carga_objetivo <- median(X, na.rm = TRUE)

if(carga_objetivo <= 0){
  stop("Error: La carga (PM2.5) debe ser mayor a 0 para utilizar el modelo logarítmico.")
}

# Cálculo del AQI estimado
aqi_est <- a_est + b_est * log(carga_objetivo)

# Visualización del resultado
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(
  1, 1,
  labels = paste(
    "¿Cuál es el AQI esperado\n",
    "cuando el PM2.5 es", round(carga_objetivo, 2), "µg/m³?\n\n",
    "Resultado estimado (AQI):", round(aqi_est, 0)
  ),
  cex = 1.2,
  col = "deepskyblue3",
  font = 2
)

10. Conclusión

Entre la concentración de material particulado (PM2.5) y el Índice de Calidad del Aire (AQI) existe una relación de tipo logarítmica, representada por el modelo y = -443.7451 + 154.463*ln(x), siendo “y = Índice de Calidad de Agua (AQI)” y “x = Material Particulado 2.5 (PM2.5)”. El modelo presenta restricciones de que al ser una función logaritmo natural solo está definida para valores estrictamente positivos, por lo que el modelo únicamente es válido cuando (PM2.5 > 0).