Competições de análise de dados: BoE e Kaggle


Quer mostrar suas habilidades de visualização de dados ou previsão? Seguem dois links:

Uma competição de visualização do Bank of England. Na verdade, a primeira competição deste tipo que o BoE lança. O prazo final é primeiro de maio. A final da competição ocorrerá em Londres e o BoE não pagará passagens para os finalistas (mas, se eu fosse você, tentaria chegar na final antes de decidir se isso será um problema). O prêmio é de 5.000 libras (mais de R$ 20.0000).

– Um site sobre o qual sempre quis falar mais detalhadamente por aqui, mas ainda não tive tempo, é o Kaggle. Resumidamente,  o Kaggle é um site de competições de modelagem preditiva em que as empresas colocam os problemas que gostariam de  solucionar (juntamente com um prêmio) e analistas de todo o mundo competem para produzir os melhores modelos. Atualmente há dois grandes prêmios sendo disputados:

  1. US$ 100.000,00 para quem criar o melhor modelo preditivo para sinais de retinopatia diabética com imagens do olho.
  2. US$ 30.000,00 para quem criar o melhor modelo preditivo para faturamento de restaurantes.

Além de outros prêmios de menor montante. Não somente isso, participantes do Kaggle que conseguem boas classificações também conseguem, em geral, bons empregos na área.

 

 

 

Aprenda a fazer previsão de eleições com o NYT.


Depois que o Nate Silver saiu do NYT, o jornal montou um novo time de previsão para eleições. O novo modelo, denominado LEO, está no ar e com uma descrição bem amigável de seu funcionamento.  A parte gráfica dos resultados também está bacana, inclusive com uma seção comparando o modelo do NYT com seus concorrentes (vale lembrar que o site conta com a ajuda do Michael Bostock, um dos caras que desenvolveu o fantástico D3 para JavaScript)

Mas, tem algo ainda melhor. O NYT liberou os dados e os códigos do modelo no github. E o modelo é em R. Ou seja, agora, para replicar e adaptar o modelo à realidade brasileira só faltam duas coisas: tempo e vontade.

Jornalismo baseado em dados – Blog do Nate Silver está no ar!


Está no ar o blog do Nate Silver – FiveThirtyEight!

Nate Silver, economista e estatístico, alçou-se à fama prevendo quantitativamente os resultados das eleições norte americanas, em meio a dezenas de pundits que, de maneira arrogante, erraram grosseiramente. Seu segredo? Dados.

Agora, Nate reuniu uma equipe para dedicar-se ao jornalismo fundamentado na análise rigorosa de dados, tratando dos temas mais variados: além de política,  o blog tratará de economia, esportes, ciência e outras questões do dia-a-dia.

Três destaques que você deve conferir:

Geral: O manifesto de Nate Silver, com uma introdução ao blog.

Esporte: Esta fantástica tabela com previsões do campeonato de basquete da NCAA, acompanhada da explicação do modelo. Imagine uma dessas para a Copa ou para o Brasileirão?

Economia: Artigo simples, mas interessante, com três recomendações para avaliar dados econômicos (que muitas vezes são tomados as is). Sobre este assunto, neste blog, veja os pots sobre a acurácia das variáveis econômicas.

Este é um blog promissor, certamente vale a pena acompanhar.  E, falando em acompanhar blogs, se você ainda não usa, recomendo fortemente baixar um leitor de RSS, o FiveThirtyEight tem feed.

PS: Você pode encontrar outros posts sobre Nate Silver neste blog aqui.

O que o Facebook diz sobre o seu relacionamento?


O time de análise de dados do Facebook fez uma série de 6 posts sobre o valentine’s day (dia dos namorados) nos Estados Unidos.

Recomendo fortemente a leitura de todos. O posts tratam dos seguintes temas:

  • O primeiro post trata de amor e religião e constata que há poucos casais de religiões diferentes, mesmo em países com alta diversidade religiosa.
  • O segundo post trata da diferença de idade entre casais. Na média, homens são mais de dois anos mais velhos do que suas  parceiras.
  • O terceiro post trata da duração dos relacionamentos. Um dos resultados: quanto mais tempo de relacionamento, menor a chance de o casal se separar.
  • O quarto post trata das “melhores” cidades para os solteiros (como são cidades dos EUA, provavelmente não interessará muito os leitores deste blog).
  • O quinto post trata da mudança de comportamento dos casais antes e depois do relacionamento. Esse é um dos mais bacanas. Para quem quiser ler algo em português, a Folha fez uma matéria. Vale reproduzir um gráfico, relacionando a quantidade de posts com palavras positivas e os dias antes/após o início do namoro:

1898250_10152219519288415_127545461_n

