Obtendo Insights Com as Redes Organizacionais

Higor Gomes
12 min readOct 20, 2022

--

Expandindo as possibilidades de análises descritivas em People Analytics

Figura 1 — Capa. Fonte: Autor.

Introdução

Um grafo é um par (V, A) em que V é um conjunto arbitrário e A é um subconjunto de V², sendo V² o conjunto de todos os pares não ordenados de elementos de V. Os elementos de V são chamados vértices e os de A são chamados arestas [1]. Se as arestas têm um sentido associado (indicado por uma seta na representação gráfica) temos um dígrafo (grafo orientado) [2].

Alguns exemplos de aplicações de grafos são:

  • Movimentos das peças em um tabuleiro de xadrez
  • Determinar o caminho mínimo entre dois pontos
  • Determinar o fluxo máximo entre dois pontos
  • Análise de ligações químicas
  • Análise de redes organizacionais

Aqui, será discutida a utilização de grafos no escopo de Análise de Redes Organizacionais, que consiste numa metodologia para analisar laços de colaboração, fluxos informativos, relacionamentos pessoais e práticas de orientações que permeiam a organização [3]. Serão sugeridas duas principais possibilidades de análise, sendo elas:

  1. Identificação das principais personas em uma rede organizacional;
  2. Acompanhamento de uma pessoa em específico dentro de uma rede, monitorando sua integração ao time.

Ferramentas Utilizadas

Existem diversas ferramentas disponíveis para a criação de grafos, sejam elas mais complexas e com programação envolvida, ou mais simples e de forma mais direta (sempre havendo um trade off em ambos os casos).

Apesar da variedade disponível de formas de gerar esse tipo de visualização, elas não são facilmente encontradas em ferramentas populares e cotidianas de geração de gráficos, como Excel, Google Sheets, Google Data Studio, entre outras. Até mesmo no Power BI, que é uma das plataformas de visualização de dados mais robustas da atualidade, precisa contar com visuais do marketplace para a construção de grafos [4].

Neste artigo, serão utilizadas duas principais tecnologias para as análises sugeridas, sendo elas:

  • A linguagem de programação R [5], juntamente com a IDE R Studio [6], cujo foco será a primeira classe de análises sugerida anteriormente (personas em uma rede organizacional);
  • A linguagem de programação Python [7], juntamente com a IDE JupyterLab [8], a fim de gerarmos as análises de uma pessoa em específico dentro de uma rede organizacional com dezenas de milhares de conexões (80 mil +).

Principais Personas

Rede Completa

Para a análise das personas em uma rede organizacional, iremos utilizar os dados de Star Wars, disponíveis no Kaggle, que contém todas as relações entre as personagens de acordo com os episódios da obra. É importante ilustrar o resultado completo, com as seguintes observações:

  • As cores são obtidas por meio de uma análise de detecção de comunidade utilizando o método de Louvain;
  • As arestas têm espessuras diferentes, que reflete a quantidade de interações entre cada personagem;
  • O tamanho dos nós é referente à quantidade de vezes que esse personagem aparece nos episódios, sendo normalizados para facilitar a visualização;
  • A disposição da rede é obtida utilizando o layout “layout_nicely” da biblioteca igraph, seguindo uma plotagem orientada à força.

A seguir, o código completo em R para a criação da rede organizacional que servirá de objeto de estudo para identificação das principais personas.

A Figura 2, apresentada a seguir, ilustra o resultado obtido com o código anterior.

Figura 2 — Rede Organizacional 1. Fonte: Autor.

Central Connectors

Os central connectors são, talvez, os primeiros perfis a chamarem mais atenção numa rede organizacional. Destacam-se por terem grande notoriedade dentro da rede, sendo nós com grandes tamanhos em relação aos demais (no caso desse atributo estar representado na visualização). A Figura 3 representa, de forma destacada, um central connector.

Figura 3 — Foco no central connector. Fonte: Autor.

Além da quantidade de conexões, um central connector é também caracterizado pela pluralidade dessas conexões, sendo uma pessoa que faz interface com diversos grupos dentro da rede, tornando-se assim um influenciador dentro da rede. Esse tipo de persona pode ser chave em processos de mudanças culturais ou mudanças de direcional estratégico, uma vez que exercem grande influência sobre a vizinhança em que está inserida. Outra aplicação interessante decorrente da identificação dos central connectors é auxiliar no processo de onboarding de pessoas com nível gerencial, pois o contato com grandes influenciadores da empresa irá fornecer uma visão holística sobre os times de forma mais acelerada.

