library(readr)
library(ggplot2)
library(dplyr)
library(car)
library(tidyr) 
setwd("C:/Users/PAULA/Desktop/Datos doctorado/inercia/Archivos para paper")
time_to_minutes <- function(x) {
  x <- trimws(as.character(x))
  if (is.na(x) || x == "") return(NA_real_)
  
  parts <- strsplit(x, ":")[[1]]
  if (length(parts) < 2) return(NA_real_)
  
  parts <- as.numeric(parts)
  if (length(parts) == 3) parts <- parts[1:2]  # ignorar segundos
  if (any(is.na(parts))) return(NA_real_)
  
  return(parts[1] * 60 + parts[2])
}

# === 2️⃣ Leer el CSV ===
df <- read.csv("lag.csv", sep = ",", dec = ".", stringsAsFactors = FALSE)

# Columnas a convertir
time_cols <- c("N1.N5", "M1.M5", "N5.N12", "M5.M12", "N1.N12", "M1.12")

# === 3️⃣ Convertir todas las columnas a minutos ===
df <- df %>%
  mutate(across(all_of(time_cols), ~ sapply(., time_to_minutes))) %>%
  mutate(across(all_of(time_cols), as.numeric))

# === 4️⃣ Limpiar datos ===
df_clean <- df %>%
  select(all_of(time_cols)) %>%
  na.omit()

# === 5️⃣ Definir los pares de comparación ===
comparisons <- list(
  c("N1.N5", "M1.M5"),
  c("N5.N12", "M5.M12"),
  c("N1.N12", "M1.12")
)

names(df_clean)
# === 6️⃣ Función auxiliar para pruebas ===
compare_pair <- function(col1, col2, data) {
  cat("\n--------------------------------------------\n")
  cat(sprintf("🔹 Comparison: %s vs %s\n", col1, col2))
  
  # Normalidad
  p1 <- shapiro.test(data[[col1]])$p.value
  p2 <- shapiro.test(data[[col2]])$p.value
  
  # Homocedasticidad (Levene)
  lev_p <- leveneTest(
    y = c(data[[col1]], data[[col2]]),
    group = rep(c(col1, col2), each = nrow(data))
  )$`Pr(>F)`[1]
  
  # Decidir test según normalidad y varianzas
  if (p1 > 0.05 && p2 > 0.05 && lev_p > 0.05) {
    test <- t.test(data[[col1]], data[[col2]], var.equal = TRUE)
    cat("✅ t-test aplicado (normalidad + varianzas iguales)\n")
    test_type <- "t-test"
  } else {
    test <- wilcox.test(data[[col1]], data[[col2]])
    cat("⚠️ Mann–Whitney aplicado (no normalidad o varianzas desiguales)\n")
    test_type <- "Mann–Whitney"
  }
  
  # Resultados
  cat(sprintf(
    "p (Shapiro %s)=%.3e | p (Shapiro %s)=%.3e | p (Levene)=%.3e\n",
    col1, p1, col2, p2, lev_p
  ))
  cat(sprintf("→ p (%s)=%.3e\n", test_type, test$p.value))
  
  if (test$p.value < 0.05) {
    cat("🔸 Diferencia significativa (p < 0.05)\n")
  } else {
    cat("🔹 No hay diferencia significativa\n")
  }
  
  # Devuelve los resultados en una fila (para guardarlos)
  return(data.frame(
    Columna_1 = col1,
    Columna_2 = col2,
    Shapiro_1 = p1,
    Shapiro_2 = p2,
    Levene_p = lev_p,
    Test = test_type,
    p_value = test$p.value,
    Significativo = ifelse(test$p.value < 0.05, "Sí", "No")
  ))
}

# === 7️⃣ Definir los pares a comparar ===
comparisons <- list(
  c("N1.N5", "M1.M5"),
  c("N5.N12", "M5.M12"),
  c("N1.N12", "M1.12")
)

# === 8️⃣ Ejecutar todas las comparaciones y guardar resultados ===
results <- do.call(rbind, lapply(comparisons, function(pair) {
  compare_pair(pair[1], pair[2], df_clean)
}))

# === 9️⃣ Mostrar tabla resumen ===
print(results)

# === 🔟 (Opcional) Guardar tabla en CSV ===
write.csv(results, "resultados_tests.csv", row.names = FALSE)