Os dados confirmam aquilo que você já percebia: casais recém formados postam sobre unicórnios vomitando arco-iris e o efeito pode durar muito, muito tempo (destaque para o gráfico feito com ggplot2).

  • Por fim, o último post trata do que acontece após o término do relacionamento. As interações, principalmente de apoio dos amigos, aumentam bastante.

O Facebook é, muito provavelmente, a organização com a maior base de dados sobre informações pessoais do mundo. O potencial disso é inimaginável. No final do ano passado, eles contrataram o professor da NYU Yann LeCun para liderar o departamento de inteligência articial da empresa – parece que ainda há muita coisa interessante por esperar.

Mais sobre análise de dados do Facebook neste blog, aqui (analise seus próprios dados) e aqui (descubra características  da pessoa – como a orientação sexual – com base no que ela curte).

Analise a pesquisa mensal de emprego com R


Mais um post no excelente analyze survey data for free, agora com a PME.

Parabéns ao Anthony Damico e ao Djalma Pessoa pela iniciativa!

 

benford.analysis 0.1


O pacote benford.analysis (versão 0.1) está disponível no CRAN e você já pode instalar no R com o comando:

 install.packages("benford.analysis") 

O objetivo do pacote é prover algumas funções que facilitem a validação de dados utilizando a Lei de Benford (para saber mais sobre a lei, veja aqui e aqui).

Validar como e para quê?

Um dos objetivos pode ser o auxilío na detecção de manipulações contábeis. Dados financeiros (como pagamentos) tendem a seguir a Lei de Benford e tentativas de manipulação podem acabar sendo identificadas.

Por exemplo, a lei 8.666/93 estabelece que o limite para se fazer uma licitação na modalidade convite é de R$80.000,00. Será que os valores de licitações seguiriam a Lei de Benford? Pode ser que sim. E, caso haja a tendência, uma tentativa de manipular artificialmente valores licitados para algo pouco abaixo de R$80 mil geraria um “excesso” de dígitos iniciais 7. Restaria verificar uma amostra desses registros para confirmar a existência ou não de manipulação indevida.

Outro objetivo pode ser acadêmico: a validação de dados de pesquisas e censos. Por exemplo, dados de população de municípios, ou dados de renda dos indivíduos tendem a ter distribuição conforme a lei de Benford. Assim, desvios dos valores observados em relação aos valores esperados podem ajudar a identificar e corrigir dados anômalos, melhorando a qualidade da estatística.

Vejamos rapidamente alguns exemplos das funções básicas do pacote.

O benford.analysis tem 6 bases de dados reais, retiradas do livro do Mark Nigrini, para ilustrar as análises. Aqui vamos utilizar 189.470 registros de pagamentos de uma empresa no ano de 2010. Os valores vão desde lançamentos negativos (estornos) até valores na ordem de milhões de dólares.

Primeiramente, precisamos carregar o pacote (se você já o tiver instalado) e em seguida carregar os dados de exemplo:

library(benford.analysis) #carrega pacote

data(corporate.payment) #carrega dados

Para analisar os dados contra a lei de benford, basta aplicar a função benford nos valores que, no nosso caso, estão na coluna ‘Amount’.

 bfd.cp <- benford(corporate.payment$Amount)

Com o comando acima criamos um objeto chamado “bfd.cp” contendo os resultados da análise para os dois primeiros dígitos dos lançamentos positivos, que é o padrão. Caso queira, você também pode mudar quantos digitos deseja analisar, ou se quer analisar os dados negativos e positivos juntos, entre outras opções Para mais detalhes, veja a ajuda da função:

 ?benford

Com a análise feita, vejamos os principais gráficos com o comando:

 plot(bfd.cp) 

Os gráficos resultantes se encontram abaixo. Os dados da empresa estão em azul e os valores esperados pela lei de benford em vermelho.

plot_cp

O primeiro gráfico diz respeito à contagem de observações com relação aos seus dois primeiros dígitos, comparando-a com o valor esperado pela Lei de Benford.  Percebe-se que os dados da empresa se ajustam à Lei, mas, também, que há um salto claro no dígito 50!

O segundo gráfico é análogo ao primeiro, mas faz esta contagem para a diferença dos dados ordenados. Como nossos dados são discretos, este saltos em 10, 20, 30,  são naturais e não devem ser encarados como algo suspeito. Por fim, o terceiro gráfico tem um objetivo diferente e, em geral, você também não deve esperar encontrar um bom ajuste dos dados à reta vermelha, principalmente com dados de cauda pesada. Ali se encontra a soma dos valores das observações agrupadas por primeiros dígitos e a  intenção é identificar grupos de valores influentes (que, se estiverem errados, podem afetar bastante uma estatística).

Vejamos agora os principais resultados da análise com o comando

 print(bfd.cp) 

ou somente

bfd.cp

results_cp

