0. Librerías

library(readr)
library(knitr)
library(kableExtra)
library(dplyr)
library(ggplot2)

1. Leer Datos

variables <- read.csv("C:/Users/dellh/Downloads/GlobalWeatherRepository.csv")

2. Depuración y Selección de Variables

variables <- na.omit(variables)
Fase_Lunar <-variables$moon_phase

3-Frecuencias

Tabla N°1

Tabla_Fase_Lunar <- table(Fase_Lunar)
ni_Fase_Lunar <- as.vector(Tabla_Fase_Lunar) 
hi_Fase_Lunar <- round((ni_Fase_Lunar / sum(ni_Fase_Lunar)) * 100, 2)

Tabla Ordenada

orden_lunar <- c(
  "New Moon",         
  "Waxing Crescent",   
  "First Quarter",    
  "Waxing Gibbous",    
  "Full Moon",        
  "Waning Gibbous",    
  "Last Quarter",     
  "Waning Crescent"    
)

4.- Tabla de frecuencias

Tabla_Fase_Lunar <- table(Fase_Lunar)
ni_Fase_Lunar <- as.vector(Tabla_Fase_Lunar) 
hi_Fase_Lunar <- round((ni_Fase_Lunar / sum(ni_Fase_Lunar)) * 100, 2)
TDF_Fase_Lunar_Base <- data.frame(
  Fase_Lunar = names(Tabla_Fase_Lunar),
  ni = ni_Fase_Lunar,
  hi = hi_Fase_Lunar
)
sumatoria_Fase_Lunar <- data.frame(
  Fase_Lunar = "TOTAL", 
  ni = sum(ni_Fase_Lunar), 
  hi = 100
)
TDF_Fase_Lunar_Suma <- rbind(TDF_Fase_Lunar_Base, sumatoria_Fase_Lunar)

colnames(TDF_Fase_Lunar_Suma) <- c(" Fase_Lunar", "Frecuencia Absoluta (ni)", "Frecuencia Relativa (hi %)")

