install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(ggplot2)

Data <- read.csv('Colombianos_registrados_en_el_exterior.csv')
Data$Estatura..CM.[Data$Estatura..CM.==-1]<-NA
Data$Edad..años.[Data$Edad..años.==-1]<-NA
Data$Edad..años.[Data$Edad..años.>121]<-NA
Data$Estatura..CM.[Data$Estatura..CM.>270]<-NA
Data$Estatura..CM.[Data$Estatura..CM.<35]<-NA
# Crea la tabla de frecuencias
frecuencia_pais <- table(Data$País)
pais_agg_edad <- table(Data$País, Data$Grupo.edad)
# Ordena la tabla en orden descendente y selecciona los 10 primeros
top_countries <- sort(frecuencia_pais, decreasing = TRUE)[1:10]

# Grafico de barras para los primeros 10 paises
barplot(top_countries, las=2, col="skyblue", cex.names = 0.6, main="Top 10 países con más colombianos", ylab="")

#Area de conocimiento
frec_Area <- table(Data$Área.Conocimiento)
print(frec_Area)
## 
##                                (NO REGISTRA) 
##                                          713 
##              AGRONOMÍA, VETERINARIA Y AFINES 
##                                         5047 
##           AGRONOMÍA, VETERINARIA Y ZOOTECNIA 
##                                         2725 
##                                     AVIACIÓN 
##                                         1892 
##                                 BELLAS ARTES 
##                                        28818 
##                     CIENCIAS DE LA EDUCACIÓN 
##                                        23230 
##                         CIENCIAS DE LA SALUD 
##                                        60672 
##                  CIENCIAS SOCIALES Y HUMANAS 
##                                        60682 
##                           COCINA Y CULINARIA 
##                                         3588 
## ECONOMÍA, ADMINISTRACIÓN CONTADURIA Y AFINES 
##                                        88555 
##            INGENIERÍA, ARQUITECTURA Y AFINES 
##                                        95939 
##             MATEMÁTICAS Y CIENCIAS NATURALES 
##                                        10962 
##                                      NINGUNA 
##                                       190204 
##                                    NO INDICA 
##                                       209223
print(prop.table(frec_Area)*100)
## 
##                                (NO REGISTRA) 
##                                   0.09114733 
##              AGRONOMÍA, VETERINARIA Y AFINES 
##                                   0.64519016 
##           AGRONOMÍA, VETERINARIA Y ZOOTECNIA 
##                                   0.34835411 
##                                     AVIACIÓN 
##                                   0.24186641 
##                                 BELLAS ARTES 
##                                   3.68398849 
##                     CIENCIAS DE LA EDUCACIÓN 
##                                   2.96963886 
##                         CIENCIAS DE LA SALUD 
##                                   7.75608821 
##                  CIENCIAS SOCIALES Y HUMANAS 
##                                   7.75736657 
##                           COCINA Y CULINARIA 
##                                   0.45867689 
## ECONOMÍA, ADMINISTRACIÓN CONTADURIA Y AFINES 
##                                  11.32054970 
##            INGENIERÍA, ARQUITECTURA Y AFINES 
##                                  12.26449345 
##             MATEMÁTICAS Y CIENCIAS NATURALES 
##                                   1.40134228 
##                                      NINGUNA 
##                                  24.31498881 
##                                    NO INDICA 
##                                  26.74630872
barplot(frec_Area, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de areas de concimiento",
        col = "orange",
        las = 3,
        cex.names = 0.4)

#Nivel Academico
frec_Nivel<-table(Data$Nivel.Académico)
barplot(frec_Nivel, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de nivel academico",
        col = "pink",
        las = 3,
        cex.names =  0.4)

print(frec_Nivel)
## 
##                  (NO REGISTRA)                   BACHILLERATO 
##                            713                         148056 
##                        NINGUNO                      NO INDICA 
##                          17062                         271466 
##          POSTGRADO - DOCTORADO    POSTGRADO - ESPECIALIZACIÓN 
##                           7468                          20619 
##           POSTGRADO - MAESTRIA         PREGRADO - PROFESIONAL 
##                          32865                         137517 
## PREGRADO - TÉCNICO PROFESIONAL         PREGRADO - TECNOLÓGICO 
##                          52792                          28101 
##                       PRIMARIA                  SIN PROFESIÓN 
##                          65411                            180
print(prop.table(frec_Nivel)*100)
## 
##                  (NO REGISTRA)                   BACHILLERATO 
##                     0.09114733                    18.92694151 
##                        NINGUNO                      NO INDICA 
##                     2.18114414                    34.70322787 
##          POSTGRADO - DOCTORADO    POSTGRADO - ESPECIALIZACIÓN 
##                     0.95468201                     2.63585810 
##           POSTGRADO - MAESTRIA         PREGRADO - PROFESIONAL 
##                     4.20134228                    17.57967402 
## PREGRADO - TÉCNICO PROFESIONAL         PREGRADO - TECNOLÓGICO 
##                     6.74873762                     3.59232982 
##                       PRIMARIA                  SIN PROFESIÓN 
##                     8.36190476                     0.02301055
# Crear un data frame con las frecuencias de Genero
frec_Genre <- table(Data$Género)
datos_genero <- as.data.frame(table(Data$Género))
names(datos_genero) <- c("Genero", "Frecuencia")

