#Estadística descriptiva 
#Variable cualitativa nominal:Zona
#Autor: Llumitasig Daniela 
#Fecha: 30/05/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(RColorBrewer) 

1.- Carga de datos

datos <- read.csv("~/Estadistica/Proyecto 2026/Datos utilizados/city_day (1).csv",
                  header = TRUE,
                  dec = ".",
                  sep = ",")

2.- Selección de la variable

Zona <- datos$Zona

3.- Frecuencia

# 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("Zona", "ni", "hi(%)")

4.- Tabla de distribución de frecuencias

TDF_Zona_suma %>%
  gt() %>%
  tab_header(
    title = md("Tabla Nro. 1"),
    subtitle = md("Distribución de frecuencias de la variable Zona para el análisis
                  estadístico de la calidad del aire en la India.")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 1
                     \n Fuente:https://www.kaggle.com/datasets/rohanrao/air-quality-data-in-india ")
  ) %>%
  # --- 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. 1
Distribución de frecuencias de la variable Zona para el análisis estadístico de la calidad del aire en la India.
Zona ni hi(%)
Centro 289 0.98
Este 7873 26.66
Oeste 21369 72.36
TOTAL 29531 100.00
Autor: Grupo 1

Fuente:https://www.kaggle.com/datasets/rohanrao/air-quality-data-in-india

5.- Gráficos de distribución de frecuencia

Diagrama de cantidad

#Diagrama genrado por RStudio 


library(RColorBrewer)

# Colores suaves
n <- length(TDF_Zona$Zona)
colores <- brewer.pal(min(max(n,3), 8), "Set2")

par(mar = c(5,5, 5, 2))
# Crear gráfico
barplot(
  height = TDF_Zona$ni,
  names.arg = TDF_Zona$Zona,
  
  # Títulos
  main = "Gráfica Nro. 1\nDistribución de la variable Zona\npara el análisis estadístico de la calidad del aire en la India (2015-2020)",
  
  
  # Diseño
  col = colores,
  border = "white",
  
  # Texto
  las = 2,
  cex.names = 0.9,
  cex.main = 1,
  cex.lab = 1,
  
  # Tamaño barras
  width = 0.7,
  
  # Espaciado
  space = 0.3
)
title(xlab = "Zona", line = 4)
mtext(
  "Cantidad",
  side = 2,
  line = 4
)

# Líneas de fondo
grid(
  nx = NA,
  ny = NULL,
  col = "gray80",
  lty = 1
  
)

# Diagrama de barras con relación a la totalidad de los datos


library(RColorBrewer)
# Colores suaves
n <- length(TDF_Zona$Zona)
colores <- brewer.pal(min(max(n,3), 8), "Set2")

# Valor máximo
max_y_global <- max(TDF_Zona$ni) + 500
 
par(mar = c(5,5, 5, 2))
# Crear gráfico
barplot(
  height = TDF_Zona$ni,
  
  # Etiquetas
  names.arg = TDF_Zona$Zona,
  
  # Títulos
  main = "Gráfica Nro. 2\nDistribución de la variable Zona\npara el análisis estadístico de la calidad del aire en la India (2015-2020)",
  
  # Diseño
  col = colores,
  border = "white",
  
  # Escala
  ylim = c(0,30000),
  
  # Texto
  las = 2,
  cex.names = 0.9,
  cex.main = 1,
  cex.lab = 1,
  
  # Barras
  width = 0.7,
  space = 0.3
)


title(xlab = "Zona", line = 4)
mtext(
  "Cantidad",
  side = 2,
  line = 4
)
# Líneas de fondo
grid(
  nx = NA,
  ny = NULL,
  col = "gray80",
  lty = 1
)

Diagramas procentuales

#Grafica porcentaje que genera RStudio

library(RColorBrewer)

# Colores suaves
n <- length(TDF_Zona$Zona)
colores <- brewer.pal(min(max(n,3), 8), "Set2")
 
par(mar = c(5,5, 5, 2))
# Crear gráfico
barplot(
  TDF_Zona$hi,
  
  # Etiquetas
  names.arg = TDF_Zona$Zona,
  
  # Títulos
  main = "Gráfica Nro. 3\nDistribución de la variable Zona\npara el análisis estadístico de la calidad del aire en la India (2015-2020)",

  
  # Diseño
  col = colores,
  border = "white",
  
  # Escala
  ylim = c(0, max(TDF_Zona$hi) + 5),
  
  # Texto
  las = 2,
  cex.names = 0.9,
  cex.main = 1,
  cex.lab = 1,
  
  # Barras
  width = 0.7,
  space = 0.3
)

title(xlab = "Zona", line = 4)
mtext(
  "Porcentaje",
  side = 2,
  line = 4
)

# Líneas de fondo
grid(
  nx = NA,
  ny = NULL,
  col = "gray80",
  lty = 1
)

# Diagrama de barras con relación a la totalidad porcentualmente

library(RColorBrewer)

# Colores suaves
n <- length(TDF_Zona$Zona)
colores <- brewer.pal(min(max(n,3), 8), "Set2")

par(mar = c(5,5, 5, 2))
# Crear gráfico
barplot(
  TDF_Zona$hi,
  
  # Etiquetas
  names.arg = TDF_Zona$Zona,
  
  # Títulos
  main = "Gráfica Nro. 4\nDistribución de la variable Zona\npara el análisis estadístico de la calidad del aire en la India (2015-2020)",
  
  
  # Diseño
  col = colores,
  border = "white",
  
  # Escala
  ylim = c(0, 100),
  
  # Texto
  las = 2,
  cex.names = 0.9,
  cex.main = 1,
  cex.lab = 1,
  
  # Barras
  width = 0.7,
  space = 0.3
)

title(xlab = "Zona", line = 4)
mtext(
  "Porcentaje",
  side = 2,
  line = 4
)

Diagrama circular

library(RColorBrewer)

# Colores pastel suaves
colores <- c(
  "#FBB4AE",  # rosado pastel
  "#FFF2AE",  # amarillo pastel
  "#CDEAC0"   # verde pastel
)

color <- adjustcolor(colores, alpha.f = 0.95)

# Etiquetas: SOLO porcentajes
etiqueta <- paste0(round(TDF_Zona$hi, 2), " %")

# Más espacio a la derecha para la leyenda
par(mar = c(2,3, 5, 5))

# Crear gráfico circular
pie(
  TDF_Zona$hi,
  
  labels = etiqueta,
  
  # Distancia de las etiquetas respecto al círculo
  labeldist = 1.5,
  
  radius = 0.85,
  
  col = color,
  
  border = "black",
  lwd = 2,
  
  clockwise = TRUE,
  
  main = "Gráfica Nro. 5\nDistribución de la variable Zona\npara el análisis estadístico de la calidad del aire en la India (2015-2020)",
  
  cex.main = 1,
  cex = 0.9
)
## Warning in text.default(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, adj =
## ifelse(P$x < : "labeldist" es un parámetro gráfico inválido
## Warning in text.default(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, adj =
## ifelse(P$x < : "labeldist" es un parámetro gráfico inválido
## Warning in text.default(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, adj =
## ifelse(P$x < : "labeldist" es un parámetro gráfico inválido
## Warning in title(main = main, ...): "labeldist" es un parámetro gráfico
## inválido
# Leyenda más alejada
legend(
  x = 1.5,
  y = 1,
  
  legend = TDF_Zona$Zona,
  
  title = "Leyenda",
  
  fill = color,
  
  border = "black",
  
  box.lwd = 1,
  box.col = "black",
  
  cex = 0.8,
  
  bty = "o",
  
  xpd = TRUE
)

6.- Indicadores estadísticos

# 1. CÁLCULO DE LA MODA (Mo)
# Es el nivel con la mayor frecuencia (ni)
Moda_row <- TDF_Zona[which.max(TDF_Zona$ni), ]
Mo<- as.character(Moda_row$Zona[1])

tabla_indicadores <- data.frame(
  "Variable" = c("Zona"),
  "Rango" = "-",
  "X" = "-",
  "Me" = "-",
  "Mo" = c(Mo),
  "V" = "-",
  "Sd" = "-",
  "Cv" = "-",
  "As" = "-",
  "K" = "-",
  "Valores Atipicos" = "-")

library(knitr)
kable(tabla_indicadores, align = 'c',
caption = "Conclusiones de la variable Estado")
Conclusiones de la variable Estado
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Zona - - - Oeste - - - - - -

7.- Conclusiones

En conclusión:

El valor más frecuente de la variable Zona se encuentra en el Oeste