kable(TDF_Fase_Lunar_Suma, 
      align = "c",
      caption =  "Tabla N°1: Distribución de frecuencia del índice de Fase Lunar según escala del año 2024 hasta 2026 ") |> 
  kable_styling(full_width = TRUE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed", "responsive")) |> 
  row_spec(0, bold = TRUE, color = "white", background = "#2C5") |> 
  row_spec(nrow(TDF_Fase_Lunar_Suma), bold = TRUE, background = "#488888") |> 
  footnote(general =     "Fuente: Global Weather Repository,(https://www.kaggle.com/datasets/nelgiriyewithana/global-weather-repository)",
           general_title = "Nota: Grupo N°2",
           footnote_as_chunk = TRUE,
           title_format = c("italic", "bold"))
Tabla N°1: Distribución de frecuencia del índice de Fase Lunar según escala del año 2024 hasta 2026
Fase_Lunar Frecuencia Absoluta (ni) Frecuencia Relativa (hi %)
First Quarter 4874 3.44
Full Moon 5144 3.63
Last Quarter 5159 3.64
New Moon 5019 3.54
Waning Crescent 31022 21.89
Waning Gibbous 29832 21.05
Waxing Crescent 30030 21.19
Waxing Gibbous 30623 21.61
TOTAL 141703 100.00
Nota: Grupo N°2 Fuente: Global Weather Repository,(https://www.kaggle.com/datasets/nelgiriyewithana/global-weather-repository)

Tabla N°2 : Ordenada por ciclo meteorológico

orden_lunar <- c(
  "New Moon",         
  "Waxing Crescent",   
  "First Quarter",    
  "Waxing Gibbous",    
  "Full Moon",        
  "Waning Gibbous",    
  "Last Quarter",     
  "Waning Crescent"    
)

# 2. Definir los nombres en español

lunas_espanol <- c(
  "Luna Nueva",
  "Creciente Cóncava",
  "Cuarto Creciente",
  "Gibosa Creciente",
  "Luna Llena",
  "Gibosa Menguante",
  "Cuarto Menguante",
  "Menguante Cóncava"
)

Fase_Lunar_Ordenada <- factor(variables$moon_phase, levels = orden_lunar, labels = lunas_espanol)

Tabla_Fase_Lunar_O <- table(Fase_Lunar_Ordenada)
ni_Fase_Lunar_O <- as.vector(Tabla_Fase_Lunar_O) 
hi_Fase_Lunar_O <- round((ni_Fase_Lunar_O / sum(ni_Fase_Lunar_O)) * 100, 2)

TDF_Fase_Lunar_Base_O <- data.frame(
  Fase_Lunar = names(Tabla_Fase_Lunar_O),
  ni = ni_Fase_Lunar_O,
  hi = hi_Fase_Lunar_O
)

sumatoria_Fase_Lunar_O <- data.frame(
  Fase_Lunar = "TOTAL", 
  ni = sum(ni_Fase_Lunar_O), 
  hi = 100
)

TDF_Fase_Lunar_Suma_O <- rbind(TDF_Fase_Lunar_Base_O, sumatoria_Fase_Lunar_O)

colnames(TDF_Fase_Lunar_Suma_O) <- c("Fase Lunar", "Frecuencia Absoluta (ni)", "Frecuencia Relativa (hi %)")

kable(TDF_Fase_Lunar_Suma_O, 
      align = "c",
      caption = "Tabla N°2: Distribución de frecuencia del índice de Fase Lunar ordenada según el ciclo meteorológico natural (2024 - 2026)") |> 
  kable_styling(full_width = TRUE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed", "responsive")) |> 
  row_spec(0, bold = TRUE, color = "white", background = "#1A5276") |> 
  row_spec(nrow(TDF_Fase_Lunar_Suma_O), bold = TRUE, background = "#488888") |> 
  footnote(general = "Fuente: Global Weather Repository",
           general_title = "Nota: Grupo N°2",
           footnote_as_chunk = TRUE,
           title_format = c("italic", "bold"))
Tabla N°2: Distribución de frecuencia del índice de Fase Lunar ordenada según el ciclo meteorológico natural (2024 - 2026)
Fase Lunar Frecuencia Absoluta (ni) Frecuencia Relativa (hi %)
Luna Nueva 5019 3.54
Creciente Cóncava 30030 21.19
Cuarto Creciente 4874 3.44
Gibosa Creciente 30623 21.61
Luna Llena 5144 3.63
Gibosa Menguante 29832 21.05
Cuarto Menguante 5159 3.64
Menguante Cóncava 31022 21.89
TOTAL 141703 100.00
Nota: Grupo N°2 Fuente: Global Weather Repository

5.- Gráficas

5.1. Diagrama de barra (ni) Fase Lunar

datos_grafica <- data.frame(
  Categoria = names(Tabla_Fase_Lunar_O),
  Frecuencia = as.vector(Tabla_Fase_Lunar_O)
)

# Orden correcto de las categorías
datos_grafica$Categoria <- factor(
  datos_grafica$Categoria,
  levels = c("Luna Nueva", "Creciente Cóncava", "Cuarto Creciente", "Gibosa Creciente", 
             "Luna Llena", "Gibosa Menguante", "Cuarto Menguante", "Menguante Cóncava")
)
ggplot(datos_grafica,
       aes(x = Categoria,
           y = Frecuencia,
           fill = Categoria)) +
  
  geom_col(width = 0.6, color = "black") +
  
  geom_text(
    aes(label = Frecuencia),
    vjust = -0.5,
    fontface = "bold",
    size = 4
  ) +
  
  scale_fill_manual(
    values = c(
      "Luna Nueva" = "lightgray", 
      "Creciente Cóncava" = "lightpink", 
      "Cuarto Creciente" = "deepskyblue3", 
      "Gibosa Creciente" = "palegreen",
      "Luna Llena" = "gold", 
      "Gibosa Menguante" = "thistle1", 
      "Cuarto Menguante" = "moccasin", 
      "Menguante Cóncava" = "lightblue1"
    )
  ) +
  
  labs(
    title = "Clasificación del Índice según la Fase Lunar",
    x = "Categorías de Fase Lunar",
    y = "Frecuencia Absoluta (ni)"
  ) +
  
  theme_minimal() +
  
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    axis.title = element_text(face = "bold"),
    axis.text.x = element_text(angle = 35, hjust = 1), 
    legend.position = "none"
  )

5.2. Diagrama de barras hi

# Frecuencia absoluta
ni_Fase_Lunar_O <- as.vector(Tabla_Fase_Lunar_O)
N <- sum(ni_Fase_Lunar_O)
hi_Fase_Lunar_O <- round((ni_Fase_Lunar_O / N) * 100, 2)

# Datos para la gráfica
datos_hi <- data.frame(
  Categoria = names(Tabla_Fase_Lunar_O),
  hi = hi_Fase_Lunar_O
)

# Orden correcto de categorías

datos_hi$Categoria <- factor(
  datos_hi$Categoria,
  levels = c("Luna Nueva", "Creciente Cóncava", "Cuarto Creciente", "Gibosa Creciente", 
             "Luna Llena", "Gibosa Menguante", "Cuarto Menguante", "Menguante Cóncava")
)

ggplot(datos_hi,
       aes(x = Categoria,
           y = hi,
           fill = Categoria)) +
  
  geom_col(width = 0.6, color = "black") +
  
  geom_text(
    aes(label = paste0(hi, "%")),
    vjust = -0.5,
    fontface = "bold",
    size = 4
  ) +
  
  scale_fill_manual(
    values = c(
      "Luna Nueva" = "lightgray", "Creciente Cóncava" = "lightpink", "Cuarto Creciente" = "deepskyblue3", "Gibosa Creciente" = "palegreen",
      "Luna Llena" = "gold", "Gibosa Menguante" = "thistle1", "Cuarto Menguante" = "moccasin", "Menguante Cóncava" = "lightblue1"
    )
  ) +
  
  labs(
    title = "Distribución de Frecuencia Relativa de la Fase Lunar",
    x = "Categorías de Fase Lunar",
    y = "Frecuencia Relativa (%)"
  ) +
  
  ylim(0, max(datos_hi$hi) + 5) +
  
  theme_minimal() +
  
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    axis.title = element_text(face = "bold"),
    axis.text.x = element_text(angle = 35, hjust = 1),
    legend.position = "none"
  )

5.3. Diagrama de barras ni con respecto al tamaño muestral

options(scipen = 999)

ni_Fase_Lunar_O <- as.vector(Tabla_Fase_Lunar_O)
N <- sum(ni_Fase_Lunar_O)

# Frecuencia relativa porcentual
datos_grafica_muestral <- data.frame(
  Categoria = names(Tabla_Fase_Lunar_O),
  ni = ni_Fase_Lunar_O
)

# Orden correcto

datos_grafica_muestral$Categoria <- factor(
  datos_grafica_muestral$Categoria,
  levels = c("Luna Nueva", "Creciente Cóncava", "Cuarto Creciente", "Gibosa Creciente", 
             "Luna Llena", "Gibosa Menguante", "Cuarto Menguante", "Menguante Cóncava")
)

ggplot(datos_grafica_muestral,
       aes(x = Categoria,
           y = ni,
           fill = Categoria)) +
  
  geom_col(width = 0.6, color = "black") +
  
  geom_text(
    aes(label = ni),
    vjust = -0.5,
    fontface = "bold",
    size = 4
  ) +
  
  scale_fill_manual(
    values = c(
      "Luna Nueva" = "lightgray", "Creciente Cóncava" = "lightpink", "Cuarto Creciente" = "deepskyblue3", "Gibosa Creciente" = "palegreen",
      "Luna Llena" = "gold", "Gibosa Menguante" = "thistle1", "Cuarto Menguante" = "moccasin", "Menguante Cóncava" = "lightblue1"
    )
  ) +
  
  # Forzamos que el límite superior del eje Y llegue hasta el total de la muestra N
  scale_y_continuous(
    limits = c(0, N),
    labels = scales::comma
  ) +
  
  labs(
    title = "Distribución de Frecuencia Absoluta respecto al Tamaño Muestral",
    subtitle = paste("Tamaño muestral N =", N),
    x = "Categorías de Fase Lunar",
    y = "Frecuencia Absoluta (ni)"
  ) +
  
  theme_minimal() +
  
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    plot.subtitle = element_text(face = "bold", hjust = 0.5),
    axis.title = element_text(face = "bold"),
    axis.text.x = element_text(angle = 35, hjust = 1),
    legend.position = "none"
  )

