# Cargar las librerías necesarias
#install.packages("ggcorrplot")
#install.packages("factoextra")
library(tidyverse)
library(ggplot2)
library(corrplot)
library(ggcorrplot)
library(cluster)
library(factoextra)

# Cargar los datos desde el archivo CSV
data <- read.csv("Salarios_Ingenieria_Centroamerica_Limpio.csv")

# Visualizar las primeras filas del dataset
head(data)
##          Pais Ingenieria.Industrial Ingenieria.Electrica Ingenieria.Mecanica
## 1 El Salvador               1300.00              1695.00             1296.00
## 2   Honduras                1098.42              1088.35             1193.13
## 3   Guatemala               1089.15              1857.04             1676.13
## 4  Costa Rica               2853.79              1281.96             2574.93
## 5      Panama               1323.00              2800.00             2600.00
## 6   Nicaragua                475.61               838.11              915.62
##   Ingenieria.Civil Ingenieria.en.Sistemas Ingenieria.Agronoma Arquitectura
## 1          1927.00                1767.00             1338.00      1568.00
## 2          1218.34                1029.52             1122.90       894.73
## 3          2680.45                1287.77             1728.59      1430.43
## 4          2780.69                2565.14             1104.02      3953.75
## 5          2500.00                1975.00             1150.00      2800.00
## 6           586.71                 691.78              549.37       915.62
# Convertir los datos a formato largo para facilitar el análisis
data_long <- data %>%
  pivot_longer(cols = -Pais, names_to = "Carrera", values_to = "Salario")

# Análisis descriptivo básico
summary(data_long)
##      Pais             Carrera             Salario      
##  Length:42          Length:42          Min.   : 475.6  
##  Class :character   Class :character   1st Qu.:1091.5  
##  Mode  :character   Mode  :character   Median :1311.5  
##                                        Mean   :1607.6  
##                                        3rd Qu.:1963.0  
##                                        Max.   :3953.8
# Comparar los salarios medios por país y carrera
mean_salaries <- data_long %>%
  group_by(Pais, Carrera) %>%
  summarise(Salario_Medio = mean(Salario, na.rm = TRUE))
# Visualizar los salarios medios por país y carrera
ggplot(mean_salaries, aes(x = reorder(Carrera, -Salario_Medio), y = Salario_Medio, fill = Pais)) +
  geom_bar(stat = "identity", position = position_dodge()) +
  labs(title = "Salarios Medios por Carrera y País",
       x = "Carrera",
       y = "Salario Medio") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Análisis de disparidades regionales
disparities <- data_long %>%
  group_by(Carrera) %>%
  summarise(Max_Salario = max(Salario, na.rm = TRUE),
            Min_Salario = min(Salario, na.rm = TRUE),
            Diferencia = Max_Salario - Min_Salario)

# Visualizar disparidades regionales con etiquetas de valor en las barras
ggplot(disparities, aes(x = reorder(Carrera, -Diferencia), y = Diferencia)) +
  geom_bar(stat = "identity", fill = "blue") +
  geom_text(aes(label = round(Diferencia, 2)), vjust = -0.5, color = "black") +
  labs(title = "Disparidades Regionales en los Salarios por Carrera",
       x = "Carrera",
       y = "Diferencia en Salarios") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Convertir los datos a formato largo para facilitar el análisis
data_long <- data %>%
  pivot_longer(cols = -Pais, names_to = "Carrera", values_to = "Salario")

# Crear gráficos de cajas por cada país (sin distinguir entre carreras)
ggplot(data_long, aes(x = Pais, y = Salario, fill = Pais)) +
  geom_boxplot(outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
  stat_summary(fun = mean, geom = "point", shape = 20, size = 3, color = "blue", fill = "blue") +
  labs(title = "Distribución de Salarios por País",
       x = "País",
       y = "Salario") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  theme(legend.position = "none")  # Opcional: para eliminar la leyenda redundante

# Transformar el dataframe para la correlación (convertir de formato largo a formato ancho)
data_wide <- data_long %>%
  pivot_wider(names_from = Carrera, values_from = Salario)

# Eliminar la columna 'Pais' para el análisis de correlación
data_corr <- data_wide %>% select(-Pais)

# Calcular la matriz de correlación
correlation_matrix <- cor(data_corr, use = "complete.obs")

# Visualizar la matriz de correlación con etiquetas numéricas
ggcorrplot(correlation_matrix, method = "square", type = "lower", lab = TRUE, lab_size = 3)

# Crear gráficos de dispersión
ggplot(data_long, aes(x = Carrera, y = Salario, color = Pais)) +
  geom_point(position = position_jitter(width = 0.2, height = 0)) +
  labs(title = "Dispersión de Salarios por Carrera y País",
       x = "Carrera",
       y = "Salario") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Seleccionar solo las columnas numéricas (salarios)
data_numeric <- data %>% select(-Pais)

# Estandarizar los datos
data_scaled <- scale(data_numeric)

# Realizar análisis de clusters
set.seed(123)
clusters <- kmeans(data_scaled, centers = 3, nstart = 25)

# Añadir los clusters a los datos originales
data$Cluster <- as.factor(clusters$cluster)

# Visualizar los clusters utilizando las dos primeras columnas numéricas como ejemplo
fviz_cluster(clusters, data = data_scaled,
             geom = "point",
             ellipse.type = "convex",
             ggtheme = theme_minimal()) +
  labs(title = "Clusters de Países Basados en Salarios de Ingeniería",
       x = "PC1",
       y = "PC2")