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