5.4 Diagrama de barras con respecto al 100%

ni_Fase_Lunar_O <- as.vector(Tabla_Fase_Lunar_O)
N <- sum(ni_Fase_Lunar_O)

# Frecuencia relativa porcentual en español
hi_Fase_Lunar_O <- round((ni_Fase_Lunar_O / N) * 100, 2)

datos_hi <- data.frame(
  Categoria = names(Tabla_Fase_Lunar_O),
  hi = hi_Fase_Lunar_O
)

datos_hi$Categoria <- factor(
  datos_hi$Categoria,
  levels = c("Luna Nueva", "Creciente Cóncava", "Cuarto Creciente", "Gibosa Creciente", 
             "Luna Llena", "Gibosa Menguante", "Cuarto Menguante", "Menguante Cóncava")
)

ggplot(datos_hi,
       aes(x = Categoria,
           y = hi,
           fill = Categoria)) +
  
  geom_col(width = 0.6, color = "black") +
  
  geom_text(
    aes(label = paste0(hi, "%")),
    vjust = -0.5,
    fontface = "bold",
    size = 4
  ) +
  
  scale_fill_manual(
    values = c(
      "Luna Nueva" = "lightgray", 
      "Creciente Cóncava" = "lightpink", 
      "Cuarto Creciente" = "deepskyblue3", 
      "Gibosa Creciente" = "palegreen",
      "Luna Llena" = "gold", 
      "Gibosa Menguante" = "thistle1", 
      "Cuarto Menguante" = "moccasin", 
      "Menguante Cóncava" = "lightblue1"
    )
  ) +
  
  # Escala del eje Y fija al 100% de 10 en 10
  scale_y_continuous(
    limits = c(0, 100),
    breaks = seq(0, 100, by = 10)
  ) +
  
  labs(
    title = "Distribución Global de la Fase Lunar",
    subtitle = paste("Tamaño muestral N =", N),
    x = "Categorías de Fase Lunar (Ciclo Meteorológico)",
    y = "Frecuencia Relativa (%)"
  ) +
  
  theme_minimal() +
  
  theme(
    plot.title = element_text(face = "bold", hjust = 0.6),
    plot.subtitle = element_text(face = "bold", hjust = 0.6),
    axis.title = element_text(face = "bold"),
    axis.text.x = element_text(angle = 35, hjust = 1),
    legend.position = "none"
  )

