sexta-feira, 8 de novembro de 2019

Um ranking ATP

Estabelecer o ranking dos jogadores profissionais de ténis ao logo de uma época ou de um conjunto de épocas é uma tarefa complexa.
Não jogando todos contra todos, pode pontuar-se mais os resultados em torneios mais valiosos, com os pontos crescendo de eliminatória para eliminatória, como actualmente é feito, ou pode considerar-se cada resultado como uma interacção entre dois jogadores (direccionada, do vencido para o vencedor, por exemplo) e usar uma métrica de ranking da rede de resultados (PageRank ou eigenvector) para o ranking global, valorizando mais as vitórias sobre jogadores melhor classificados.
No sítio data.world encontramos um ficheiro muito completo com todos os resultados de todos os torneios de ténis ATP desde 2000-01-31 até 2019-10-27 (54846 jogos, ao longo de quase 20 anos), do qual extraímos facilmente uma lista de pares ordenados (vencido, vencedor) que abrimos na ferramenta Gephi.
Nesta figura, onde só constam os jogadores com mais de 100 vitórias, temos os vértices da redes e etiquetas com tamanho proporcional ao PageRank e usamos o algoritmo fornecido para descobrir comunidades, que acabou por agrupar os jogadores de acordo com as gerações a que pertencem e também com os continente em que mais vezes jogam:


Sem surpresas, Federer, Nadal e Djokovic lideram este ranking.
O que fica patente é que seria possível aprofundar este estudo, ver as dinâmicas das classificações ano a ano, ver a influência dos pisos dos courts, etc.
Deixo a sugestão...

terça-feira, 13 de agosto de 2019

Os TopColegas

Nada como um pequeno desafio para estudar um assunto qualquer.
Tenho vindo a estudar algumas packages muito interessantes de Python, nomeadamente Requests: HTTP for Humans, que simplifica os acessos a páginas Web, e NetworkX, para redes complexas e grafos.
Para me ajudar neste estudo, coloquei a mim próprio um pequeno desafio, que consistiu em utilizar uma plataforma muito interessante sobre jogadores de futebol - ForaDeJogo - e nomeadamente uma funcionalidade designada por TopColegas, que, para cada jogador, indica quais os outros jogadores que foram seus colegas o maior número de épocas.
Estudando a estrutura das páginas dos jogadores, e começando por um jogador, não é difícil descobrir uma forma de se extrair a informação necessária, e repetir sucessivamente a operação para cada colega, colega de colega, etc.
O meu pequeno programa produz os ficheiros csv de vértices e arestas que podem ser abertos directamente pela ferramenta Gephi, permitindo a obtenção de redes como esta:


Utilizei o algoritmo Force Atlas para o posicionamento dos vértices da rede.
Fico a aguardar reacções...

segunda-feira, 8 de julho de 2019

Todos os números vão dar a um

Uma conjectura conhecida - Collatz - diz que, tomando um número inteiro positivo e aplicando sucessivamente a seguinte regra
 - se o número for par, divido-o por 2,
 - se o número for ímpar, multiplico-o por 3 e somo 1,
chego inevitavelmente ao número 1.
Procurei as sequências para todos os números entre 1 e 100, e interpretei-as como uma rede de números, em que cada um aponta para o seguinte, segundo a regra anterior.
No total, passei por 251 números, e encontrei todo o tipo de percursos, desde o rápido até ao muito trabalhoso, como esta figura mostra


O caso mais interessante é o do número 97, que é aquele que requere mais iterações para se chegar finalmente ao número 1...
E o número maior por onde passei foi o 9232.
(coloquei aqui uma imagem de maior resolução)

terça-feira, 21 de maio de 2019

Geo-política da Eurovisão

Os dados das votações no Festival da Eurovisão revelam aspectos muito interessantes das relações entre os países, desde a simples simpatia entre eles até trocas obscuras de votos, como ainda se viu no último festival em Israel.
Esses dados estão disponibilizados por exemplo no site data.world, voto a voto, país a país, de 1975 a 2019.
Neste pequeno estudo, utilizei apenas as votações dos júris nas finais (ultimamente passou a haver duas meias finais, e voto popular), considerando todos os votos que cada país atribuiu a cada um dos outros, tendo obtido o grafo seguinte:


