Valores de aluguel em Brasília (plano piloto)


Está pesquisando apartamento para alugar em Brasília?  Um pouco de web scrapingmanipulação e visualização de dados com os valores (de oferta) dos aluguéis de 1.030 imóveis (Asa Sul, Asa Norte e Sudoeste) do site wimoveis pode ajudar a responder algumas perguntas interessantes.

A primeira delas: qual o bairro mais caro para se alugar, hoje, no plano piloto? Esta é uma pergunta que, veremos, depende do ponto de vista. Veja a tabela abaixo (versão ampliada aqui). M2 quer dizer metro quadrado e pm2 preço por metro quadrado.

Captura de Tela 2014-01-30 às 00.08.44

Na média e mediana – em conformidade com a impressão pessoal de muitos – a Asa Sul é o bairro mais caro para se alugar dos três. Entretanto, note que isso ocorre porque há mais apartamentos maiores para aluguel na Asa Sul, e não porque o valor por metro quadrado é mais caro. Na verdade, o valor por metro quadrado, na média, é maior na Asa Norte e, na mediana, maior no Sudoeste.

Podemos agora decompor a tabela acima não somente por bairro, mas por bairro e número de quartos (versão ampliada aqui) . Na média, o bairro mais barato/caro para morar não é o mesmo a depender de quantos cômodos você quer no apartamento. E, uma curiosidade: na amostra, a média do tamanho dos apartamentos da Asa Norte, em todos os grupos de números de quartos, é menor do que a média do tamanho da Asa Sul.

tabela_wi_2014_01_24

Uma última forma de visualizar as diferenças de preços pode ser com um gráfico de densidade (versão ampliada aqui):

teste

Veja que o pico do Sudoeste (em verde) é em valores mais altos do que na Asa Norte e na Asa Sul. Entretanto, a Asa Sul tem a “cauda” mais pesada em valores próximos a R$ 5.000.

Uma outra pergunta que podemos tentar responder é a seguinte: dos anúncios que temos hoje, na média, os preços daqueles atualizados em 2014 são maiores do que aqueles cuja última atualização foi feita em dezembro de 2013? Pelo quadro abaixo (versão ampliada aqui), infelizmente, sim, e por mais ou menos RS$100,00.

Captura de Tela 2014-01-30 às 00.24.58

E como é a concentração da oferta dos anúncios por corretora? A distribuição de anúncios por imobiliária é homogênea? 

Aparentemente, não. Veja o gráfico abaixo (versão ampliada aqui).

corretoras

Enquanto algumas imobiliárias têm 30 a 40 apartamentos listados, muitas outras têm apenas 1 ou 5.

Isso quer dizer que os anúncios são concentrados? Não necessariamente. Note que apesar de a distribuição de anúncios não ser homogênea, a concorrência é bem grande, e usando como exemplo o índice de Herfindahl–Hirschman chegamos a um valor de 0.013, comumente considerado indicador de alta competitividade.

Há mais que poderíamos ver sobre aluguel. Mas deixemos para depois.  No próximo (em algum próximo) post veremos os dados de valor de venda!

PS: iremos acompanhar regularmente esses preços. E não somente para Brasília. Uma área específica do blog será criada para isso. 

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.

 

Benford Analysis R Package


Em post anterior falamos sobre a Lei de Benford e que ela pode ser utilizada para o auxílio na detecção de fraudes contábeis ou dados estranhos. Também explicamos por que ela surge – resumidamente, pode-se dizer que números que tenham crescimento exponencial, ou que sejam derivados da multiplicação de outros números, tenderiam à lei de Benford – e isto abrange muitos dados econômicos.

Além da Lei de Benford, temos falado bastante sobre o R por aqui. Então, que tal unirmos as duas coisas? Bem, em alguns dias, com o pacote benford.analysis, você poderá analisar facilmente e rapidamente (espero!) seus dados contra a lei de Benford para identificar possíveis erros.

A idéia do pacote é tornar a análise algo rápido e simples. Por exemplo, o gráfico abaixo é gerado com apenas dois comandos: bfd <- benford(dados) e plot(bfd).

Plot BenfordVamos ver se vai ficar bacana.

Atualização: a versão 0.1 está no CRAN.

Statistics – Globo News style


Tem circulado pelo facebook (aqui e aqui) uma tela que aparentemente foi veiculada no programa Conta Corrente, da Globo News, com o seguinte gráfico:

