UNIVERSIDAD CENTRAL DEL ECUADOR

PROYECTO:ESTUDIO ESTADÍSTICO DE LA CALIDAD DEL AIRE DE LA INDIA

FECHA: 19/11/2025

# ==============================================================================
# ESTADÍSTICA DESCRIPTIVA (VARIABLE CUALITATIVA NOMINAL: ZONA)
# ==============================================================================
# Autor: ARIEL CHILUISA
# Fecha: 19/11/2025
# ==============================================================================

# --------------------------
# 0. CARGA DE LIBRERÍAS
# --------------------------
library(gt)
library(dplyr)
library(RColorBrewer) 

# --------------------------
# 1. CARGA DE DATOS
# --------------------------
# NOTA: Asegúrate que la ruta del archivo sea correcta
datos <- read.csv("C:/Users/JOSELYN/Desktop/kangle/Datos Cambiados.csv",
                  header = TRUE,
                  dec = ".",
                  sep = ",")

# ==============================================================================
# 2. CÁLCULO DE FRECUENCIAS (ZONA)
# ==============================================================================

Zona <- datos$Zona
# Tabla de distribución de frecuencia (TDF)
TDF_Zona <- data.frame(table(Zona))

# Cálculo de frecuencias
ni <- TDF_Zona$Freq
hi <- round((ni / sum(ni)) * 100, 2)
Zona <- TDF_Zona$Zona

TDF_Zona <- data.frame(Zona, ni, hi)

# Fila de resumen (TOTAL)
Summary <- data.frame(Zona = "TOTAL", ni = sum(ni), hi = 100)
TDF_Zona_suma <- rbind(TDF_Zona, Summary)

colnames(TDF_Zona_suma) <- c("Nombre_Oficial", "ni", "hi(%)")

# ==============================================================================
# 3. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS (GT)
# ==============================================================================

TDF_Zona_suma %>%
  gt() %>%
  tab_header(
    title = md("Tabla Nro. 2"),
    subtitle = md("Tabla de distribución de Zona de estados de la estación de monitoreo")
  ) %>%
  tab_source_note(
    source_note = md("Fuente: Datos procesados por el autor a partir de archivo city.day.csv ")
  ) %>%
  # --- Estilos de Borde ---
  tab_style(
    style = cell_borders(sides = "left", color = "black", weight = px(2), style = "solid"),
    locations = cells_body()
  ) %>%
  tab_style(
    style = cell_borders(sides = "right", color = "black", weight = px(2), style = "solid"),
    locations = cells_body()
  ) %>%
  tab_style(
    style = cell_borders(sides = "left", color = "black", weight = px(2), style = "solid"),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_borders(sides = "right", color = "black", weight = px(2), style = "solid"),
    locations = cells_column_labels()
  ) %>%
  # --- Opciones Generales de la Tabla ---
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
Tabla Nro. 2
Tabla de distribución de Zona de estados de la estación de monitoreo
Nombre_Oficial ni hi(%)
Centro 289 0.98
Este 7873 26.66
Oeste 21369 72.36
TOTAL 29531 100.00
Fuente: Datos procesados por el autor a partir de archivo city.day.csv
# ==============================================================================
# 4. GENERACIÓN DE GRÁFICOS (5 GRÁFICAS)
# ==============================================================================

TDF_Zona$Zona <- iconv(TDF_Zona$Zona, from = "latin1", to = "UTF-8", sub = "")

# -----------------------------------------------------------
# DEFINICIÓN DE PALETAS DE COLORES 
# -----------------------------------------------------------
colores_manual <- c("yellow", "orange", "red", "cyan", "magenta", "green", "blue")
colores_zona <- colores_manual[1:length(TDF_Zona$Zona)]

n <- length(TDF_Zona$Zona)
colores_set3 <- brewer.pal(min(n, 12), "Set3") 
colores_pie <- adjustcolor(colores_set3, alpha.f = 0.9) 

# ------------------------------------------------------------------------------
# Gráfica No. 1.1: Distribución de Zonas (Frecuencia Absoluta - Global por defecto)
# ------------------------------------------------------------------------------
barplot(
  height = TDF_Zona$ni,
  names.arg = TDF_Zona$Zona, 
  main = "Gráfica No. 1: Distribución de Zonas del estudio del aire en India, entre
  2015-2020",
  xlab = "Zonas",
  ylab = "Cantidad (ni)",
  col = heat.colors(length(TDF_Zona$ni)),
  las = 2,                 
  cex.names = 0.7,         
  ylim = c(0, max(TDF_Zona$ni) * 1.1)
)

# ------------------------------------------------------------------------------
# Gráfica No. 1.2: Distribución de las Zonas (Frecuencia Absoluta - Vista GLOBAL)
# ------------------------------------------------------------------------------

# NOTA: Ajuste de margen para asegurar la visibilidad del Eje X y evitar el tope con el título
par(mar = c(8, 4, 6, 2) + 0.1) 

