# Establecer opciones para los chunks de código
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
# Instalar y cargar las bibliotecas necesarias
if (!require("ggplot2")) install.packages("ggplot2")
## Loading required package: ggplot2
if (!require("dplyr")) install.packages("dplyr")
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
if (!require("tidyr")) install.packages("tidyr")
## Loading required package: tidyr
library(ggplot2)
library(dplyr)
library(tidyr)
library(knitr) # Para la función kable()
# Crear un data frame con los datos de la imagen
data <- data.frame(
Modelo = c("PredicSTRNRSimpleSolarEolDemEspaOkGit",
"PredicSTGRUSolarEolDemEspaOkGit",
"PredicSTLMSTMEolEspaOkGit",
"PredicSTLMSTMSolarEspaOkGit",
"PredicSTLMSTMDemanEspaOkGit"),
R2 = c(-1.7543, 0.5497, 0.9682, 0.9321, 0.9741),
MSE = c(6628466.0602, 1083730.1660, 318625.3579, 156120.5356, 545427.1076),
RMSE = c(2574.5808, 1041.0236, 564.4691, 395.1209, 738.5304),
MAE = c(1993.7411, 634.2040, 247.9988, 234.2132, 592.9710)
)
# Mostrar la tabla para verificar que se creó
kable(data)
PredicSTRNRSimpleSolarEolDemEspaOkGit |
-1.7543 |
6628466.1 |
2574.5808 |
1993.7411 |
PredicSTGRUSolarEolDemEspaOkGit |
0.5497 |
1083730.2 |
1041.0236 |
634.2040 |
PredicSTLMSTMEolEspaOkGit |
0.9682 |
318625.4 |
564.4691 |
247.9988 |
PredicSTLMSTMSolarEspaOkGit |
0.9321 |
156120.5 |
395.1209 |
234.2132 |
PredicSTLMSTMDemanEspaOkGit |
0.9741 |
545427.1 |
738.5304 |
592.9710 |
# Convertir el data frame a formato largo para ggplot
data_long <- data %>%
pivot_longer(
cols = c(R2, MSE, RMSE, MAE),
names_to = "Metrica",
values_to = "Valor"
)
# Mostrar las primeras filas de la tabla larga
kable(head(data_long))
PredicSTRNRSimpleSolarEolDemEspaOkGit |
R2 |
-1.7543 |
PredicSTRNRSimpleSolarEolDemEspaOkGit |
MSE |
6628466.0602 |
PredicSTRNRSimpleSolarEolDemEspaOkGit |
RMSE |
2574.5808 |
PredicSTRNRSimpleSolarEolDemEspaOkGit |
MAE |
1993.7411 |
PredicSTGRUSolarEolDemEspaOkGit |
R2 |
0.5497 |
PredicSTGRUSolarEolDemEspaOkGit |
MSE |
1083730.1660 |
# Gráfico para R2 y MAE (sin escala logarÃtmica)
ggplot(data_long %>% filter(Metrica %in% c("R2", "MAE")), aes(x = Modelo, y = Valor, fill = Modelo)) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Metrica, scales = "free_y") +
geom_text(aes(label = round(Valor, 2)), vjust = -0.5, size = 3) +
theme_minimal() +
labs(
title = "Comparación de R2 y MAE por Modelo",
subtitle = "Valores más altos de R2 y más bajos de MAE son mejores",
x = "Modelo",
y = "Valor de la Métrica"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Filtrar y escalar los datos para el segundo gráfico
data_long_scaled <- data_long %>%
filter(Modelo != "PredicSTRNRSimpleSolarEolDemEspaOkGit") %>%
mutate(
Valor_Escalado = case_when(
Metrica %in% c("MSE", "RMSE") ~ log(Valor + 1), # Usar log para escalar
TRUE ~ Valor
)
)
ggplot(data_long_scaled %>% filter(Metrica %in% c("MSE", "RMSE")), aes(x = Modelo, y = Valor, fill = Modelo)) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Metrica, scales = "free_y") +
theme_minimal() +
labs(
title = "Comparación de MSE y RMSE (escala logarÃtmica)",
subtitle = "Valores más bajos de MSE y RMSE son mejores. El modelo PredicSTRNR ha sido excluido.",
x = "Modelo",
y = "Valor de la Métrica (LogarÃtmica)"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