Alguém vai ser demitido.

Com 5,91% maior do que 6,5%, acho que alguém está prestes a ser demitido!

PS: veja mais exemplos como esse aquiaqui  e aqui.

Analisando microdados do IBGE com o R


Os materiais do Seminário de Metodologia do IBGE de 2013 estão disponíveis para download. Dentre eles, destaco o do mini-curso Introdução à análise de dados amostrais complexos. Lá você vai aprender a replicar os resultados da POF, da PNAD e amostra do Censo levando em conta o desenho amostral das pesquisas (que é necessário para se calcular corretamente medidas de precisão, como a variância). O material é bastante focado no blog de Anthony Damico, Analyze Survey Data for Free. O blog é fantástico, com diversos exemplos de como baixar e analisar dados de pesquisas públicas levando em conta o plano amostral, tudo com ferramentas gratuitas como o R.

Concentração do Investimento Brasileiro no Exterior e erro de medida


Já que falamos do CBE no post anterior, aproveito para destacar outro dado daquela pesquisa, que muitas vezes passa despercebido: a concentração do Investimento Brasileiro Direto (IBD) no exterior em poucos investidores. Na publicação dos resultados, os declarantes foram separados pelo tamanho de seu investimento, como, por exemplo, investidores que possuem investimentos no exterior de até US$ 1 milhão (a menor categoria) ou investidores que possuem investimentos no exterior maiores do que US$1 bilhão (a maior categoria).

No quadro 2 da publicação, você encontrará a seguinte distribuição, reproduzida no gráfico abaixo (agrupei as duas últimas categorias do quadro). Em vermelho, você tem o percentual de investidores que se encontram naquela faixa de investimento – perceba que quase 70% dos declarantes do CBE têm um investimento menor ou igual a  US$ 1 milhão e que apenas 0,3% dos declarantes possuem investimentos maiores do que US$500 milhões. Já em azul, você encontra o quanto cada uma dessas categorias responde pelo valor total declarado. Note que 0,3% dos declarantes respondem por cerca de 70% dos 356 bilhões de dólares que o Brasil possuía investidos no exterior.

Concentracao IBD

Em outras palavras, a distribuição do IBD tem cauda bastante pesada – poucas observações respondem pela quase totalidade do valor. Além de ilustrar  o grau de concentração deste tipo de investimento , isto tem uma implicação importante com relação ao (provável) erro de medida, e consequentemente, na incerteza dessas estatísticas.

Para tanto, vejamos o quadro 7, que é análogo ao quadro 2, mas faz a separação apenas para a modalidade de IBD participação no capital. Pelo quadro, 32 declarantes respondem por US$ 158 bilhões do estoque total, isto dá, na média, cerca de US$ 5 bilhões por declarante. Agora veja a distribuição da mesma modalidade por país (quadro 3). Em 2012, o maior estoque de IBD participação no capital, segundo o quadro 3 do CBE, estava na Áustria, com cerca de US$ 57 bilhões. Este valor, então, decresce exponencialmente, sendo a média por país mais ou menos US$ 6 bilhões e a mediana US$ 1 bilhão. Perceba que, caso apenas um dos grandes declarantes esteja classificado de forma errada – e considerando, conservadoramente, o valor médio do grupo – no melhor cenário, se o erro for na Áustria, isso responde por 10% do total estimado para aquele país; se for em um país de IBD médio, isso responde por um erro de 83%; e se for em um país de IBD mediano, o valor do erro é cinco vezes maior do que o valor estimado!

Então se, por um lado, o fato de a distribuição estar concentrada em poucos investidores reduz o número de declarantes que o Banco Central precisa investigar para validar grande parte do valor total declarado, por outro, o impacto de apenas um registro errado pode ser bastante significativo. Note a diferença deste tipo de estatística, para, por exemplo, a estimativa da expectativa de vida média do brasileiro – neste caso, vários registros errados dificilmente alterariam o valor médio de forma substancial.

Para finalizar,  uma curiosidade. Veja abaixo os gráficos do logaritmo do valor do investimento (X) contra o logaritmo da probabilidade de o investidor ter investimentos maiores do que X (a linha preta é reta de regressão). Lembra o gráfico de um lei de potência, não?

CBE_ConcentracaoMais sobre este tipo de assunto neste blog aqui.

 

Em que países os brasileiros investem?


