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(htmltools)
datos <- read.csv("~/Estadistica/Proyecto 2026/Datos utilizados/Datos Cambiados.csv",
header = TRUE,
dec = ".",
sep = ",")
# Reemplazar "-" por NA únicamente en las variables de interés
datos$PM10[datos$PM10 == "-"] <- NA
datos$AQI[datos$AQI == "-"] <- NA
# Convertir a numérico
datos$PM10 <- as.numeric(datos$PM10)
datos$AQI <- as.numeric(datos$AQI)
# Conservar solo PM10 y AQI
datos_modelo <- datos[, c("PM10", "AQI")]
# Eliminar filas con NA únicamente de esas dos variables
datos_modelo <- na.omit(datos_modelo)
Se seleccionó PM10 como la variable independiente (X) y AQI como la variable dependiente (Y) para construir el modelo potencial. Debido a que el PM10 es uno de los contaminantes que se utilizan para calcular el Indice de Calidad del Aire (AQI). Por ello, la concentración de PM10 influye directamente en el valor del AQI. En general, cuando la concentración de PM10 aumenta, el AQI también aumenta, lo que indica una disminución en la calidad del aire.
# Selección de variables
# Y es Variable dependiente
Y_original <- datos_modelo$AQI #EFECTO
# X es Variable Independiente
X_original <- datos_modelo$PM10 #CAUSA
# Variables originales
Y_original <- datos_modelo$AQI # Variable dependiente
X_original <- datos_modelo$PM10 # Variable independiente
n_original <- nrow(datos_modelo)
cat("Tamaño muestral =", n_original)
## Tamaño muestral = 17764
#TPV
# Mostrar solo las primeras 10 filas
TO_PM10_AQI <- data.frame(X_original, Y_original)
tabla_10 <- head(TO_PM10_AQI, 10)
tabla_original <- tabla_10 %>%
gt() %>%
cols_align(
align = "center",
columns = everything()
) %>%
fmt_number(
columns = everything(),
decimals = 2
) %>%
tab_header(
title = md("*Tabla Nro. 1*"),
subtitle = md("*Pares de valores originales de PM10 y AQI, Calidad del aire en la India 2015-2020*")
) %>%
tab_source_note(
source_note = md(paste0(
"**Nota:** Se presentan únicamente las primeras 10 observaciones.Tamaño muestral n = ", nrow(TO_PM10_AQI)
))
)
tabla_original
| Tabla Nro. 1 | |
| Pares de valores originales de PM10 y AQI, Calidad del aire en la India 2015-2020 | |
| X_original | Y_original |
|---|---|
| 122.41 | 281.00 |
| 116.32 | 330.00 |
| 130.07 | 356.00 |
| 138.31 | 359.00 |
| 111.73 | 547.00 |
| 118.65 | 813.00 |
| 103.88 | 321.00 |
| 103.30 | 270.00 |
| 135.65 | 323.00 |
| 148.00 | 344.00 |
| Nota: Se presentan únicamente las primeras 10 observaciones.Tamaño muestral n = 17764 | |
# Gráfica de dispersión (Datos originales)
# Límites del gráfico
x_max_original <- max(X_original) * 1.05
y_max_original <- max(Y_original) * 1.05
# Crear gráfico vacío
plot(X_original, Y_original,
type = "n",
main = paste(
"Gráfica Nro. 1",
"Diagrama de dispersión entre PM10 y AQI",
"en el estudio de la calidad del aire en la India 2015-2020",
sep = "\n"
),
xlab = expression(PM10~(mu*g/m^3)),
ylab = "AQI (Índice)",
xlim = c(0, x_max_original),
ylim = c(0, y_max_original),
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 0.9)
# Cuadrícula
grid(nx = NULL, ny = NULL, col = "gray85", lty = 1)
# Puntos
points(X_original, Y_original,
col = "deepskyblue3",
pch = 16,
cex = 1.2)
# Marco
box(lwd = 1.5)
Con el fin de reducir la dispersión de los datos, se realizó la eliminación de valores atípicos y se calcularon los promedios de la concentración de PM10 para cada valor del AQI. Este procedimiento permite disminuir la variabilidad de las observaciones y facilita la identificación de la tendencia existente entre ambas variables, favoreciendo un mejor ajuste del modelo potencial.
# Eliminación de valores atípicos mediante el método IQR
Q1 <- quantile(datos_modelo$AQI, 0.25, na.rm = TRUE)
Q3 <- quantile(datos_modelo$AQI, 0.75, na.rm = TRUE)
IQR_AQI <- IQR(datos_modelo$AQI, na.rm = TRUE)
lim_inf <- Q1 - 1.5 * IQR_AQI
lim_sup <- Q3 + 1.5 * IQR_AQI
datos_modelo <- subset(datos_modelo,
AQI >= lim_inf &
AQI <= lim_sup)
# Se calcula el promedio de PM10 para cada valor de AQI
datos_prom <- aggregate(PM10 ~ AQI, data = datos_modelo, mean)
# Variable dependiente (Y)
Y <- datos_prom$AQI # Efecto
# Variable independiente (X)
X <- datos_prom$PM10 # Causa
# Tamaño muestral del modelo
n_modelo <- nrow(datos_prom)
cat("Tamaño muestral del modelo =", n_modelo)
## Tamaño muestral del modelo = 288
# Tabla de pares de valores promediados
TVP_PM10_AQI <- data.frame(X, Y)
# Mostrar solo las primeras 10 filas
tabla_10 <- head(TVP_PM10_AQI, 10)
# Tabla de pares de valores promediados
tabla <- tabla_10 %>%
gt() %>%
cols_align(
align = "center",
columns = everything()
) %>%
fmt_number(
columns = everything(),
decimals = 2
) %>%
tab_header(
title = md("*Tabla Nro. 2*"),
subtitle = md("*Pares de valores promediados de PM10 y AQI, Calidad del aire en la India 2015-2020*")
) %>%
tab_source_note(
source_note = md(paste0(
"**Nota:** Se presentan únicamente las primeras 10 observaciones. ",
"El tamaño muestral utilizado en el modelo fue n = ", nrow(TVP_PM10_AQI), "."
))
)
tabla
| Tabla Nro. 2 | |
| Pares de valores promediados de PM10 y AQI, Calidad del aire en la India 2015-2020 | |
| X | Y |
|---|---|
| 0.07 | 13.00 |
| 7.04 | 14.00 |
| 0.11 | 15.00 |
| 4.61 | 16.00 |
| 5.92 | 17.00 |
| 7.06 | 18.00 |
| 8.57 | 19.00 |
| 12.22 | 20.00 |
| 13.00 | 21.00 |
| 19.35 | 22.00 |
| Nota: Se presentan únicamente las primeras 10 observaciones. El tamaño muestral utilizado en el modelo fue n = 288. | |
# CREAR GRÁFICO DE DISPERSIÓN (Con datos promediados)
# Límites de los ejes
x_max <- max(X) * 1.05
y_max <- max(Y) * 1.05
# Crear gráfico vacío
plot(X, Y,
type = "n",
main = "Gráfica Nro. 2\nDiagrama de dispersión entre PM10 y AQI\nen el estudio de la calidad del aire en la India 2015-2020",
xlab = expression(PM10~(mu*g/m^3)),
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
points(X, Y,
col = "deepskyblue3",
pch = 16,
cex = 1.2)
# Marco del gráfico
box(lwd = 1.5)
La distribución de los puntos en el gráfico presenta una tendencia creciente, lo que indica que un modelo potencial podría describir adecuadamente la relación entre PM10 y AQI. Conforme aumenta la concentración de PM10, el AQI también se incrementa,reflejando una relación positiva y no lineal entre ambas variables.
Modelo potencial general \[ Y = aX^b \] Modelo potencial aplicado al estudio \[ AQI=a(PM10)^b \]
# Parámetros
# Ajustar el modelo potencial
modelo_pot <- lm(log(Y) ~ log(X))
# Intercepto = ln(a)
ln_a <- coef(modelo_pot)[1]
# Constante del modelo
a_est <- exp(ln_a)
# Exponente del modelo
b_est <- coef(modelo_pot)[2]
# Mostrar resultados
ln_a
## (Intercept)
## 1.638601
a_est
## (Intercept)
## 5.147962
b_est
## log(X)
## 0.6914335
Modelo potencial obtenido \[ AQI = 4.907\,(PM10)^{0.763} \] La expresión corresponde al modelo potencial final del estudio, obtenido al reemplazar los parámetros a y b por los valores estimados. Esta ecuación describe la relación entre la concentración de material particulado PM10 y el Índice de Calidad del Aire (AQI), permitiendo estimar el comportamiento del AQI en función de las variaciones de la concentración de PM10.
Justificación del uso de la regresión lineal (lm)
Aunque el modelo planteado presenta una relación potencial, se puede
utilizar la función lm() debido a que este modelo puede
linealizarse mediante la transformación logarítmica de la variable
independiente y de la variable dependiente.
Modelo potencial general
\[ Y=aX^b \]
Aplicando logaritmos
\[ \ln(Y)=\ln(a)+b\ln(X) \]
Definimos
\[ Y_1=\ln(Y) \]
\[ X_1=\ln(X) \]
\[ \beta_0=\ln(a), \qquad \beta_1=b \]
Obtenemos un modelo lineal
\[ Y_1=\beta_0+\beta_1X_1 \]
Modelo potencial aplicado al estudio de la calidad del aire
\[ AQI=a(PM10)^b \]
Definiendo
\[ Y_1=\ln(AQI) \]
\[ X_1=\ln(PM10) \]
Obtenemos
\[ \ln(AQI)=\beta_0+\beta_1\ln(PM10) \]
Esta ecuación corresponde a una regresión lineal respecto a los parámetros, por lo que puede ser estimada utilizando:
modelo_pot <- lm(log(Y) ~ log(X))
Finalmente, los coeficientes obtenidos permiten reconstruir el modelo potencial:
\[ AQI=a(PM10)^b \]
donde:
\[ a=e^{\beta_0} \]
\[ b=\beta_1 \]
# CREAR GRÁFICO DEL MODELO POTENCIAL
# 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 Nro. 3\nModelo potencial entre PM10 y AQI\nen el estudio de la calidad del aire en India 2015-2020",
xlab = expression(PM10~(mu*g/m^3)),
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)
# Datos observados
points(X, Y,
col = "deepskyblue3",
pch = 16,
cex = 1.2)
# Curva del modelo potencial
curve(a_est * x^b_est,
from = min(X),
to = max(X),
col = "red",
lwd = 3,
add = TRUE)
# Marco
box(lwd = 1.5)
# Leyenda
legend("topleft",
legend = c("Datos observados", "Modelo potencial"),
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)
# Correlación de Pearson
# Transformación logarítmica
ln_X <- log(X)
ln_Y <- log(Y)
# Coeficiente de correlación de Pearson
r <- cor(ln_X, ln_Y)*100
cat("Coeficiente de correlación (r) =", round(r, 2))
## Coeficiente de correlación (r) = 90.74
# Dominio [x]: D = {x|x E R |x>0|}
# Dominio [y]: D = {y|y E R |y>0|}
¿Existe algún valor en el dominio de x que sustituido en el modelo matemático genere un valor en y fuera de su dominio?
La principal restricción del modelo es que la concentración de PM10 debe ser mayor que cero, debido a que el ajuste del modelo se realiza mediante una transformación logarítmica, la cual no está definida para x=0. Para cualquier valor positivo de PM10, el modelo genera valores positivos de AQI, por lo que las predicciones permanecen dentro del dominio de la variable.
# Cálculos
# Pregunta de cantidad
AQI_80 <- round(a_est * (80^b_est))
# Pregunta de porcentaje
AQI_50 <- a_est * (50^b_est)
AQI_80_real <- a_est * (80^b_est)
incremento_porcentaje <- ((AQI_80_real - AQI_50) / AQI_50) * 100
# Visualización
par(mar = c(1,1,1,1))
plot(0, 0,
type = "n",
xlim = c(0,1),
ylim = c(0,1),
axes = FALSE,
xlab = "",
ylab = "")
text(
x = 0.5,
y = 0.48,
labels = paste(
"Pregunta de cantidad\n\n",
"¿Cuál es el AQI esperado cuando\n",
"la concentración de PM10 es de 80 µg/m³?\n\n",
"Resultado:", AQI_80, "\n\n",
"-----------------------------------------\n\n",
"Pregunta de porcentaje\n\n",
"¿En qué porcentaje aumenta el AQI esperado\n",
"al incrementar la concentración de PM10\n",
"de 50 a 80 µg/m³?\n\n",
"Resultado:", round(incremento_porcentaje, 2), "%"
),
cex = 1.15,
col = "deepskyblue3",
font = 2
)
En conclusión:
Entre la concentración de material
particulado PM10 y el Índice de Calidad del Aire (AQI) existe una
relación de tipo potencial, cuyo modelo es AQI = 4.907,(PM10)^{0.763} El
modelo presenta como principal restricción que la concentración de PM10
debe ser mayor que cero, debido a la transformación logarítmica empleada
para su ajuste. Los resultados indican que, a medida que aumenta la
concentración de PM10, el AQI también se incrementa, evidenciando que
este contaminante influye de manera significativa en el deterioro de la
calidad del aire.