ANÁLISIS DESCRIPTIVO DE REDES

Lista de ocupaciones conectadas de manera directa

library(igraph)
library(tidygraph)
library(ggraph)
library(tidyverse)
similitud <- read_delim("https://github.com/martinmontane/martinmontane.github.io/raw/master/similitud.csv",delim=";")
similitud <- similitud %>% 
  filter(flow>10) %>%
  mutate(RijSimple=ifelse(RijCorregido>0,1,0)) %>% 
               filter(RijSimple == 1)
descripcion <- read_delim("https://raw.githubusercontent.com/martinmontane/martinmontane.github.io/master/descripcion.csv",delim=";")
grafo <- graph_from_data_frame(similitud,directed = FALSE)
grafo <- igraph::simplify(grafo,remove.loops=TRUE)
grafo <- as_tbl_graph(grafo)
grafo <- grafo %>% 
  activate(nodes) %>% 
  left_join(descripcion,by=c("name"="broadGroup"))
grafo <- grafo %>% 
         activate(nodes) %>% 
         mutate(nodeID=V(.))
distancias <- shortest.paths(grafo)
ocup_directas <- distancias %>% 
  as_tibble(rownames = NA) %>%
  rownames_to_column() %>% 
  pivot_longer(.,cols =2:ncol(.)) %>% 
  rename(nodo1=rowname,
         nodo2=name,
         distancia=value) %>%
  filter(distancia == 1)
ocup_directas <- merge (ocup_directas, descripcion, by.x = "nodo1", by.y = "broadGroup")
ocup_directas <- rename(ocup_directas, Ocupacion_1 = Desc)
ocup_directas <- merge (ocup_directas, descripcion, by.x = "nodo2", by.y = "broadGroup")
ocup_directas <- ocup_directas %>%
  rename(Ocupacion_2 = Desc) %>%
  select(-nodo1, -nodo2, -distancia)

Listado

print(head(ocup_directas))
##                                          Ocupacion_1
## 1 Sales Representatives, Wholesale and Manufacturing
## 2                             Miscellaneous Managers
## 3            First-Line Supervisors of Sales Workers
## 4                                Retail Salespersons
## 5      Miscellaneous Sales Representatives, Services
## 6                             Miscellaneous Managers
##                    Ocupacion_2
## 1 Marketing and Sales Managers
## 2 Marketing and Sales Managers
## 3 Marketing and Sales Managers
## 4 Marketing and Sales Managers
## 5 Marketing and Sales Managers
## 6           Financial Managers

Ocupaciones centrales

Criterio de betweness

crit_betweness <- grafo %>% 
  activate(nodes) %>% 
  mutate(betweness=centrality_betweenness()) %>%
  arrange(desc(betweness)) %>%
  mutate(Top5_bet=ifelse(row_number() %in% 1:5, "red", "black"))
print(crit_betweness)
## # A tbl_graph: 98 nodes and 237 edges
## #
## # An undirected simple graph with 3 components
## #
## # Node Data: 98 x 5 (active)
##   name    Desc                                      nodeID    betweness Top5_bet
##   <chr>   <chr>                                     <igrph.v>     <dbl> <chr>   
## 1 11-9190 Miscellaneous Managers                     7            1832. red     
## 2 37-2010 Building Cleaning Workers                 32            1064. red     
## 3 43-6010 Secretaries and Administrative Assistants 53             615. red     
## 4 53-3030 Driver/Sales Workers and Truck Drivers    80             615. red     
## 5 51-9190 Miscellaneous Production Workers          78             439. red     
## 6 47-2060 Construction Laborers                     62             317. black   
## # ... with 92 more rows
## #
## # Edge Data: 237 x 2
##    from    to
##   <int> <int>
## 1     1    46
## 2    46    63
## 3     7    46
## # ... with 234 more rows

Las cinco primeras ocupaciones centrales según el criterio de betweness son: 1.Gerentes varios 2.Trabajadores de limpieza de edificios 3.Secretarias y Asistentes administatrivas 4.Choferes, vendedores y choferes de camiones 5.Trabajadores generales de la producción

Criterio de clustering local

crit_clocal <- grafo %>% 
  activate(nodes) %>% 
  mutate(clusteringLocal=local_transitivity()) %>%
  arrange(desc(clusteringLocal)) %>%
  mutate(Top5_cloc=ifelse(row_number() %in% 1:5, "red", "black"))
print(crit_clocal)
## # A tbl_graph: 98 nodes and 237 edges
## #
## # An undirected simple graph with 3 components
## #
## # Node Data: 98 x 5 (active)
##   name    Desc                                nodeID   clusteringLocal Top5_cloc
##   <chr>   <chr>                               <igrph.>           <dbl> <chr>    
## 1 11-9010 Farmers, Ranchers, and Other Agric~  3                     1 red      
## 2 15-1120 Computer and Information Analysts   11                     1 red      
## 3 15-1130 Software Developers and Programmers 12                     1 red      
## 4 35-3010 Bartenders                          28                     1 red      
## 5 37-3010 Grounds Maintenance Workers         33                     1 red      
## 6 41-1010 First-Line Supervisors of Sales Wo~ 36                     1 black    
## # ... with 92 more rows
## #
## # Edge Data: 237 x 2
##    from    to
##   <int> <int>
## 1    23    60
## 2     6    23
## 3    23    54
## # ... with 234 more rows

Las cinco primeras ocupaciones centrales según el criterio de clustering local son: 1.Granjeros, rancheros y otros gerentes agricultores 2.Analista en computación e información 3.Desarrollador de software y programador 4.Mesero 5.Trabajador de mantenimiento

Claramente las ocupaciones centrales varían según el criterio de centralidad que utilicemos. A través de un gráfico intentaremos ver cuál es su ubicación relativa en la red.

centralidad <- grafo %>% 
  activate(nodes) %>% 
  mutate(betweness=centrality_betweenness()) %>%
  arrange(desc(betweness)) %>%
  mutate(Color=ifelse(row_number() %in% 1:5, "Top betweness", NA)) %>%
  mutate(clusteringLocal=local_transitivity()) %>%
  arrange(desc(clusteringLocal)) %>%
  mutate(Color2=ifelse(row_number() %in% 1:5, "Top clustering local", Color))
ggraph(centralidad) +
  geom_edge_link(color="black") +
  geom_node_point(aes(size=10, color=Color2)) +
  theme_gray() +
  guides(size=FALSE) +
  labs(x = "",
       y = "") +
  theme(axis.text = element_blank(), legend.title=element_blank())
## Using `stress` as default layout

Como se puede ver en el gráfico las ocupaciones centrales según el criterio de betweness son aquellas que se encuentran en el medio de las grandes redes de ocupaciones,es decir, nucleando y comunicando las diferentes comunidades de ocupaciones que se generan, son nodos de mayor grado. Estas podrían ser ocupaciones de base o de inicio para diferentes carreras profesionales. Por otro lado, las ocupaciones centrales según el criterio de clustering local son aquellas que se ubican en la periferia del gráfico y forman un triángulo con sus vecinos generando comunidad (y sólo están conectados con ellos), son nodos de grado dos.Es posible que estas últimas sean más específicas de un campo particular como es el caso de los puestos relacionados a la industria del software que aparecen.