Maradona Morais


Medindo qualidade do serviço Uber X em Natal/RN

23 de setembro de 2017

Em março 2016 o The Washington Post lançou uma matéria super interessante da jornalista computacional Jennifer Stark e do professor Nicholas Diakopoulos. A reportagem indagava que o Uber em Los Angeles aparenta ter um serviço melhor em áreas com mais pessoas brancas, e para chegar a esta conclusão eles consumiram durante um mês a API pública do Uber e mediram a qualidade do serviço em todos os bairros.

A ideia é bastante simples: foi utilizado como indicador de qualidade o tempo (estimado pelo aplicativo) que um motorista levaria para chegar até o local em que o cliente se encontra, esta informação pode ser obtida pela API do Uber. Então, basta mapear diversos pontos distribuidos por toda cidade e periodicamente armazenar os tempos estimados. Depois é só analizar os dados obtidos com ferramentas adequadas.

Este foi o resultado do estudo do The Washington Post:

Em 26 de agosto deste ano (2017) fez um ano desde que o Uber passou a operar em Natal/RN. Motivados pela notícia compartilhada pelo professor Fernando Masanori, eu e meu colega Daniel Marx decidimos explorar um pouco da API Uber e reproduzir o que Jennifer e Nicholas fizeram com os dados do Uber em Los Angeles.

Mapeando a cidade

A primeira informação importante para este estudo é as localizações e bairros que deverão ter as estimativas de espera rastreadas. Então, mapeamos diversos pontos na cidade de Natal, um total de 86 localidades – Natal tem 36 bairros, cada bairro teve entre 2 e 3 localidades mapeadas dependendo do tamanho do bairro.

Por engano, o bairro Nova Parnamirim não foi mapeado

Este é o mapa de localidades construído:

As coordenadas (latitude e longitude) dos pontos mapeados foram armazenadas em uma estrutura de dados para leitura pelo script de requisições. Observe que os pontos foram escolhidos aleatoriamente – o trabalho do The Washington Post faz uma seleção uniforme dos pontos (ou seja, todos pontos têm uma mesma distancia dos pontos adjacentes).

Executando as requisições

Foi criado um script em Python que a cada 3 minutos faz 86 requisições (uma para cada localidade) à API do Uber, e salva os tempos estimados retornados pela API em um arquivo, para analise posterior. Esse script ficou em execução durante 5 dias (entre 14 e 19 de setembro) tendo efetuado quase 157 mil requisições.

Resultado

O tratamento posterior dos dados que fizemos foi efetuar uma média, por bairro, do tempo de estimativa de espera. Por fim, representamos as médias obtidas em um mapa e chegamos a este resultado:

Todos os códigos utilizados neste estudo estão disponíveis no meu Github neste endereço.


Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial 4.0 Internacional.