Tuesday, November 10, 2015

Bigdata no PollingData: Tabela FIPE + Webmotors

Algumas semanas atrás tive que comprar um carro. Não sou muito antenado com relação a carros, sei apenas quanto quero gastar e algumas características de interesse como ser um semi-novo, ter um motor potente e uma quilometragem aceitável. Fiquei bastante frustrado quando percebi que a única forma de pesquisar o valor dos carros na tabela da Fipe era selecionando uma Marca/Modelo especifica. Pra mim seria bem mais útil se pudesse selecionar todos os carros numa faixa de preço e/ou até um determinado ano.

Pra solucionar esse problema, acessei a todos os dados da Fipe utilizando uma api bem eficiente que encontrei online. Escrevi um programa no R que baixa a tabela completa da Fipe, converte os dados de JSON para um dataframe, e disponibilizei no PollingData. A interface com o usuário foi feita essencialmente utilizando apenas o DataTables, que é um plug-in para JQuery bastante flexível.

Além disso, também senti muita falta de poder ajustar o preço do carro de acordo com a quilometragem. Acabei comprando o carro sem ter uma estimativa confiável do seu valor em função da sua quilometragem. Depois de comprar o carro, fiquei pensando sobre isso: qual seria um jeito simples porém eficiente de obter essa estimativa? A minha solução envolveu Big Data. Escrevi um outro programa, utilizando técnicas de web scrapping, que acessou todos os veículos anunciados na WebMotors no dia 04/11/2015 (foram mais de 128 mil carros). 

Extrai todas as informações disponíveis na página de busca, principalmente preço, ano carro/modelo e quilometragem. Calculei duas estatísticas que considero importante ter em mente quando for comprar um carro (rule's of thumb):
  • A média de uso dos carros (quilometragem) é aproximadamente de 1000 km/mês.  Com essa   estatística é possível avaliar se um carro é mais/menos utilizado do que o esperado para o seu ano.
  • A quilometragem reduz o preço do carro, na media, em R$1 para cada 5 km rodados. Com essa estatística é possível fazer uma conta simples pra prever o valor do carro a partir dos dados da Fipe.
Focando no objetivo principal, a característica mais importante que observei foi que o impacto da quilometragem no preço não é linear. Esse impacto é muito maior quanto o carro é novo / semi-novo. Quando o carro é mais velho, a redução no preço é bem menos acentuada. Pensando nisso, ajustei um modelo de regressão simples para prever essa redução:
  1.  A variável dependente utilizada foi a variação relativa no preço do carro se comparado com a média dos outros carros de mesma Marca/Modelo.
  2.  Além de incluir quilometragem e idade (+ idade ^2) do carro, inclui outras variáveis dependentes: UF , Tipo de câmbio, Origem do carro na WebMotors (loja, concessionária e particular) e motor.
Ajustei o modelo dessa forma por dois motivos principais: em primeiro lugar, me parece razoável supor que um carro mais caro possa sofrer um impacto maior no seu preço por causa da quilometragem do que um carro mais barato. Em segundo lugar, dessa forma retiro o efeito de variáveis que não serão usadas para escorar a base da Fipe (Motor e cambio poderiam ser utilizadas, porém ainda não estão sendo). 

Claro que existem muitas melhorias possíveis para esse modelo, mas isso requer tempo. Por enquanto, esse modelo é bem parcimonioso e relativamente preciso. Acredito que a melhoria mais importante do modelo seria permitir que carros com uma quilometragem abaixo da média do seu ano pudessem ter um preço mais alto do que a tabela da Fipe. Por enquanto, estou tratando o valor da Fipe como sendo o valor máximo do carro, mas seria mais realista considerá-lo como de fato é: uma média.

Não sei quão útil esse modelo será para as pessoas, acho que muitos escolhem carros com mais emoção do que razão, mas fica aqui uma alternativa para quem quer trocar de carro com menos incerteza. O modelo da Fipe+WebMotos do PollingData está no menu Modelos/Models > FIPE+WebMotors.

No comments:

Post a Comment