# Crear el gráfico circular Genero
ggplot(datos_genero, aes(x = "", y = Frecuencia, fill = Genero)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar(theta = "y") +
  labs(title = "Distribución por Género") +
  theme_void()

barplot(frec_Genre, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de Genero",
        col = "yellow",
        las = 2,
        cex.name = 0.6)

print(frec_Genre)
## 
## DESCONOCIDO    FEMENINO   MASCULINO  NO_BINARIO 
##        1613      430898      349732           7
print(prop.table(frec_Genre)*100)
## 
##  DESCONOCIDO     FEMENINO    MASCULINO   NO_BINARIO 
## 2.062001e-01 5.508444e+01 4.470847e+01 8.948546e-04
summary(Data$Edad..años.)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   34.00   44.00   45.85   57.00  119.00    1043
media_edad <- mean(Data$Edad..años., na.rm = TRUE)
mediana_edad <- median(Data$Edad..años., na.rm = TRUE)
desviacion_estandar_edad <- sd(Data$Edad..años., na.rm = TRUE)
varianza_edad <- var(Data$Edad..años., na.rm = TRUE)
quantiles_edad <- quantile(Data$Edad..años., na.rm = TRUE)

print(paste("Media:", media_edad))
## [1] "Media: 45.8484985413597"
print(paste("Mediana:", mediana_edad))
## [1] "Mediana: 44"
print(paste("Desviación Estándar:", desviacion_estandar_edad))
## [1] "Desviación Estándar: 16.0816567688772"
print(paste("Varianza:", varianza_edad))
## [1] "Varianza: 258.619684431974"
print("Cuantiles:")
## [1] "Cuantiles:"
print(quantiles_edad)
##   0%  25%  50%  75% 100% 
##    0   34   44   57  119
# Crear el gráfico de cajas y bigote EDAD
boxplot(Data$Edad..años., 
        main = "BOXPLOT EDAD",  # Título del gráfico
        ylab = "EDAD",                   # Etiqueta del eje y
        col = "pink",                   # Color de las cajas
        border = "red",                      # Color del borde de las cajas
        horizontal = TRUE)                   # Graficar horizontalmente

#print(paste(mean(Data$Edad..años., na.rm = FALSE)))

#Grupos de edad
frec_agg_Edad<-table(Data$Grupo.edad)
barplot(frec_agg_Edad, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de Grupos de Edad",
        col = "lightgreen",
        las = 2,
        cex.name = 0.6)

print(frec_agg_Edad)
## 
##      ADOLESCENTE           ADULTO     ADULTO JOVEN     ADULTO MAYOR 
##             9780           533179            68714           159445 
##      DESCONOCIDO          INFANTE PRIMERA INFANCIA 
##             1018             7238             2876
print(prop.table(frec_agg_Edad)*100)
## 
##      ADOLESCENTE           ADULTO     ADULTO JOVEN     ADULTO MAYOR 
##        1.2502397       68.1596676        8.7841483       20.3828699 
##      DESCONOCIDO          INFANTE PRIMERA INFANCIA 
##        0.1301374        0.9252796        0.3676574
#Estado Civil
frec_Civil<-table(Data$Estado.civil)
barplot(frec_Civil, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de Estado Civil",
        col = "green",
        las = 2,
        cex.name = 0.4)

print(frec_Civil)
## 
##               CASADO          DESCONOCIDO           DIVORCIADO 
##               265168                56712                48731 
##  SEPARADO_MATRIMONIO SEPARADO_UNION_LIBRE              SOLTERO 
##                 2042                 1014               325863 
##          UNION_LIBRE                VIUDO 
##                65410                17310
print(prop.table(frec_Civil)*100)
## 
##               CASADO          DESCONOCIDO           DIVORCIADO 
##           33.8981144            7.2498562            6.2295941 
##  SEPARADO_MATRIMONIO SEPARADO_UNION_LIBRE              SOLTERO 
##            0.2610419            0.1296261           41.6571429 
##          UNION_LIBRE                VIUDO 
##            8.3617769            2.2128476
#Etnia
#Estado Civil
frec_Etnia<-table(Data$Etnia.de.la.persona)
barplot(frec_Etnia, 
        xlab = " ", 
        ylab = " ",
        main = "Distribución de Etnia",
        col = "peachpuff",
        las = 2,
        cex.name = 0.4)

print(frec_Etnia)
## 
##                      AFRODESCENDIENTE                                GITANO 
##                                 17162                                   422 
##                              INDÍGENA                               NINGUNA 
##                                  3503                                394827 
##                                  OTRO             PALENQUERO DE SAN BASILIO 
##                                323110                                   149 
## RAIZAL DEL ARCHIPIELAGO DE SAN ANDRES                  SIN ETNIA REGISTRADA 
##                                   435                                 42642
print(prop.table(frec_Etnia)*100)
## 
##                      AFRODESCENDIENTE                                GITANO 
##                            2.19392777                            0.05394695 
##                              INDÍGENA                               NINGUNA 
##                            0.44781080                           50.47325024 
##                                  OTRO             PALENQUERO DE SAN BASILIO 
##                           41.30520933                            0.01904762 
## RAIZAL DEL ARCHIPIELAGO DE SAN ANDRES                  SIN ETNIA REGISTRADA 
##                            0.05560882                            5.45119847
# Calcular las frecuencias de las etnias


# Crear un gráfico de barras con escala logarítmica
barplot(log(frec_Etnia), names.arg = names(frec_Etnia), main = "Gráfico de Barras en Escala Logarítmica",
        ylab = "Frecuencia (Escala Logarítmica)", col = "blue", las = 2)

# Ajustar etiquetas del eje Y para mostrar los valores originales
axis(2, at = log(pretty(range(frec_Etnia))), labels = pretty(range(frec_Etnia)))

# Crear gráfico de barras
barplot(frec_Etnia, log="y", 
        main="Frecuencias de Etnia en Escala Logarítmica",
        ylab="", col="blue", las =2, cex.names = 0.6)

summary(Data$Estatura..CM.)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    35.0   158.0   165.0   164.3   171.0   270.0  500420
media_height <- mean(Data$Estatura..CM., na.rm = TRUE)
mediana_height <- median(Data$Estatura..CM., na.rm = TRUE)
desviacion_estandar_height <- sd(Data$Estatura..CM., na.rm = TRUE)
varianza_height <- var(Data$Estatura..CM., na.rm = TRUE)
quantiles_height <- quantile(Data$Estatura..CM., na.rm = TRUE)

print(paste("Media:", media_height))
## [1] "Media: 164.315030337437"
print(paste("Mediana:", mediana_height))
## [1] "Mediana: 165"
print(paste("Desviación Estándar:", desviacion_estandar_height))
## [1] "Desviación Estándar: 11.9954140489978"
print(paste("Varianza:", varianza_height))
## [1] "Varianza: 143.889958206894"
print("Cuantiles:")
## [1] "Cuantiles:"
print(quantiles_height)
##   0%  25%  50%  75% 100% 
##   35  158  165  171  270
# Crear el gráfico de cajas y bigote EDAD
boxplot(Data$Estatura..CM., 
        main = "BOXPLOT ESTATURA",  # Título del gráfico
        ylab = "ESTATURA",                   # Etiqueta del eje y
        col = "purple",                   # Color de las cajas
        border = "black",                      # Color del borde de las cajas
        horizontal = TRUE)

print(max(Data$Estatura..CM.,na.rm = TRUE))
## [1] 270
Anova <- aov(Data$Estatura..CM.~Data$Etnia.de.la.persona, data = Data)
summary.aov(Anova)
##                              Df   Sum Sq Mean Sq F value Pr(>F)    
## Data$Etnia.de.la.persona      7   115686   16527   115.2 <2e-16 ***
## Residuals                281822 40436677     143                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 500420 observations deleted due to missingness
summary(Anova)
##                              Df   Sum Sq Mean Sq F value Pr(>F)    
## Data$Etnia.de.la.persona      7   115686   16527   115.2 <2e-16 ***
## Residuals                281822 40436677     143                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 500420 observations deleted due to missingness
boxplot(Data$Edad..años.~Data$Etnia.de.la.persona,
        xlab = "Promedio General", ylab = "Estrato Familiar",
        main = "Distribución del Promedio General por Estrato Familiar",
        col = "lightblue")