Boundary Spanners

A segunda persona de grande destaque numa rede organizacional é o boundary spanner. Essa persona tem como característica fazer interface entre duas ou mais áreas, que no caso do exemplo abaixo, significa ter contato com várias cores diferentes. A Figura 4 representa, de forma destacada, um boundary spanner.

Figura 5 — Foco no boundary spanner. Fonte: Autor.

Esse tipo de persona não é necessariamente uma referência dentro da rede, tampouco tem um número elevado de conexões. Por sua principal característica ser a união de áreas, boundary spanners são personas interessantes quando o assunto é projetos multidisciplinares, justamente pela característica de nutrir relacionamentos com várias áreas. Além disso, esse tipo de persona torna-se naturalmente importante quando o assunto é facilitar o fluxo de informações em uma empresa.

Brokers

Esse tipo de perfil tem como principal característica dos manter pessoas ou silos unidos ao restante da rede. A Figura 5 representa, de forma destacada, um broker.

Figura 5 — Foco no broker. Fonte: Autor.

Nota-se que, no caso acima, caso o nó em destaque deixasse de existir, as pessoas destacadas em rosa estariam automaticamente desconectadas da rede. Além disso, os brokers aparecem também conectando áreas que se falam apenas internamente, tendo papel fundamental no fluxo de informações entre elas. Vale notar que um broker tem um papel similar aos boundary spanners no sentido de ser uma interface facilitadora do fluxo de informações, ao mesmo tempo que se assemelham aos central connectors quando se tornam uma referência para determinadas pessoas, mesmo não tendo um elevado número de conexões.

Peripheral Players

Por fim, o quarto tipo de persona analisada neste artigo é o peripheral player. Geralmente localizado nas extremidades das redes, possuem poucas conexões na rede, e muitas vezes têm apenas uma única conexão. A Figura 6 representa, de forma destacada, um peripheral player.

Figura 6 — Foco no peripheral player. Fonte: Autor.

Por estarem nas extremidades de uma rede, os peripheral players são considerados perfis de atenção por alguns motivos. O fato de estarem unidos à rede por uma ou poucas conexões os tornam vulneráveis às movimentações dessas conexões. Outro ponto é que, geralmente, peripheral players são pessoas com muito conhecimento específico, e como sua coesão com a rede é fraca (poucas ou uma única conexão), são um risco de saída, podendo levar muito conhecimento e deixando um gap técnico na empresa/equipe.

Integração de Colaboradores à Rede

Outra aplicação com importante relevância no estudo de redes organizacionais é o acompanhamento do posicionamento de determinada pessoa em uma rede. Esse tipo de análise possibilita explorar aspectos como:

  • Integração de uma nova pessoa a determinado time ao longo do tempo, observando seu posicionamento em algumas janelas de tempo após a sua entrada, como por exemplo, uma semana, um mês, um trimestre e um semestre;
  • Posicionamento de uma liderança em relação aos membros de seu time, podendo observar a relação entre bons líderes da empresa e o quão distante estão dos membros do seu time;
  • Movimentação de uma pessoa após ser transferida para outra área, mapeando se na prática houve alteração nos círculos próximos.

Para este artigo, o foco será no acompanhamento da integração de uma nova contratação em relação ao seu time, usando como base os dados disponibilizados pela Stanford University, extraídos do Facebook, disponíveis aqui [9].

Rede Completa

O primeiro passo para realização da análise aqui proposta de movimentação de colaboradores ao longo do tempo é gerar a rede completa no instante de tempo inicial (que chamaremos de t0).

Nesta etapa, teremos um nível maior de detalhamento na construção da rede. O snippet de código abaixo traz as três primeiras etapas da criação da rede completa, sendo elas:

  • Importação das bibliotecas necessárias;
  • Importação dos dados;
  • Criação do dataset inicial, contendo os nós de partida, chegada e a qual grupo eles pertencem.

Existem diversas bibliotecas em Python para a criação, manipulação e análise de grafos [10]. Para o nosso caso, será utilizada a biblioteca NetworkX [11] para criação, manipulação, análise e plotagem, por se tratar de uma das mais completas bibliotecas para manipulação de redes, além de ter uma boa performance com alto volume de dados. O tradeoff aqui é a plotagem ser estática, não permitindo interagir com o objeto (diferentemente de bibliotecas como PyVis [12]), o que nesse caso é desejável pela natureza do problema e pelo alto volume de dados (para mais de 1000 nós, a maioria das bibliotecas de visualização de grafos com outputs interativos enfrentam problemas de performance).

