title: “ESTUDIO ESTADÍSTICO DE LA CALIDAD DEL AIRE EN INDIA” output: html_notebook — # UNIVERSIDAD CENTRAL DEL ECUADOR ### PROYECTO:ESTUDIO ESTADÍSTICO DE LA CALIDAD DEL AIRE EN INDIA ### FECHA: 21/11/2025

#Estadística Descriptiva
#Ariana Viteri
#07/11/2025

# Cargar librerías necesarias
library(gt)

# 0. Cargar el dataframe
TDFDate <- read.csv("~/ariana tercer semestre/Estadistica/city_day.csv", header = TRUE)

# 1. Preparación de Datos: Convertir a formato de fecha R
TDFDate$Date_Convertida <- as.Date(TDFDate$Date, format = "%d/%m/%Y")

# 2. Agrupación por Año:
grupos_Anio <- format(TDFDate$Date_Convertida, format = "%Y")
grupos_Anio_limpio <- grupos_Anio[!is.na(grupos_Anio)]

# 3. Cálculo de Frecuencias (ni)
tabla_frecuencia <- as.data.frame(table(grupos_Anio_limpio))

# 👉 AQUI AÑADIMOS LA JERARQUÍA DESCENDENTE (2020 → 2015)
tabla_frecuencia <- tabla_frecuencia[order(-as.numeric(as.character(tabla_frecuencia$grupos_Anio_limpio))), ]

# 4. Asignación de Variables
Anio <- tabla_frecuencia$grupos_Anio_limpio
ni <- tabla_frecuencia$Freq            

# 5. Cálculos Derivados (Frecuencias relativas y acumuladas)
hi <- ni / sum(ni) * 100

# 6. Crear la Tabla de Distribución de Frecuencias Agrupadas
TDFAnioFin <- data.frame(Anio, ni, hi)

# --- INCLUSIÓN DE LA FILA TOTAL ---
total_ni <- sum(ni)
total_hi <- sum(hi) 

# 7. CREACIÓN DE TDFAnioCompleto (La variable que gt necesita)
TDFAnioCompleto <- rbind(TDFAnioFin, 
                         data.frame(Anio = "Total",
                                    ni = total_ni, 
                                    hi = total_hi))

# ========================================================
# PASOS DE CORRECCIÓN PARA EVITAR EL ERROR DE GT
# ========================================================

# 8. Limpiar nombres de columnas (esto suele causar problemas con GT/Markdown)
colnames(TDFAnioCompleto) <- c("Anio", "ni ", "hi (%)")

# 9. Asegurar que las columnas sean de tipo character/numeric para gt
TDFAnioCompleto$Anio <- as.character(TDFAnioCompleto$Anio)
TDFAnioCompleto$`hi (%)` <- round(TDFAnioCompleto$`hi (%)`, 2) # Redondear porcentajes

# ========================================================
# TABLA GT (CÓDIGO ORIGINAL MODIFICADO)
# ========================================================
library(gt)
library(dplyr)
TDFAnioCompleto %>%
  gt() %>%
  tab_header(
    title = md("Tabla Nro. 1"),
    subtitle = md("Tabla de frecuencias de Año en el estudio calidad del aire en India de 2015-2020")
  ) %>%
  tab_source_note(
    source_note = md("Fuente: Datos procesados por el autor a partir de archivo city.day.csv")
  ) %>%
  tab_style(
    style = cell_borders(sides = "left", color = "black", weight = px(2)),
    locations = cells_body()
  ) %>%
  tab_style(
    style = cell_borders(sides = "right", color = "black", weight = px(2)),
    locations = cells_body()
  ) %>%
  tab_style(
    style = cell_borders(sides = "left", color = "black", weight = px(2)),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_borders(sides = "right", color = "black", weight = px(2)),
    locations = cells_column_labels()
  ) %>%
  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. 1
Tabla de frecuencias de Año en el estudio calidad del aire en India de 2015-2020
Anio ni hi (%)
2020 4646 15.73
2019 7446 25.21
2018 6471 21.91
2017 4689 15.88
2016 3478 11.78
2015 2801 9.48
Total 29531 100.00
Fuente: Datos procesados por el autor a partir de archivo city.day.csv
# DIAGRAMA DE BARRAS local
barplot(TDFAnioFin$ni, 
        main = "Gráfico Nº1: Frecuencia de la muestra distribuida por año en la India 2015-2020",
        xlab = "Año de la Muestra", 
        ylab = "Frecuencia Cantidad ",
        cex.main = 0.8,
        names.arg = TDFAnioFin$Anio,
        las = 1,
        col = "skyblue")

# 2. DIAGRAMA DE BARRAS DE FRECUENCIA - Global
limite_y <- sum(TDFAnioFin$ni) # Recalcula el límite Y (el total de la muestra)

barplot(TDFAnioFin$ni, 
        main = "Gráfico Nº2: Frecuencia de la muestra distribuida por año en la India 2015-2020",
        xlab = "Año", 
        ylab = "Frecuencia Cantidad ",
        cex.names = 0.9,
        cex.main = 0.8,
        names.arg = TDFAnioFin$Anio, 
        las = 1, 
        col = "darkblue", 
        ylim = c(0, limite_y)) # Establece el eje Y desde 0 hasta el total

# 1. Calcular el límite Y
limite_y <- sum(TDFAnioFin$ni)