Primeiramente são mostrados dados gerais da análise, como o nome da base de dados, o número de observações e a quantidade de primeiros dígitos analisados.

Logo em seguida têm-se as principais estatísticas da mantissa do log das observações. Se um conjunto de dados segue a lei de benford esses valores deveriam ser próximos de:

  • média: 0.5;
  • variância: 1/12 (0.08333…);
  • curtose: 1.2;
  • assimetria: 0.

Que são, de fato, similares aos dados de pagamento da empresa, confirmando a tendência.

Após isso, temos um ranking com os 5 maiores desvios, que é o que mais nos interessa aqui. Veja que o primeiro grupo é o dos números que começam com o dígito 50, como estava claro no gráfico, e o segundo grupo é o dos números que começam com 11. Esses registros são bons candidatos para uma análise mais minuciosa.

Por fim, temos um conjunto de estatísticas de grau de ajuste – que não irei detalhar agora para não prolongar muito este post. Tomemos como exemplo o teste de Pearson, que é bem conhecido. Veja que o p-valor do qui-quadrado é praticamente zero, sinalizando um desvio em relação ao esperado. Mas, como já dissemos várias vezes neste blog, o mais importante não é saber se os dados seguem ou não a lei de benford exatamente. Para isso você não precisaria sequer testá-los. O mais importante é verificar qual o tamanho do desvio e a sua importância prática. Assim, há um pequeno aviso ao final: Real data will never conform perfectly to Benford’s Law. You should not focus on p-values!

Voltando, portanto, à identificação dos desvios, você pode pegar os conjuntos dos dados “suspeitos” para análise com a função getSuspects.

 suspeitos <- getSuspects(bfd.cp, corporate.payment)

Isto irá gerar uma tabela com os dados dos 2 grupos de dígitos com maior discrepância (pela diferença absoluta), conforme ilustrado abaixo. Veja que são exatamente os dados que começam com 50 ou 11. Você pode personalizar qual a métrica de discrepância utilizar e também quantos grupos analisar. Para mais detalhes veja a ajuda da função:

 ?getSuspects

suspects

Note que nossa base de dados é de mais de 189 mil observações. Verificar todos os dados seria infactível. Poderíamos analisar uma amostra aleatória desses dados. Mas, não necessariamente isso seria eficiente.  Veja, assim, que a análise de benford, com apenas os dois primeiros dígitos, nos deu um grupo de dados suspeitos com menos de 10% das observações, permitindo um foco mais restrito e talvez mais efetivo para análise.

Há outras funcionalidades no pacote e na ajuda há exemplos com dados reais. O pacote é bem simples, o intuito é fornecer um mínimo de funções que automatize os procedimentos, facilite a vida e minimize a quantidade de caracteres digitados de quem queira fazer a análise. Algumas funcionalidades que serão adicionadas no futuro são: melhoria na parte gráfica com o Lattice, inclusão de comparação dos dados com a lognormal e inclusão de mais dados de exemplo.

Se encotrar algum bug, tiver alguma dúvida ou se quiser deixar alguma sugestão, comente aqui!

PS: com relação às sugestões, tanto o R quanto este pacote são livres e com código aberto. Então, sinta-se à vontade não somente para sugerir, mas principalmente para escrever novas funções e funcionalidades!

Estatísticas de homicídio – mais sobre erro de medida.


Qual foi a quantidade de homicídios no EUA em 2010? Três medidas diferentes, com 25% de diferença entre a maior e menor.

12,966, FBI, Crime in the United States 2010.

13,164, FBI, Crime in the United States 2011 (2010 figure).

14,720, Bureau of Justice Statistics (Table 1, based on FBI, Supplementary Homicide Statistics).

16,259, CDC (based on death certificates in the National Vital Statistics System). 

Veja mais no Marginal Revolution.

Para saber mais sobre o assunto, veja no blog também  aqui aqui ,aquiaqui, aqui e aqui.

 

Nova base de dados de séries de tempo


Há pouco tempo surgiu uma nova base de dados de série de tempos – Quandl.

Além de agrupar diversas estatísticas de fontes diferentes, o site permite baixar os dados em vários formatos (como excel ou csv) e ainda permite importação de dados diretamente em várias ferramentas de análise, como R e Python. Isso é uma mão na roda em muitos casos.

Outra possibilidade no Quandl é a de incorporar gráficos diretamente nos posts, tal como o exemplo abaixo com a evolução do IPCA acumulado em 12 meses.

Graph of IPCA - Acumulado em 12 meses

Apesar da ressalva de ser uma fonte secundária de informações, para quem ainda não conhecia, certamente vale a pena conferir.

Sobre a acurácia das variáveis econômicas III


Em posts anteriores falamos sobre a qualidade dos dados macroeconômicos e que dados oficiais são estimativas (ver aqui e aqui). Mas, qual o sentido prático disto? Vejamos com um exemplo.

