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 |
|||||||||