# 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")