barplot(TDF_Zona$ni,
        main = "Gráfica No. 2: Distribución de Zonas del estudio del aire en India, entre
  2015-2020",
        xlab = "", # Usamos mtext para el título del eje X
        ylab = "Cantidad (ni)",
        col = colores_zona, 
        names.arg = TDF_Zona$Zona,
        ylim = c(0, max(TDF_Zona$ni) * 1.1),
        las = 2,
        cex.names = 0.7
)
mtext("Zonas", side = 1, line = 6.5, cex = 1)

# IMPORTANTE: Restablecer los márgenes estándar después de este gráfico
par(mar = c(5, 4, 4, 2) + 0.1)

# ------------------------------------------------------------------------------
# Gráfica No. 1.3: Distribución de Zonas (Porcentaje Local)
# ------------------------------------------------------------------------------

barplot(TDF_Zona$hi,
        main = "Gráfica No. 3: Distribución de Zonas prcentual del estudio del aire en India, entre
  2015-2020",
        xlab = "Zonas",
        ylab = "Porcentaje (%)",
        col = colores_zona,
        names.arg = TDF_Zona$Zona,
        ylim = c(0, max(TDF_Zona$hi) * 1.2),
        las = 2,
        cex.names = 0.7
)

# ------------------------------------------------------------------------------
# Gráfica N°1.4: Distribución de Zonas (Porcentaje Global)
# ------------------------------------------------------------------------------

barplot(TDF_Zona$hi,
        main = "Gráfica No. 4: Distribución de Zonas porcentual del estudio del aire en India, entre
  2015-2020",
        xlab = "Zonas",
        ylab = "Porcentaje (%)",
        col = colores_zona,
        names.arg = TDF_Zona$Zona,
        ylim = c(0, 100),
        las = 2,
        cex.names = 0.7
)

# ------------------------------------------------------------------------------
# Gráfica No. 1.5: Diagrama Circular (Porcentaje)
# ------------------------------------------------------------------------------

etiqueta <- paste(TDF_Zona$hi, "%", sep = "")

pie(TDF_Zona$hi,
    labels = etiqueta,
    radius = 1,
    col = colores_pie, 
    main = "Gráfica No. 5: Distribución de Zonas del estudio del aire en India, entre
  2015-2020")

legend("bottomright",
       legend = TDF_Zona$Zona,
       title = "Leyenda",
       fill = colores_pie,
       cex = 0.8)

# ==============================================================================
# 5. CÁLCULO DE MODA Y RANGO (ZONA)
# ==============================================================================

# CÁLCULO DE LA MODA (Categoría más frecuente)
moda_index <- which.max(TDF_Zona$ni)
Moda_Zona <- TDF_Zona$Zona[moda_index]

# CÁLCULO DEL RANGO (Número de categorías únicas)
Rango_Zona_Categorias <- length(TDF_Zona$Zona)

cat("\n==========================================\n")
## 
## ==========================================
cat("          ANÁLISIS DE MODA Y RANGO\n")
##           ANÁLISIS DE MODA Y RANGO
cat("==========================================\n")
## ==========================================
cat("MODA (Categoría más frecuente): ", as.character(Moda_Zona), "\n")
## MODA (Categoría más frecuente):  Oeste
cat("RANGO (Número de categorías únicas):", Rango_Zona_Categorias, "\n")
## RANGO (Número de categorías únicas): 3
cat("==========================================\n")
## ==========================================
# ==============================================================================
# 6. TABLA GT DE INDICADORES ESTADÍSTICOS (ZONA)
# ==============================================================================

# 1. CÁLCULO DE INDICADORES (Moda y Rango, el resto no aplica)
Mo_calc <- as.character(Moda_Zona) # Moda ya calculada en la Sección 5
Rango_calc <- paste0("Número de categorías: ", Rango_Zona_Categorias)

# 2. Creación del Data Frame de Indicadores
Variable <- "Zona (Localidad geográfica)"
Rango <- Rango_calc 
Me <- "-" # Mediana no aplica a variables nominales
Mo <- Mo_calc # Moda
X <- "-" # Media no aplica a variables nominales
var <- "-" # Varianza no aplica
desv <- "-" # Desviación Estándar no aplica
CV <- "-" # Coeficiente de Variación no aplica
As <- "-" # Asimetría no aplica
K <- "-" # Curtosis no aplica

Tabla_indicadores_Zona <- data.frame(Variable, Rango, X, Me, Mo, var, desv, CV, As, K)
colnames(Tabla_indicadores_Zona) <- c("Variable","Rango","X", "Me", "Mo","Var",
                                      "sd","CV","As","K")

# 3. Generar la Tabla GT
Tabla_indicadores_Zona %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nro. 3*"),
    subtitle = md("**Indicadores Estadísticos de la Zona del estudio del aire en India (2015-2020)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Ariel Chilisa\n Fuente: Datos procesados por el autor a partir de archivo city.day.csv")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
Tabla Nro. 3
Indicadores Estadísticos de la Zona del estudio del aire en India (2015-2020)
Variable Rango X Me Mo Var sd CV As K
Zona (Localidad geográfica) Número de categorías: 3 - - Oeste - - - - -
Autor: Ariel Chilisa Fuente: Datos procesados por el autor a partir de archivo city.day.csv