Neste grafo, o tamanho de cada vértice é proporcional ao número de votos recebido por cada país, e o seu posicionamento foi obtido utilizando um algoritmo de forças disponível no programa Gephi, que aproxima os vértices entre os quais as relações são mais intensas.
A Suécia foi o país que mais votos acumulou nestes 45 anos, e Andorra nunca recebeu um único voto...
As cores correspondem às três classes de modularidade descobertas pelo programa Gephi, que curiosamente dão uma leitura geo-política interessante: a laranja a velha Europa, a verde os países nórdicos, e a roxo a Europa de leste, com as suas excepções, naturalmente.
Ou não fosse esta análise essencialmente social.
[coloquei uma imagem de maior resolução aqui]

domingo, 21 de abril de 2019

A rede de páginas do FCP no Facebook

A ferramenta netvizz v1.6 de Bernard Rieder permite obter as páginas que seguem uma determinada página no Facebook e as ligações entre elas (profundidade 1) e ainda todos as páginas que seguem cada uma destas e as ligações entre elas (profundidade 2).
Experimentei a sua versão actual, depois das limitações impostas pelo Facebook, usando como ponto de partida a página oficial do Futebol Clube Porto, que tem cerca de 4 milhões de seguidores individuais.
Encontrei uma rede com um total de 961 páginas e 5089 ligações entre elas.
Abri o ficheiro gdf produzido na aplicação Gephi, calculei o grau in de cada vértice, que usei para definir o seu tamanho no grafo, e usei o algoritmo para determinação de classes de modularidade para pesquisar clusters.
Encontrei 10  clusters, que colori usando uma paleta de cores gerada automaticamente no Gephi, e usei o layout Force Atlas para separar os clusters encontrados.


O resultado encontrado evidencia os diferentes universos em que o clube está presente, que vão desde o futebol ao andebol, da cidade às competições europeias, dos órgãos de comunicação social aos patrocinadores, e mesmo ao México, onde estão um número significativo dessas páginas.
[coloquei uma imagem de maior resolução aqui]

domingo, 24 de março de 2019

Redes de co-autoria

A produção científica dá diversas oportunidades de criar, observar e medir redes: os autores colaboram entre si, escolhem listas de palavras chave, citam outros autores, escolhem revistas onde publicar, etc, e todas estas actividades se podem traduzir em redes científicas e em medidas nomeadamente de clustering ou de ranking.
O CWTS - Centro de Estudos de Ciência e Tecnologia da Universidade de Leiden, Holanda, investiga nestas áreas e disponibiliza algumas ferramentas interessantes de visualização e análise de redes, nomeadamente o VOSviewer, que permite visualizar e analisar redes bibliométricas, nomeadamente a partir dos dados de Web of Science, Scopus ou Dimensions.
É um mundo muito interessante, que mostra como as pessoas colaboram e como os caminhos da ciência se vão construindo.
Neste exemplo muito simples, pesquisei a base de dados Scopus com os termos holonic manufacturing, tópico em que tive alguma produção científica.
Encontri 785 artigos científicos, e com a ferramenta VOSviewer desenhei a rede de co-autorias desses artigos, que aqui apresento com uma visualização tipo densidade.


Como seria de esperar, faço parte dessa rede, e bem próximo está o meu antigo aluno de doutoramento Paulo Leitão, que entretanto já ganhou vida própria, com o que muito me congratulo.

segunda-feira, 10 de dezembro de 2018

Actores de cinema

Descobri recentemente um ficheiro com os dados de 1000 filmes realizados entre 2006 e 2016, retirados da base de dados  IMDb.
Como numa coluna desse ficheiro estão os principais actores que contracenaram em cada um dos filmes, há aqui uma oportunidade para se visualizar a rede de todos os actores que intervieram naqueles filmes, através da relação terem contracenado em pelo menos um filme.
Um programa que escrevi (em Python) permitiu extrair os pares de relações, e a ferramenta Gephi permite obter uma panóplia de métricas, e nomeadamente a sua visualização


São 1985 actores e 5754 pares de actores, alguns dos quais ocorrem mais que uma vez.