Na sequência, iremos adicionar alguns atributos fundamentais para nossa análise, sendo eles:

  • o tamanho de cada nó, que será obtido de duas maneiras diferentes: pelo grau de centralidade de cada nó, que é calculado utilizando uma normalização do total de nós do grafo; por meio da quantidade de vizinhos (ou conexões) que cada nó tem;
  • a cor de cada nó, que visualmente irá indicar a qual comunidade cada colaborador pertence, cujo valor será obtido utilizando uma função de detecção de comunidade;
  • a espessura de cada aresta, que irá sinalizar quantas conexões há entre cada um dos nós;
  • a posição de cada um dos nós, que será obtida por meio de um algoritmo orientado a força próprio da biblioteca NetworkX.

O snippet de código apresentado a seguir representa essa etapa de adição dos atributos.

A fim de ter um dataset completo com todos os atributos, serão criadas novas colunas no dataset inicial (que contém apenas o nome e o grupo de cada nó de partida e chegada) de acordo com o snippet de código apresentado a seguir.

Com isso, é possível criar a rede organizacional completa. Para isso, serão utilizados os seguintes comandos:

plt.figure(figsize = (25, 15))
nx.draw_networkx(
graph_nx,
pos = pos,
node_size = node_size_neighbor,
node_color = colors,
with_labels = False,
width = edge_weight,
edge_color = '#272727')
limits = plt.axis("off")

O resultado está representado na Figura 7 abaixo.

Figura 7 — Rede organizacional completa. Fonte: Autor.

Focando a Análise

Para realizarmos o acompanhamento hipotético da integração de uma nova pessoa a um time (ou comunidade), será importante aprimorar a visualização da rede. E aqui cabe uma observação em relação à análise de redes organizacionais: conforme o volume de dados (isto é, número de pessoas e conexões) aumenta, é importante lançarmos mão de estratégias para facilitar a visualização e obtenção de insights. As bibliotecas para manipulação de grafos oferecem diversas funções e métodos que extraem informações da rede sem necessariamente utilizar aspectos visuais.

O snippet de código a seguir traz a implementação de uma função que tem por objetivo a criação da mesma rede organizacional apresentada na Figura 7, porém com alterações no visual para que seja possível destacar apenas dois nós (e o vértice entre eles, caso exista).

Pro exemplo de análise abordado neste artigo, iremos observar dois nós escolhidos arbitrariamente:

  • Um central connector, ou seja, uma pessoa com bastante influência e diversas conexões na comunidade;
  • Um peripheral player, representando uma nova entrada na empresa, cujo posicionamento será comparado ao do central connector da comunidade, uma vez que desejaremos integrar essa pessoa à rede.

A Figura 8, apresentada a seguir, mostra esses dois nós destacados na rede, bom como a importância de utilizar essa estratégia de representação para facilitar o acompanhamento.

Figura 8 — Rede organizacional com nós em destaque. Fonte: Autor.

Distância Visual

Antes de realizarmos um acompanhamento hipotético da integração de uma nova entrada ao time, é fundamental entendermos quais variáveis iremos observar nessa tarefa. Intuitivamente, nossa atenção é atraída para a distância entre dois nós na rede, assumindo que isso significa que eles têm um alto nível de interação dentro da comunidade. Assim, iremos observar se essa premissa tem fundamento.

Para analisar essa relação entre posicionamento na rede e possibilidade de alto nível de integração, utilizaremos quatro propriedades:

  • Distância euclidiana entre os nós;
  • Número de vértices entre os nós;
  • Número de vizinhos em comum entre os nós;
  • Total de nós que separam os dois nós analisados.

Para isso, será necessário criar um dataset auxiliar contende todas as possíveis combinações de nós da rede. Como a base de dados utilizada contém 4039 nós, serão criadas 8154741 combinações 2 a 2. Em adição, serão obtidas as três propriedades supracitadas para cada um dos pares, e adicionadas como novas colunas do dataset. O snippet de código a seguir ilustra essa etapa.

A Figura 9, apresentada a seguir, traz os 5 primeiros registros desse dataset que será utilizado para analisar a relação entre o posicionamento dos nós e a força de interação entre eles.

Figura 9 — Amostra do dataset utilizado para análises. Fonte: Autor.

