# Pruebas Estadísticas de Homogeneidad y Estacionariedad sobre las 
# series de precipitación total mensual

#---- 1. LIBRERÍAS ----

library(readr)
library(lubridate)
library(fpp2)
library(ggplot2)
library(forecast)
library(GGally)
library(xts)
library(zoo)
library(tidyverse)
library(dplyr)
library(glmnet)
library(parsnip)
library(workflows)
library(modeltime)
library(timetk)
library(recipes)
library(rsample)
library(knitr)
library(readxl)
library(urca)
library(tseries)
library(trend)
library(writexl)

#---- 2. CARGUE DE LAS SERIES ----

options(scipen = 999)

ruta <- "D:/guvelez/Personales/Otros/Scripts/DATOS_COMPLETOS_DIARIOS"
ruta <- "D:/guvelez/Personales/Otros/Scripts/DATOS_COMPLETOS_MENSUALES"
all_files <- list.files(path = ruta, pattern = "\\.xlsx$", full.names = TRUE)

resultados <- matrix(ncol = 10, nrow = 0)
colnames(resultados) <- c("Estacion","PValor_Pettit","PValor_Buishand","PValor_SNHT","PValor_Bartels",
                          "PValor_DickeyFuller","PValor_PhillipsPerron","PValor_KPSS","Stat_ZivotAndrews", "CVal_5_ZA")

i <- 1

#---- 3. PRUEBAS DE HOMOGENEIDAD Y ESTACIONARIEDAD
for(file in all_files){
  
  df <- read_xlsx(file)
  names(df)[2] <- "PRECIPITACION"
  df$FECHALECTURA <- as.Date(df$FECHALECTURA, format = "%Y-%m-%d")
  data <- df$PRECIPITACION
  
  df_xts <- xts(df$PRECIPITACION,
                df$FECHALECTURA)
  
  # PRUEBAS DE HOMOGENEIDAD
  
      # Prueba de Petitt
      p.valor.pt <- pettitt.test(data)$p.value
      
      # Prueba de Buishand
      p.valor.br <- br.test(data)$p.value
      
      # Prueba SNHT
      p.valor.snh <- snh.test(data)$p.value
      
      # Prueba de Bartels - Von Neumann
      p.valor.bvn <- bartels.test(data)$p.value
  
  # PRUEBAS DE ESTACIONARIEDAD
  
      # Prueba de raíz unitaria de Dickey-Fuller
      p.valor.adf <- adf.test(data)$p.value
      
      # Prueba de Phillips-Perron
      p.valor.pp <- pp.test(data, alternative = "stationary")$p.value
      
      # Prueba KPSS
      p.valor.kpss <- kpss.test(data)$p.value
      
      # Prueba de Zivot-Andrews
      za.stat <- summary(ur.za(data))@teststat
      cval_5 <- summary(ur.za(data))@cval[2]
  
  fila <- c(paste0("E",i), p.valor.pt, p.valor.br, p.valor.snh, p.valor.bvn,
            p.valor.pp, p.valor.adf, p.valor.kpss, za.stat, cval_5)
  
  resultados <- rbind(resultados, fila)
  
  
  i <- i + 1
}

resultados <- as.data.frame(resultados)
resultados[, -c(1)] <- lapply(resultados[, -c(1)], function(x) {
  if(is.character(x)) as.numeric(x) else x
})

nombre_archivo <- "Pruebas_Series_Diarias.xlsx"
nombre_archivo <- "Pruebas_Series_Mensuales.xlsx"

write_xlsx(resultados, nombre_archivo)