No post anterior vimos quais países tem investimento direto no Brasil (pelo critério de país de origem imediata).

Agora, que tal visualisarmos em que países os brasileiros investem?

Para tanto, podemos pegar os dados da pesquisa de Capitais Brasileiros no Exterior. Tal qual criança quando ganha um brinquedo novo, vamos lá brincar no R mais uma vez. Abaixo, mapa com a distribuição do Investimento Brasileiro Direto (IBD), participação no capital, conforme país de destino imediato, em 2012.

IBD_pais

PS: encontrei o pdf do Applied Spatial Data Analysis with R,  então esperem mais posts deste tipo.

Investimento Estrangeiro Direto no Brasil (mapa por País de Origem Imediata)


Que tal visualizar os dados do Censo de Capitais Estrangeiros de uma maneira diferente?

Abaixo, mapa com a distribuição do Investimento Estrangeiro Direto (IED) no Brasil, critério participação no capital, em 2010, segundo o país de origem imediata. O mapa foi feito no R. Quanto mais escuro, maior o investimento daquele país em empresas brasileiras.
IED_Pais

PS: agradeço ao Rogério pelo didático post ensinando o caminho das pedras.

Você é obeso… mas não é gordo 2! Ou, mais sobre p-valores.


Já falamos que os p-valores não podem ser interpretados como uma medida absoluta de evidência, como comumente costumam ser. Entre algumas interpretações recorrentes, por exemplo, vale mencionar alguns cuidados:

  • se para um certo conjunto de dados, uma hipótese A (e uma estatística calculada sob A) gera um p-valor de 1% e outra hipótese B (e uma estatística calculada sob B) gera um p-valor de 10%, isto não necessariamente quer dizer que os dados trazem mais evidência contra A do que contra B. Até porque rejeitar A pode implicar, logicamente, na rejeição de B.
  • se para um certo conjunto de dados, uma hipótese A (e uma estatística calculada sob A) gera um p-valor menor que 5%, isto não necessariamente é evidência contra A.
  • se um estudo sobre a hipótese A resulta em p-valor menor do que 5% e outro estudo gera um p-valor maior do que 5%, isto não necessariamente quer dizer que os estudos apresentam resultados contraditórios.

Dentre outras questões.

Mas o que essas coisas querem realmente dizer? Muitas vezes é difícil entender o conceito sem exemplos (e gráficos) e é isso que pretendemos trazer hoje aqui. Vamos tratar do primeiro ponto listado, uma questão que, muitas vezes, pode confundir o usuário do p-valor: o p-valor pode apresentar evidências de que alguém seja obeso e, ao mesmo tempo, evidências de que este alguém não seja gordo, caso você, por descuido, tome o p-valor como uma medida absoluta de evidência e leve suas hipóteses nulas ao pé da letra. O exemplo abaixo foi retirado do artigo do Alexandre Patriota (versão publicada aqui).

Considere duas amostras aleatórias, com 100 observações cada, de distribuição normal com médias desconhecidas e variância igual 1.  Suponha que as médias amostrais calculadas nas duas amostras tenham sido x1=0.14 e x2=-0.16 e que você queira testar a hipótese nula de que ambas as médias populacionais sejam iguais a zero.

A estatística para esta hipótese é n*(x1^2+x2^2), e o valor obtido na amostra é  100*(0.14^2+(-0.16)^2)=4.52. A distribuição desta estatística, sob a hipótese nula, é uma qui-quadrado com 2 graus de liberdade, o que te dá um p-valor de 10%. Assim, se você segue o padrão da literatura aplicada, como o p-valor é maior do que 5%, você dirá que aceita (ou que não rejeita) a hipótese nula de que as médias sejam iguais a zero.

Agora suponha que outro pesquisador teste, com os mesmos dados, a hipótese de que as médias populacionas sejam iguais a si. Para esta hipótese, a estatística seria (n/2)*(x1 – x2)^2, e o valor obtido na amostra é  (100/2)*(0.14+0.16)^2= 4.5. A distribuição desta estatística sob a hipótese nula é uma qui-quadrado com 1 grau de liberdade, o que te dá um p-valor de 3%.  Caso o pesquisador siga o padrão da literatura aplicada, como o p-valor é menor do que 5% (o tão esperado *), ele dirá que rejeita a hipótese de que as médias sejam iguais.