5.5. Diagrama Circular

par(mar = c(4, 4, 4, 12))

Tabla_Fase_Lunar_O <- table(Fase_Lunar_Ordenada)

porcentaje <- round(prop.table(Tabla_Fase_Lunar_O) * 100, 2)
colores_luna <- c(
  "lightgray", 
  "lightpink", 
  "deepskyblue3", 
  "palegreen", 
  "gold", 
  "thistle1", 
  "moccasin", 
  "lightblue1"
)

# Crea el gráfico circular nativo
pie(
  Tabla_Fase_Lunar_O,
  labels = paste0(porcentaje, "%"),
  col = colores_luna, 
  main = "Distribución Porcentual de la Fase Lunar\ndesde el año 2024 hasta 2026",
  border = "black",
  radius = 0.9
)

legend(
  "topright",
  inset = c(-0.60,0), 
  legend = c("Luna Nueva", "Creciente Cóncava", "Cuarto Creciente", "Gibosa Creciente", 
             "Luna Llena", "Gibosa Menguante", "Cuarto Menguante", "Menguante Cóncava"),
  fill = colores_luna,
  title = "Leyenda",
  xpd = TRUE,
  bty = 
)
mtext(
  "Fuente: Global Weather Repository", 
  side = 1,          
  line = 3,          
  adj = 0.5,           
  cex = 0.9,         
  font = 3          
)

6.- Indicadores de frecuencia

datos_Fase_Lunar_Filtrado <- TDF_Fase_Lunar_Suma_O %>%
  filter(`Fase Lunar` != "TOTAL")

frecuencia_max_luna <- max(datos_Fase_Lunar_Filtrado$`Frecuencia Absoluta (ni)`)

Mo_Fase_Lunar <- datos_Fase_Lunar_Filtrado$`Fase Lunar`[datos_Fase_Lunar_Filtrado$`Frecuencia Absoluta (ni)` == frecuencia_max_luna]

tabla_Fase_Lunar_Indicadores <- data.frame(
  "Variable" = "Fase Lunar",
  "Rango" = "-",
  "X" = "-",
  "Me" = "-",
  "Mo" = Mo_Fase_Lunar,
  "V" = "-",
  "Sd" = "-",
  "Cv" = "-",
  "As" = "-",
  "K" = "-",
  "valores Atípicos" = "No presenta valores atípicos",
  stringsAsFactors = FALSE,
  check.names = FALSE
)

kable(tabla_Fase_Lunar_Indicadores, align = "c", row.names = FALSE,
      caption = "Tabla N°3: Indicadores de frecuencia para la variable Fase Lunar para el análisis meteorológico 2024 al 2026") |> 
  kable_styling(full_width = TRUE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed", "responsive")) |> 
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") |> 
  footnote(general ="Fuente: GlobalweatherRepository.",
           general_title = "Nota: ",
           footnote_as_chunk = TRUE,
           title_format = c("italic", "bold"))
Tabla N°3: Indicadores de frecuencia para la variable Fase Lunar para el análisis meteorológico 2024 al 2026
Variable Rango X Me Mo V Sd Cv As K valores Atípicos
Fase Lunar
Menguante Cóncava
No presenta valores atípicos
Nota: Fuente: GlobalweatherRepository.

7.- Conclusiones

#La fase lunar más frecuente es Menguante Cóncava, mientras que la fase central de la distribución corresponde a Gibosa Creciente, lo que indica la tendencia central de las observaciones analizadas.
#La Luna va cambiando de forma como un ciclo : a veces no se ve, luego se ve un poquito, después la mitad, luego completa y después vuelve a ir desapareciendo.