R Markdown

# CÓDIGO R PARA REPLICAR ANÁLISIS DEL INFORME
# Análisis fluctuación temperatura Riobamba 2022-2024 (datos INAMHI)
# Autores: Diana Ante et al. (replicado)

# 1. CARGAR LIBRERÍAS
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(ggplot2)

# 2. DATOS DE TABLA 1 (Temperaturas mensuales °C)
datos <- data.frame(
  Mes = rep(month.name[1:12], 3),
  Anio = rep(c(2022, 2023, 2024), each=12),
  T = c(20,12,13.6,16,18,15,17,14,18,19,19,19,  # 2022
        20,16,16,18,16,16,19,19,22,19,18,15,  # 2023
        16,19,21,19,20,17,17,18,18,21,19,13)  # 2024
)

print("Tabla 1: Datos crudos")
## [1] "Tabla 1: Datos crudos"
print(datos)
##          Mes Anio    T
## 1    January 2022 20.0
## 2   February 2022 12.0
## 3      March 2022 13.6
## 4      April 2022 16.0
## 5        May 2022 18.0
## 6       June 2022 15.0
## 7       July 2022 17.0
## 8     August 2022 14.0
## 9  September 2022 18.0
## 10   October 2022 19.0
## 11  November 2022 19.0
## 12  December 2022 19.0
## 13   January 2023 20.0
## 14  February 2023 16.0
## 15     March 2023 16.0
## 16     April 2023 18.0
## 17       May 2023 16.0
## 18      June 2023 16.0
## 19      July 2023 19.0
## 20    August 2023 19.0
## 21 September 2023 22.0
## 22   October 2023 19.0
## 23  November 2023 18.0
## 24  December 2023 15.0
## 25   January 2024 16.0
## 26  February 2024 19.0
## 27     March 2024 21.0
## 28     April 2024 19.0
## 29       May 2024 20.0
## 30      June 2024 17.0
## 31      July 2024 17.0
## 32    August 2024 18.0
## 33 September 2024 18.0
## 34   October 2024 21.0
## 35  November 2024 19.0
## 36  December 2024 13.0
# 3. ESTADÍSTICOS DESCRIPTIVOS POR AÑO (Tabla 2)
estadisticos <- datos %>%
  group_by(Anio) %>%
  summarise(
    Media = round(mean(T), 2),
    Mediana = round(median(T), 2),
    Moda = names(sort(table(T), decreasing=TRUE))[1],  # Moda simple
    .groups = 'drop'
  )
print("Tabla 2: Media, Mediana, Moda por Año")
## [1] "Tabla 2: Media, Mediana, Moda por Año"
print(estadisticos)
## # A tibble: 3 × 4
##    Anio Media Mediana Moda 
##   <dbl> <dbl>   <dbl> <chr>
## 1  2022  16.7    17.5 19   
## 2  2023  17.8    18   16   
## 3  2024  18.2    18.5 19
# 4. TABLA DE FRECUENCIAS (Tabla 3, datos totales)
freq_tabla <- datos %>%
  count(T, name="Frec_abs") %>%
  mutate(
    Frec_abs_acum = cumsum(Frec_abs),
    Frec_rel = round(Frec_abs / nrow(datos), 2),
    Frec_rel_acum = round(Frec_abs_acum / nrow(datos), 2)
  ) %>%
  arrange(T)
print("Tabla 3: Frecuencias")
## [1] "Tabla 3: Frecuencias"
print(freq_tabla)
##       T Frec_abs Frec_abs_acum Frec_rel Frec_rel_acum
## 1  12.0        1             1     0.03          0.03
## 2  13.0        1             2     0.03          0.06
## 3  13.6        1             3     0.03          0.08
## 4  14.0        1             4     0.03          0.11
## 5  15.0        2             6     0.06          0.17
## 6  16.0        6            12     0.17          0.33
## 7  17.0        3            15     0.08          0.42
## 8  18.0        6            21     0.17          0.58
## 9  19.0        9            30     0.25          0.83
## 10 20.0        3            33     0.08          0.92
## 11 21.0        2            35     0.06          0.97
## 12 22.0        1            36     0.03          1.00
# 5. GRÁFICO 2: Temperatura promedio por mes/año
ggplot(datos, aes(x=Mes, y=T, color=factor(Anio))) +
  geom_point(size=3) + geom_line(aes(group=Anio)) +
  labs(title="Gráfico 2: Temperatura por Mes y Año",
       x="Mes", y="Temperatura (°C)", color="Año") +
  theme_minimal()

ggsave("grafico2_temp_promedio.png")
## Saving 7 x 5 in image
# 6. FIGURA 3: Diagrama de Cajas por Año
ggplot(datos, aes(x=factor(Anio), y=T)) +
  geom_boxplot(fill="lightblue") +
  labs(title="Figura 3: Diagrama de Cajas Temperatura por Año",
       x="Año", y="Temperatura (°C)") +
  theme_minimal()

ggsave("figura3_boxplot.png")
## Saving 7 x 5 in image
# 7. TEST MANN-KENDALL (Tendencia, metodología)
library(trend)  # Instalar si necesario: install.packages("trend")
datos_ts <- ts(datos$T, frequency=12)  # Serie temporal mensual
mk_test <- mk.test(datos_ts)
print("Test Mann-Kendall:")
## [1] "Test Mann-Kendall:"
print(mk_test)  # p-value >0.05: tendencia no significativa
## 
##  Mann-Kendall trend test
## 
## data:  datos_ts
## z = 1.6728, n = 36, p-value = 0.09436
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##  122.0000000 5232.0000000    0.2061352
# 8. TEMPORADA MENSUAL PROMEDIO (mencionado en texto)
prom_mes <- datos %>%
  mutate(Mes_num = match(Mes, month.name)) %>%
  group_by(Mes_num, Mes) %>%
  summarise(Media_mes = round(mean(T), 2), .groups='drop') %>%
  arrange(Mes_num)
print("Promedios mensuales (2022-2024):")
## [1] "Promedios mensuales (2022-2024):"
print(prom_mes)
## # A tibble: 12 × 3
##    Mes_num Mes       Media_mes
##      <int> <chr>         <dbl>
##  1       1 January        18.7
##  2       2 February       15.7
##  3       3 March          16.9
##  4       4 April          17.7
##  5       5 May            18  
##  6       6 June           16  
##  7       7 July           17.7
##  8       8 August         17  
##  9       9 September      19.3
## 10      10 October        19.7
## 11      11 November       18.7
## 12      12 December       15.7
# RESULTADOS COINCIDEN CON INFORME:
# - 2024: Media 18.17, Mediana 18.5, Moda 19
# - Mayor variabilidad 2022 (boxplot rango amplio)
# - Moda global: 19°C (9 veces)