Mas, espere um momento. Ao concluir que as médias não são iguais, logicamente  também se deve concluir que ambas não sejam iguais a zero! Com os mesmos dados, se forem testadas hipóteses diferentes, e se os resultados forem interpretados conforme faz a maior parte da literatura aplicada (que é uma interpretação bastante frágil), você chegará a conclusões aparentemente contraditórias!

Como o p-valor traz “mais evidência” contra a hipótese  de que as médias seja iguais do que contra a hipótese de que ambas sejam iguais a zero, tendo em vista que se rejeitarmos a primeira, logicamente temos que rejeitar a segunda? O que está acontecendo?

Para entender melhor, lembremos o que é o p-valor. O p-valor calcula a probabilidade de a estatística de teste ser tão grande, ou maior, do que a estatística de teste observada. Intuitivamente, o p-valor tenta responder a seguinte pergunta:  se eu adotasse esta discrepância observada como evidência suficiente para rejeitar a hipótese nula, quantas vezes este teste me levaria a erroneamente rejeitar esta hipótese quando ela é de fato verdadeira. Isto é, o p-valor leva em consideração em seu cálculo todos aqueles resultados amostrais que gerariam estatísticas tão extremas quanto a observada, que poderiam ter ocorrido mas não ocorreram.

Repare como calculamos a estatística 1 e note o termo (x1^2+x2^2). Percebe-se que a estatística se torna mais extrema cada vez que o ponto (x1, x2) se distancia de (0,0) – em qualquer direção. Isto é, ela cresce com relação à distância euclidiana de (x1,x2) em relação ao ponto (0,0). Talvez isso seja mais fácil de entender com imagens. No gráfico abaixo, quanto mais escura a cor, maior é o valor da estatística de teste.

dist_eucl_cont

Já na estatística 2, perceba que o termo principal é (x1 – x2)^2, e o que se mede é a distância do ponto em relação à curva x1=x2. Isto é, a distância absoluta de x1 em relação a x2. Vejamos as curvas de nível. Note que ao longo da curva há diversas regiões em branco, mesmo quando distantes do ponto (0,0), pois o que a estatística mede é a distância entre os pontos x1 e x2 entre si.

dist_abs_cont

Agora deve ficar mais fácil de entender o que está acontecendo. O p-valor calcula a probabilidade de encontrar uma estatística tão grande ou maior do que a observada. Ao calcular (x1 – x2)^2, todos os pontos que são distantes de (0,0), mas são próximos entre si, não geram estatísticas extremas. Como uma imagem vale mais do que mil palavras, façamos mais uma. No gráfico abaixo,  os pontos pretos são todos aqueles cuja estatística de teste supera a estatística observada (0.14, -0.16). Já os pontos azuis e vermelhos são todos os pontos que tem uma estatística de teste maior do que a observada, medidos pela distância euclidiana em relação à reta x1=x2.

contraste-p-valorNote que vários pontos pretos que se encontram “longe” de (0,0) não são nem vermelhos nem azuis, pois estão “pertos” da reta x1=x2. Fica claro, portanto, porque o p-valor da segunda estatística é menor. Isso ocorre porque resultados extremos que discordariam bastante de (0,0) – como (0.2, 0.2) ou (0.3, 0.3) – não são considerados em seu cálculo. Note que é possível obter um p-valor ainda menor (1,6%) testanto a hipóse de que média 1 seja menor ou igual à média 2. E se a média 1 não é menor ou igual a média 2, isso implica que elas não são iguais a si, e que também não são ambas iguais a zero. É importante ter claro também que todas as estatísticas são derivadas pelo mesmo método – razão de verossimilhanças – e possuem propriedades ótimas, não são estatísticas geradas ad-hoc para provocar um resultado contra-intutivo.

Para não alongar muito este post, frise-se que o que deve ser tirado como lição principal é que o p-valor não é uma medida absoluta de suporte à hipótese que está sendo testada. Mas como interpretar melhor os resultados acima? Caso você queira continuar no âmbito frequentista, algumas medidas seriam, por exemplo, não considerar literalmente as hipóteses nulas (isto é, não rejeitar ou aceitar uma hipótese precisa como x1=x2 ou x1=x2=0), avaliar que discrepâncias em relação à hipótese nula são ou não relevantes (do ponto de vista científico, e não estatístico) e conferir a função poder e intervalos de confiança para algumas alternativas de interesse.  Trataremos disso mais a frente (caso vocês ainda não tenham enjoado do assunto!).