Na conta de importação de serviços do balanço de pagamentos do México, fretes e seguros respondem por US$ 9,8 bilhões, cerca de 33% dos US$ 29 bilhões que totalizam a rubrica – trata-se de seu componente mais relevante. Como o México estima esse valor?

Antes de entrar no caso do México, tratemos brevemente dos meios de estimação mais comuns de fretes e seguros entre os países. O primeiro método é por meio dos valores declarados na aduana. Quando esta tem um campo de fretes e seguros discriminados em algum documento administrativo, é possível ao compilador utilizar estes valores para a estimação. Um segundo método é utilizar alguma proporção das importações ou exportações. Muitas vezes, a aduana do país registra apenas o valor CIF das importações, isto é, o valor com os custos de fretes e seguros incluídos. Deste modo, o compilador realiza uma pesquisa a cada 5 ou 10 anos, por exemplo, para estimar qual é a proporção do valor importado que corresponde a fretes e seguros.

É possível que você tenha pensado: “o primeiro método, com os dados da aduana, não deveria ser considerado uma estimativa, é o valor real!”. Mas não é. Voltemos ao México.

O México é um país que poderia se enquadrar no primeiro caso – sua aduana registra valores de fretes e seguros. Contudo, os pagamentos de fretes e seguros relatados em uma operação da aduana correspondem à importação de uma ampla gama de produtos, de diferentes naturezas e de vários países, tudo consolidado em um único documento. A regulamentação aduaneira tem suas próprias peculiaridades, não necessariamente relacionadas às informações que desejariam os compiladores da estatística. Ao fim, os dados da aduana lhes pareciam muito imprecisos, subestimados e demasiadamente agregados.

Com isto em mente, o Banxico buscou metodologia alternativa. Sua intenção era calcular o valor ao custo real de mercado e, assim, buscou preços no país vizinho, os Estados Unidos, que publicam, mensalmente, dados de custo médio dos fretes e seguros de importação por tipo de produto, país de origem e meio de transporte. Entretanto, o custo médio varia bastante por volume importado, e é preciso realizar este ajuste. Assim, roda-se uma regressão deste custo médio contra dummies dos portos dos EUA (pois cada porto pode ter um custo diferente) e volume importado (em log), para encontrar o coeficiente de ajuste entre volume e custo médio, chamado aqui de beta. Com o custo médio, o beta para ajuste e o volume das importações mexicanas em mãos , é possível estimar os custos de fretes e seguros do país. Atualizam-se o beta anualmente e o preço médio mensalmente sendo possível, deste modo, obter estimativas por produto, país e meio de transporte, que variam conforme condições de mercado, algo que não seria factível com os dados administrativos da aduana.

Mas, qual a diferença deste valor com o anterior, da aduana? O novo método estima custos cerca de duas vezes maiores e isso pareceu mais alinhado à realidade de mercado do que os dados anteriormente declarados. É uma diferença bem significativa.

Portanto, é importante atentar-se para dois detalhes: (i) dados que, a primeira vista, poderiam ser considerados “os valores reais” (dados de questionários, formulários administrativos, etc), podem ter problemas e estar tão sujeitos a erros quanto outros procedimentos; (ii) muitos componentes dos dados macroeconômicos que você utiliza, tal como a conta de fretes e seguros do exemplo acima, são derivados de um processo de estimação prévia. No nosso exemplo, seja o dado administrativo, ou o dado derivado pela outra metodologia, fica claro que ambos têm que ser vistos como estimativas, cada método com suas vantagens e limitações, sendo preciso entendê-las para saber o que aquele dado pode ou não pode te responder. 

Estatística no Google


Jeff Leek do Simply Statistics trouxe uma entrevista bacana com Nick Chamandy, um estatístico do Google.

Destaque para a parte em que ele diz que, na maioria dos casos, o estatístico que trabalha no Google não é somente responsável por fazer as análises, mas também por coletar e tratar os dados brutos.

In the vast majority of cases, the statistician pulls his or her own data — this is an important part of the Google statistician culture. It is not purely a question of self-sufficiency. There is a strong belief that without becoming intimate with the raw data structure, and the many considerations involved in filtering, cleaning, and aggregating the data, the statistician can never truly hope to have a complete understanding of the data. For massive and complex data, there are sometimes as many subtleties in whittling down to the right data set as there are in choosing or implementing the right analysis procedure

Esta é uma reflexão importante, principalmente para os (macro)economistas, que dependem em grande medida de dados de terceiros e podem acabar não tendo intimidade com a produção dos dados e o grau de acurácia das medidas.

PS.: o Google realmente parece ser a empresa dos sonhos para quem quer conciliar teoria e prática. Além da entrevista acima, veja Hal Varian aplicando teoria dos jogos na prática aqui.