Por se tratar de um dataset com um alto volume de dados, iremos utilizar uma amostra aleatória de 10000 observações para analisar as quatro propriedades mencionadas anteriormente. Começando pela distância euclidiana e o total de vizinhos em comum, é possível observar com o Gráfico 1, apresentado a seguir, que existe uma relação inversamente entre essas variáveis.

Gráfico 1 — Vizinhos em comum e distância euclidiana entre dois nós. Fonte: Autor.

O segundo par de variáveis a ser analisado é a distância euclidiana versus o total de nós entre dois nós específicos. O Gráfico 2, apresentado a seguir, ilustra como a distância entre os nós aumenta a medida em que o total de nós que os separam também aumenta.

Gráfico 2 — Nós de distância e distância euclidiana entre dois nós. Fonte: Autor.

Por fim, o Gráfico 3 mostra os boxplots do total de vizinhos em comum de acordo com o total de nós entre um par de nós, realçando uma relação inversamente proporcional entre essas variáveis.

Gráfico 2 — Nós de distância e vizinhos em comum entre dois nós. Fonte: Autor.

O snippet de código, apresentado a seguir, apresenta a forma como os três gráficos anteriores foram obtidos.

Com isso, conseguimos observar que nós visualmente próximos em uma rede organizacional (utilizando o algoritmo de plotagem disponibilizado pela biblioteca NetworkX) necessariamente têm poucos nós de distância um dos outros e muitos vizinhos em comum.

Integração à Rede

Agora que temos algumas evidências de que dois nós estarem fisicamente próximos em uma rede resulta de um alto nível de compartilhamento de vizinhos e um baixo número de nós de distância, será proposto um exemplo fictício em que iremos “fabricar” novas conexões (analogamente, poderíamos organizar reuniões e fóruns entre essas pessoas) para observar se, de fato, a proximidade entre os nós destacados na Figura 9, apresentada a seguir, irá aumentar.

Figura 9 — Posição inicial dos nós. Fonte: Autor.

O nó número 0, destacado na imagem anterior como central connector (o maior dentre os dois em vermelho, no centro da comunidade a qual pertence), será nossa referência para observar a integração do nó número 6 (destacado em vermelho, porém com tamanho relativamente menor e desempenhando papel de peripheral player). Para isso, iremos criar relações sintéticas do nó 6 com os outros nós pertencentes à essa mesma comunidade. Esses nós estão destacados na Figura 10, apresentada à seguir.

Figura 10 — Comunidade de interesse. Fonte: Autor.

O snippet de código apresentado a seguir ilustra a lista dos nós que pertencem a essa comunidade, bem como a função para criação de conexões novas.

Assim, partindo de um total de 6 conexões para o nó 6, iremos criar mais 30 conexões adicionais (todas com nós pertencentes a essa comunidade) para observar o comportamento desse nó. O resultado é obtido por meio do seguinte snippet:

for i in range(0, 30):
connection = rd.choice(team)
team.remove(connection)
dataset_new = create_connection(6, connection, dataset_new)
draw_graph_highlight(0, 6, dataset_new, i)

Com isso, a imagem animada abaixo ilustra o posicionamento do nó 6 a cada nova conexão adicionada, reforçando as relações entre distância euclidiana, número de vizinhos em comum e nós de distância vistas anteriormente.

Animação do posicionamento do nó 6 a cada nova conexão adicionada. Fonte: Autor.

Conclusão

A análise de redes organizacionais, sem dúvidas, aumenta de forma exponencial as possibilidades dentro do campo das análises descritivas (e, possivelmente, diagnósticas).

Além da clássica identificação das principais personas, que pode balizar diversos planos de ação em uma companhia, é possível acompanhar pessoas em específico numa rede e ter uma boa noção de sua nível de integração/impacto nos times em que está inserida.

Além dos exemplos aqui citados, podemos pontuar:

  • Uma nova liderança assumindo um novo time, a fim de monitorar se de fato está havendo uma integração;
  • Reorganização de áreas em uma empresa, ou até possivelmente a fusão de áreas, monitorando as proximidades das pessoas ao longo do tempo;
  • Proximidade de líderes e talentos do seu time, eventualmente correlacionando com a probabilidade de saída desses colaboradores chave (aqui você encontra uma série completa sobre como prever quem irá sair na sua empresa);
  • Otimização na velocidade de rampagem de novas entradas, mapeando pessoas chave para fazerem parte do processo de onboarding e, assim, aumentar a velocidade de integração ao time

Vale lembrar que a qualidade das análises é 100% dependente da qualidade dos dados! Assim, quanto melhor for a maneira de obtenção das relações, mais acurados serão os insights.

--

--