barplot(TDFAnioFin$ni,
        main = "Gráfico Nº2: Frecuencia de la muestra distribuida por año en la India 2015-2020",
        xlab = "",
        ylab = "", # <--- Eliminamos el título aquí
        cex.names = 0.9,
        cex.main = 0.8,
        names.arg = TDFAnioFin$Anio,
        las = 0.9,
        col = "darkblue",
        ylim = c(0, limite_y))
mtext(text = "Frecuencia Cantidad",
      side = 2,
      line = 2.2) # <--- Cambia este valor para alejar o acercar el título
mtext(text = "Año",
      side = 1,
      line = 2)

#Histograma de Barras de Cantidad Global
library(RColorBrewer)

# Número de barras
n <- length(TDFAnioFin$Anio)

# Paleta de colores verde pastel
colores <- colorRampPalette(brewer.pal(9, "Greens"))(n)  # degradado de verdes pastel

# Límite Y global
max_y_global <- sum(TDFAnioFin$ni)

# Gráfico de barras
barplot(
  height = TDFAnioFin$ni,
  names.arg = TDFAnioFin$Anio,
  main = "Gráfica Nro 3: Distribución de la muestra por año en India (2015-2020)",
  xlab = "",
  ylab = "Cantidad",
  col = colores,       # aplica el verde pastel
  ylim = c(0, max_y_global),
  las = 1,             # nombres de eje X horizontales
  cex.names = 0.8,     # tamaño de nombres
  cex.main = 0.9,      # tamaño del título
  mgp = c(3.3, 1, 0)     # posición de títulos y labels
)

# Etiqueta adicional para eje X, más separada
mtext("Año de la Muestra", side = 1, line = 4, cex = 1)

# DIAGRAMA DE BARRAS DE FRECUENCIA RELATIVA - Global
barplot(TDFAnioFin$hi, 
        main = "Gráfico Nº4: Frecuencia de la muestra distribuida
        por año en la India 2015-2020",
        xlab = "Año", 
        ylab = "Porcentaje (%)", 
        names.arg = TDFAnioFin$Anio, 
        las = 1, 
        col = "darkgreen",
        mgp = c(3.1, 1, 0),
        ylim = c(0, 100))

# =============================
# DIAGRAMA CIRCULAR (PASTEL) CON LEYENDA EN CUADRO
# =============================

library(RColorBrewer)

# Frecuencias relativas en porcentaje
hi_pastel <- round(TDFAnioFin$ni / sum(TDFAnioFin$ni) * 100, 1)

# Etiquetas SOLO porcentaje
etiquetas <- paste0(hi_pastel, "%")

# Paleta de colores (amarillo → naranja → rojo)
paleta_base <- brewer.pal(n = length(TDFAnioFin$ni), "YlOrRd")

# Ordenar colores según porcentaje
colores <- paleta_base[rank(hi_pastel)]  # menor porcentaje → color más claro

# Gráfico circular
pie(
  TDFAnioFin$ni,
  labels = etiquetas,
  main = "Gráfico Nº4.2: Distribución porcentual por año (2015-2020)",
  col = colores,
  radius = 1
)

# Leyenda con cuadro
legend(
  "topright",                        # posición de la leyenda
  legend = TDFAnioFin$Anio,          # nombres de los años
  fill = colores,                     # colores correspondientes
  title = "Año de la Muestra",
  cex = 0.8,                          # tamaño del texto
  bty = "o"                            # 'o' dibuja el cuadro alrededor de la leyenda
)

# ============================================
# INDICADORES ESTADÍSTICOS – Variable Anio
# (Cualitativa Ordinal)
# ============================================

# 1. MODA (Mo): Año con mayor frecuencia
Moda_row <- TDFAnioFin[which.max(TDFAnioFin$ni), ]
Mo_calc <- as.character(Moda_row$Anio)

# 2. MEDIANA (Me)
Ni_calc <- cumsum(TDFAnioFin$ni)
N_total <- sum(TDFAnioFin$ni)
Posicion_Me <- N_total / 2

Mediana_row_index <- which(Ni_calc >= Posicion_Me)[1]
Me_calc <- as.character(TDFAnioFin$Anio[Mediana_row_index])

# 3. RANGO (Año inicial – Año final)
Rango_calc <- paste0(
  as.character(TDFAnioFin$Anio[length(TDFAnioFin$Anio)]),
  " a ",
  as.character(TDFAnioFin$Anio[1])
)

# ============================================
# TABLA DE INDICADORES
# ============================================

Variable <- "Anio (Periodo de Estudio)"
Rango <- Rango_calc
X <- "-"          # Media no aplica
Me <- Me_calc
Mo <- Mo_calc
var <- "-"
desv <- "-"
CV <- "-"
As <- "-"
K <- "-"

Tabla_indicadores <- data.frame(
  Variable, Rango, X, Me, Mo, var, desv, CV, As, K
)

colnames(Tabla_indicadores) <- c(
  "Variable","Rango","X","Me","Mo","Var","sd","CV","As","K"
)

# ============================================
# TABLA GT
# ============================================

library(gt)
library(dplyr)

Tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nro. 3*"),
    subtitle = md("**Indicadores Estadísticos de la Variable Anio en el estudio de calidad del aire en India (2015–2020)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 2  
Fuente: Datos procesados por el autor a partir del 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 Variable Anio en el estudio de calidad del aire en India (2015–2020)
Variable Rango X Me Mo Var sd CV As K
Anio (Periodo de Estudio) 2015 a 2020 - 2018 2019 - - - - -
Autor: Grupo 2
Fuente: Datos procesados por el autor a partir del archivo city.day.csv