Dados do Bolsa Família

Muito se falou sobre o Bolsa Família esse ano, principalmente depois do [apertado] resultado das eleições, criticando o governo por "dar o peixe ao invés de ensinar a pescar" ou até mesmo acusando de compra de votos com dinheiro público. Mas você já parou para analisar os dados do Bolsa Família? Pois é o que vamos fazer nessa postagem!

O governo federal divulga, através do Portal da Transparência, os dados do CADÚnico (Cadastro único para programa sociais do governo federal) e a folha de pagamento do Bolsa Família, nome a nome, mês a mês. Com esses dados em mãos, a primeira pergunta foi: quanto custou o Bolsa Família? De janeiro a novembro de 2014, cerca de R$ 24.8 bilhões foram transferidos diretamente as famílias de baixa renda, pouco mais de R$ 2 bilhões por mês. Para termos dados mais detalhados, precisamos baixar a folha de pagamento de um específico mês. Por ser o mais recente, utilizei os dados de novembro e foram considerados somente os saques referentes à competência de novembro (quando o valor não é sacado, ele pode ser sacado nos meses seguintes)

StackExchange

Sabe aquela dúvida que você tem sobre um determinado assunto, mas que nunca conseguiu sanar? Talvez o StackExchange seja a solução! O StackExchange é uma rede de sites onde os usuários podem fazer e responder perguntas. Os usuários que fizerem boas perguntas ou darem boas respostas são 'premiados' com pontos conforme vão recebendo votos dos usuários, e esses votos são os critério de ordenamento das respostas. Além da pontuação, o usuário que fez a pergunta pode escolher uma resposta como a correta (ou a melhor), que ficará destacada. E a gama de assuntos é bem variada, como por exemplo sustentabilidade, jardinagem até cerveja.

E o motivo de estar postando isso no blog? É que existem vários desses que podem ajudar estatísticos. Por exemplo, o StackOverflow - o primeiro site da rede - é voltado para programação e possui a label R (e para quem não domina o inglês, existe uma versão em português!). Há também um específico para estatística e outro para LaTeX. O campo para fazer a pergunta permite, além da inclusão de imagens e formatação de códigos, que se utilize LaTeX para escrever fórmulas, facilitando bastante a resolução da dúvidas matemáticas/estatísticas. Agora não tem mais desculpa para ficar com aquela dúvida!

Cores nos gráficos do R

Muitas vezes queremos demonstrar mais de um objeto em um gráfico e, para isso, recorremos à cores diferentes. Quando são poucos elementos fica fácil escolher as cores, geralmente ficamos com 'black', 'red', 'green' e 'blue'. Mas e quando queremos mais cores, ou até mesmo, sair da mesmice? O R, geralmente, permite dois tipos de entrada de cor: RGB em hexadecimal e através do nome das cores.



Ao total, o R possui 657 cores pré-definidas (isso é, com algum nome) que podem ser vistas através do comando colours(). Para facilitar na decisão da cor, fiz a função abaixo que nos auxiliar na hora de escolher quais cores iremos usar. Após colar a função no R, basta chamar ela (cores()), clicar nas cores desejadas e, ao fim, fechar a janela (se não fechar ou apertar 'Esc', o console permanecerá bloqueado). Os nomes das cores clicadas apareceram no console.

Input manual de dados no R

Vamos utilizar um editor, como a vizualização de folha de dados do excel para inputar nossos dados ao R.

dados <- data.frame(Idade=numeric(0), Sexo=character(0), Peso=numeric(0))
dados <- edit(dados)



Após entrar com todos os dados que necessitar, podemos simplesmente fechar o editor e teremos um data.frame salvo na variável dados =)

Depois de fechar o editor podemos chamar a variável dados e vamos obter o seguinte resultado.

Bom essa é a dica, bem simples e rápida.

Ordenando o gráfico de barras no ggplot

Anteriormente já abordamos dois posts sobre o ggplot: o primeiro deles falava sobre a personalização das escalas dos eixos e outro sobre como fazer gráficos múltiplos no ggplot. Hoje vamos continuar abordando o tema e o post será sobre a ordenação do gráfico de barras. Naturalmente a ordem das barras é controlada através de fatores, que são uma estrutura de dados utilizada para representar categorias - que é diferente do caractere.

Sobre a ordenação das barras existem algumas boas práticas a serem seguidas. As barras devem ser ordenadas de ordem alfabética, por valor ou seguindo alguma sequência, de forma a manter algum significado e não deixar o leitor perdido. Mas como devemos fazer para ordenar as barras de forma crescente? O exemplo a seguir faz um gráfico de barras ordenado para a variável cyl, do conjunto de dados mtcars.

library(ggplot2)
mtcars$cyl = factor(mtcars$cyl, levels=names(sort(table(mtcars$cyl), decreasing=TRUE)))

g = ggplot(mtcars, aes(x=cyl))
g + geom_bar()

O código é bem simples, e o que ele faz é calcular a frequência de cada categoria, ordenar e na hora de transformar em fator, forçar a ordem da ordenação das frequências. Esta receita é rápida e simples, e o resultado analítico é interessante, uma vez que a forma padrão do ggplot ordenar as barras é pela ordem alfabética. O resultado segue abaixo.



Fazendo múltiplos gráficos com o ggplot2

Fazer múltiplos gráficos de acordo com o nível de uma ou mais variáveis categóricas no ggplot2 é fácil: basta utilizar as funções facet_grid ou facet_wrap. Com essas funções, tudo que você fizer para um gráfico valerá para todos (tema, títulos, rótulos dos eixos). E nos casos que eu preciso gráficos independentes - não só com configurações diferentes, mas também gráficos de tipos diferentes - como faço?

Alterando a escala dos eixos no ggplot2

Muitas vezes precisamos mexer na escala de um gráfico - seja para mais ou para menos. No pacote base é bastante fácil fazer isso, as principais funções gráficas possuem os parâmetros xlim e ylim para informarmos os limites dos eixos. O pacote ggplot2 até apresenta as funções xlim e ylim, mas elas não funcionam exatamente igual aos parâmetros do pacote base. A diferença está que, além de alterar os limites do gráfico, ele descarta todos os dados que estão fora desse intervalo.

Em gráficos simples (como um gráfico de dispersão), isso não é nenhum problema, mas nos mais complexos eles já começam a aparecer. Por exemplo, ao mudar a escala de um boxplot para retirar os outliers da área do gráfico utilizando o ylim, todas as estatísticas (1°, 2° e 3° quartis) serão recalculadas somente com os valores dentro do intervalo, podendo assim alterar (mesmo que pouco) o gráfico. Outro exemplo é nos modelos de regressão, que será estimado utilizando somente os dados no intervalo informado.

Para solucionar esse problema devemos utilizar a função coord_cartesian e os parâmetros xlim e ylim, que funcionam da mesma maneira que os do pacote base, como podemos ver nos gráficos abaixo.


Profissão: Estatístico

Na maioria das vezes que eu dizia que ia cursar (ou que estava cursando) estatística eu via 2 reações: ou as pessoas achavam que era uma área do curso de matemática ("Ah, matemática, legal!") ou se diziam surpresas por ter um curso somente para estatística (afinal de contas, eles veem 'toda' estatística em 2 cadeiras). Eu sabia que era um curso pouco concorrido, mas será que é tão pouco conhecido? Esses dias resolvi ir atrás de estatísticas a respeito dos estatísticos.

O primeiro dado que procurei foi quantos estatísticos existem no Brasil. Infelizmente não encontrei nenhuma estatística de formaturas no INEP e nem o CONFE possui em seu site a quantidade de estatísticos registrados. Para tentar encontrar um valor aproximado recorri a duas fontes diferentes: IBGE e MTE (Ministério do Trabalho e Emprego).

Facilitando a criação de posters/banners com LaTeX.

Muitas vezes quando precisamos expor nossos estudos e análises, precisamos fazer em forma de poster ou banner para apresentações em congressos e eventos.
E nem sempre está é uma tarefa fácil, mas vamos tentar simplificar utilizando o LaTeX com o pacote baposter, que é um pacote bem simples porém com opções visuais bem bacanas.
Nesse primeiro momento vamos colocar um exemplo prático de um banner utilizando o baposter como vamos ver abaixo

Criando classes de objetos e métodos

Muitos dos objetos que manuseamos no R possuem mais informações do que costumamos ver. Por exemplo, em uma regressão linear tudo que o R mostra são os coeficientes do modelo e o comando utilizado, mas ao utilizarmos o comando str() vemos que na verdade o resultado é uma lista com pelo menos 12 elementos (sendo que alguns elementos também são listas). Então, o que diferencia essa lista das listas criadas pelo list()? A resposta é simples: a sua classe.

Algumas vezes criamos funções que não retornam apenas o resultado desejado, mas também informações adicionais, que podem ou não vierem a serem úteis mais para frente. Essas informações nem sempre são interessantes de serem exibidas ao darmos print no resultado. Voltamos ao exemplo da regressão linear: um dos elementos da lista resultante são os resíduos do modelo, informação extremamente importante para analisar a adequabilidade do modelo, mas que não acrescenta nada se for exibido junto com o modelo (a menos que você seja capaz de realizar a análise residual de olho...) e por isso eles são omitidos na hora da exibição do modelo. Mas como fazer isso para a minha função? A resposta também é simples: crie uma classe e métodos próprio.


Programando no R com Notepad++

Dentre os vários editores de código existentes (aqui tem uma lista com 10), o que escolhi utilizar foi o Notepad++. Antes dele, utilizava o tradicional bloco de notas do Windows e fui bastante resistente em abandonar ele, trocando apenas quando meus códigos começaram a ficar grandes. Com o tempo fui descobrindo as funcionalidades dele, como a indentação em bloco, a identificação dos pares de {} e () - o que me fez abandonar o bloco de notas - e a busca e substituição por expressões regulares. O Notepad++ também colore o código de acordo com a linguagem informada, reconhecendo as principais funções do R. Mas ainda faltava algo: uma lista com as funções e parâmetros do R. Faltava, pois não falta mais.

Quanto é 0.1 + 0.2 ?

Antes de mais nada, acho que qualquer um irá concordar que 0.1 + 0.2 = 0.3. Respondemos a essa pergunta trivialmente, sem pensar duas vezes. Bom, o R também responde a essa pergunta sem a menor das dúvidas.

> 0.1 + 0.2
[1] .3

Sendo assim, se fizermos o teste lógico para ver se 0.1 + 0.2 é igual a 0.3, também já sabemos que será verdadeiro.

> (0.1 + 0.2) == .3
[1] FALSE

Surpreendentemente, o teste dá falso. Isso significa então que o R possui um erro de operação tosco ao ponto de invalidar todos os resultados que eu puder gerar algum dia? Certamente não.

O que acontece aqui é que ao converter o número 0.1 para a base binária a representação deste número passa a ser uma dízima periódica (para ser mais exato 0.0001100110011001100110011001100110011001100110011...) então em algum ponto tem que acontecer um arredondamento. Na verdade outras linguagens são mais sinceras com este resultado. Vejamos o caso de Python, Julia e o próprio R, alterando o número de casas decimais.

In [1]: .1 + .2
Out[1]: 0.30000000000000004

julia> .1 + .2
0.30000000000000004

> print(.1 + .2, digits=20)
[1] 0.30000000000000004441

Comparado a outras linguagens, a diferença aqui fica por conta de que no R o resultado não é explicitamente exibido. Mas é claro que, apesar de não ser igual, a precisão é suficientemente boa.

Medindo a semelhança (ou diferença) entre duas palavras distintas

Há quem diga que, caso existam opções de não se trabalhar com strings, deve-se optar por estas escolhas. Como problemas podemos citar falta de estruturas/padrões a serem seguidos, difícil manipulação, erros de tabulação e por aí vai. Sim, é uma lista grande. Porém existem alguns algoritmos que prometem acabar com algumas destas dificuldades (ou ao menos tornar o problema um pouco mais simples, pelo menos ao ponto de ser trabalhável) e hoje falaremos de um deles, que é o cálculo da distância de edição ou distância de Levenshtein.

Uma aplicação imediata da solução proposta é aplicável ao problema de correção ortográfica. Imagine que você conheça todo o vocabulário de palavras possíveis a serem reportadas na sua aplicação - não é um pressuposto absurdo, uma vez que você pode estar trabalhando em um nicho específico, como por exemplo os nomes de todas as ruas de um determinado bairro ou o nome de todas as empresas cadastradas em algum tipo de sistema - então sua aplicação receberá uma palavra qualquer(w) e irá procurar no vocabulário se esta palavra existe. Se não existir, basta calcular a distância de edição para cada uma das outras palavras e pronto, você terá a recomendação de uma possível palavra para aquela que inicialmente foi escrita errada. Para as aplicações que suportam respostas livres mas que não é possível contar com um vocabulário para consulta, pode-se pegar as palavras que aparecem com baixa frequência e tentar uma aproximação da mesma forma, pois espera-se que uma palavra escrita errada não aparecerá muitas vezes, ao menos não com a mesma grafia. Agora precisamos saber o que é exatamente a distância de edição e como podemos calculá-la.

Visualizando grandes bancos de dados

Já comentamos aqui no blog a importância da visualização dos dados antes de se fazer qualquer análise. Entretanto, nem sempre essa visualização é trivial, seja pelo grande número de variáveis ou pelo grande número de observações. Ao dar plot() em um data.frame com n variáveis, o R gera n² gráficos de dispersão de todas combinações das variáveis. Apesar de ser prático e funcional para variáveis contínuas, ele fica devendo uma maneira funcional de visualizar as variáveis categóricas. O pacote tabplot veio para resolver esse problema

Importando dados do clipboard (área de transferência)

Hoje vamos com uma dica rápida e que pode ser útil em algumas situações onde estamos com pressa. Vamos imaginar que temos a seguinte planilha em algum formato qualquer, como por exemplo "xls".

Gênero   Porte      Salário
"F"           "P"       "5732.45"
"M"          "P"       "3327.05"
"M"          "M"       "2488.7"
"M"          "G"       "3182.89"
"F"           "G"       "4203.08"
"F"           "P"       "13576.38"
"M"          "M"       "6842.34"
"M"          "P"       "5380.48"
"F"           "G"       "6870.55"
"F"           "M"       "1547.23"
"F"           "G"       "5732.45"

Bom agora pense nas maneiras que você conhece para importar estes dados.

Nesse momento vamos mostrar uma maneira bem esperta de se fazer isto, vamos usar o comando read.delim.

Vamos copiar (Control + C) os dados da planilha e com o comando:

read.delim("clipboard",dec=",",header=T)


E assim já temos os dados no R para utilizar como desejar.
Espero que seja útil e até a próxima.

Participação nas eleições de 2010

Todo ano eleitoral é a mesma coisa: partidos/candidatos tentando convencer que são melhores que os adversários, seja mostrando seus projetos/feitos ou criticando os dos adversários. E as pessoas mais politizadas repassando para todos a informação, tentando angariar mais votos para o seu candidato. Mas como será que é a taxa de participação dos brasileiros nas eleições?

Para responder a pergunta, usarei os dados do Repositório de dados eleitorais do TSE. Neste repositório podemos encontrar 10 bancos de dados com informações de eleitorado, candidatos, resultados e prestação de conta dos candidatos. Também utilizarei as tabelas já prontas das Estatísticas Eleitorais, uma vez que nem todos os dados da eleição presidencial de 2010 estão disponíveis.

Trabalhando com amostras complexas no R: usando o pacote survey

Ao contrário da amostra aleatória simples, nos planos amostrais complexos as unidades amostrais (geralmente, pessoas) possuem probabilidades diferentes de serem amostradas quando comparadas com outras unidades amostrais e, devido a isso, todas as análises realizadas sobre amostras complexas devem levar em consideração a probabilidade de cada um dos indivíduos amostrados. Nessa postagem, mostrarei como utilizar o pacote survey, que permite a realização de inferências e análises em amostras complexas. Para tal, utilizarei os dados da amostra do Censo de 2010.

Interagindo com o usuário no R

A interação com o usuário é fundamental em diversos processos, e pode ocorrer de muitas maneiras: desde uma simples janela de Continuar/Parar até a seleção de diversos valores em uma lista. Nessa postagem vou mostrar algumas das principais possibilidades de interagir com os usuários.

Usando o github para hospedar códigos R

Versionamento de arquivos é uma prática comum entre desenvolvedores de software, e a prática não é difícil de entender. Uma vez que existe uma equipe com muitas pessoas trabalhando em um mesmo projeto, necessita-se de algum tipo de sistema de gerenciamento de arquivos para checar as modificações de uma forma minimamente esperta, caso contrário seria uma verdadeira desordem duas pessoas trabalhem em cima de um mesmo arquivo.

Pode-se argumentar que não é necessária a utilização de uma ferramente de versionamento de arquivos uma vez que podemos utilizar o Dropbox, por exemplo. Porém na maioria dos casos esta prática não é nem um pouco recomendada, em especial pelo fato de não armazenar um histórico de versões/modificações e a impossibilidade de alterações simultâneas em um mesmo arquivo. Neste sentido surgem os denominados sistemas de versionamento de arquivos. E existem muitos deles, cada um com seus pontos positivos e negativo. Como algumas opções podemos citar o CVSSVN e o Git.

Git é um sistema de versão baseado na ideia de que em cada instante de tempo que você faz um contribuição, você tem um snapshot dos seus arquivos, e no próximo snapshot, você não terá arquivos novos, mas sim modificações dos arquivos já existentes. E isso faz com que a ferramenta seja extremamente eficiente, computacionalmente falando. Para usarmos o Git, precisamos de algum serviço de hospedagem, e neste caso, utilizaremos o Github. E o primeiro passo é criar uma conta, o segundo é baixar alguma versão que satisfaça seu sistema operacional.

Microdados da RAIS

Dando início à minha série de postagens aqui no Dados Aleatórios, irei falar sobre os microdados da RAIS - Relação Anual de Informações Sociais - disponibilizados pelo Ministério do Trabalho e Emprego. A RAIS é, como o nome já diz, uma relação de informações que todo empregador é obrigado a informar anualmente sobre os seus trabalhadores do ano base (ou seja, inclui quem foi demitido). Essas informações vão desde informações trabalhistas (tempo de serviço, salário recebido, motivos de licenças/demissão, entre outras) até informações pessoais (idade, escolaridade, raça/cor).


A equipe SAS lançará versão gratuita.

O grupo SAS vai lançar a partir de Maio de 2014 (isso mesmo, no próximo mês) uma versão totalmente free destinada ao estudantes e professores universitários.

Essa é uma ótima oportunidade para todos poderem ter acesso a um dos software mais usados no mercado e sem custo.

A nova versão gratuita, diferente da já existente, pode ser utilizada localmente no seu PC e não apenas online com a limitação de espaço da versão Ondemand.

SAS University Edition dará acesso a vários produtos básicos, incluindo SAS Base, SAS/STAT, SAS/ACCESS para formatos de arquivos de PC e software SAS/IML.

De fato, a versão OnDemand ainda nos dar acesso a mais produtos podemos ver uma comparação entre as versões aqui.

E não para por ai eles vão lançar junto com SAS University Edition, uma comunidade para interação dos seus usuários. A comunidade online do SAS University será uma importante ferramenta para auxiliar os estudantes.

Será que fará frente aos software de códigos abertos que a comunidade acadêmica tanto usa?
Vamos esperar para ver!

Review do livro Social Media Mining with R

Introdução


Mídias sociais são o verdadeiro assunto do momento. Se antes a informação era centralizada por veículos de comunicação, hoje a coisa é um pouco diferente, seja por desconfiança da população nos veículos mais tradicionais ou pela velocidade com que as coisas acontecem e são passadas aos leitores. Logo percebeu-se a complexidade e riqueza das informações geradas pelas mídias sociais - livre, independente e rápida - e a real necessidade de utilizar métodos computacionais e estatísticos para analisar tais informações. Mas é claro que realizar tal atividade não é trivial, uma vez que a informação tende a ser não estruturada e com bastante ruído. Neste contexto, o livro é apresentado, focando especialmente na ideia de minerar opiniões de mídias sociais com a utilização das seguintes metodologias: Polarização com base em dicionários, classificador de Naive Bayes e por último Teoria de Resposta ao Item aplicado a análise de sentimentos. 


Pontos Positivos

Fácil leitura
O assunto sobre mídias sociais é apresentado lentamente e de uma forma bem agradável. Seja para quem desconhece totalmente o assunto ou para quem não tem experiência com o R - existe um capítulo introdutório que apresenta tudo que é necessário ao desenrolar do livro.  

Boa contextualização
Em todo momento, os autores Nathan Danneman e Richard Heimann se preocupam com a contextualização do problema ao tentar alertar ao leitor dos pontos positivos e negativos sobre o conteúdo disponível em mídias sociais, assim como as dificuldades associadas a cada uma das metodologias apresentadas.

Estudos de casos
O livro conta com um capítulo dedicado exclusivamente a aplicar cada uma das metodologias apresentadas, e é claro que a modelagem é apenas um detalhe. Assim podemos acompanhar todo o raciocínio de analisar um conjunto de dados não estruturado, começando pelas dificuldades envolvidas já no pré-processamento até a modelagem e sua validação. A discussão em torno dos modelos é interessante e gera uma ansiedade sobre qual será o próximo passo a ser tomado. 

Pontos Negativos

Curto demais
No total o livro conta com apenas 122 páginas, o que é pouca coisa, dado a complexidade do tema proposto. Só para lembrar, no livro são abordados os temas de mídias sociais, metodologias que podem ser aplicadas a mineração de opiniões e  o uso do software R.

Pouco apelo matemático
Geralmente o problema é o contrário, devido a quantidade de equações e definições, perde-se o entendimento sobre a essência do livro, mas aqui este foi um fato bem incômodo. Em todo o livro, uma única equação é apresentada, o que dá a entender que a metodologia já deveria ser de domínio do leitor.

Conclusão

Para os iniciantes o livro mostra-se uma boa opção introdutória. Todo o contexto, impacto e possibilidades existentes nas mídias sociais são apresentados. As metodologias são exploradas a passos curtos e as conclusões surgem de forma natural ao caminhar do livro. Porém o livro peca um pouco na baixa formalização matemática, apesar de avaliar qualitativamente muito bem os modelos. Para quem possui interesse no assunto, é um bom investimento inicial.


Como a Visualização de Dados pode nos ajudar?

Vivemos um momento em que nunca produzimos tanta informação. Há quem afirme que nos últimos dois anos produziu-se mais informação do que em toda a história da humanidade. Para ter noção da dimensão da coisa não é necessária uma situação complexa, basta parar e pensar na quantidade de dados gerados por você mesmo a cada dia. Vamos tentar: Acordo às 7:00h, 8:15h eu saio de casa, compro o jornal, pego um ônibus e pago com o Rio Card - provavelmente isto registra o horário que peguei o ônibus e quantas vezes faço com aquela linha - ,  acesso meus e-mails, rede social e se for quinta-feira pode ser que eu vá ao cinema. Praticamente tudo que fazemos pode virar uma informação no final, e esta pode ser consumida e utilizada - contra ou favor de você .

E é claro, que deve-se lembrar também que visualizar dados não é uma tarefa nova, existem relatos de que as visualizações mais populares - gráficos de barras e linhas - que temos foram originadas no século XVIII. Então por qual motivo deveríamos conhecer mais sobre visualização de dados? O motivo é simples, já que o nosso apetite para consumir estes dados nunca foi maior então é razoável pensar que precisamos ser mais efetivos e eficientes na forma como estes dados são comunicados.

Através da visualização podemos descrever os dados de uma forma que nos permita ver aqueles dados de um outro ponto de vista, observar padrões, exceções e possíveis histórias ocultas, ali nos dados originais e sequer sabermos disso. 

Uma importante contribuição para o campo da visualização da informação foi feita por Francis Anscombe (que pasmem, era cunhado do Tukey) em 1970. O que Anscombe fez foi apresentar o que foi chamado de o Quarteto de Anscombe, que eram 4 conjuntos de dados com propriedades estatísticas exatamente iguais.  

Prefeitura do Rio lança portal sobre dados abertos

Foi lançado pela Prefeitura do Rio de Janeiro um portal sobre dados abertos e segundo o site são disponibilizados mais de 1200 arquivos com informações sobre a cidade. O portal é dividido nas seguintes áreas: Central 1746, Administração Pública, Desenvolvimento Social, Educação, Entretenimento, Esportes, Impostos e Taxas, Meio Ambiente, Receita e Despesa, Saúde, Transporte e Mobilidade, Turismo e Urbanismo. E não podemos esquecer que os dados podem ser utilizados e redistribuídos livremente por qualquer pessoa.

Apesar de ter o objetivo de oferecer dados para desenvolvedores de softwares, temos certeza de que esta é uma fonte inesgotável de diversas aplicações envolvendo análise de dados e pesquisas, de forma geral. 

Não perca tempo e acesse logo, o link da página é http://data.rio.rj.gov.br/ . Ah, é claro que nós do Dados Aleatórios já estamos planejando algumas análises destes dados. Porém qualquer sugestão seria extremamente bem-vinda.

Aprendendo a usar o argumento '...' no R

A utilização do parâmetro '...' é algo que sempre me gera dúvidas, pois sempre me questiono por qual motivo ninguém nunca me falou sobre antes. Esta foi uma das minhas recentes descobertas no R e ajudou a entender muitas coisas que até então passavam despercebidas. Caso você seja um usuário recorrente da linguagem, bem provavelmente vai entender do que estou falando, afinal quem nunca topou com o argumento '...' ao ler o help de uma função qualquer? 

Acontece que ao criar uma função você pode definir um argumento que será passado como argumento para outra função a ser chamada. Por exemplo, vamos supor que você tenha uma função que pode fazer duas coisas: Se o número de observações for maior que 30, faz um histograma, caso contrário faz um boxplot. Então o código para esta função poderia ser o seguinte:

Quer aprender a programar em python? Veja aqui 8 dicas que irão lhe ajudar

Python é uma linguagem de programação muito utilizada por todo o mundo devido a sua simplicidade e apesar de ser interpretada, apresenta um bom desempenho, sendo utilizada amplamente tanto no meio científico quanto no profissional. Não tem como foco um nicho específico, servindo assim para absolutamente qualquer coisa. Como características podemos citar os fatos de que é uma linguagem de alto nível, funcional e orientada a objetos. 


Esquecendo o PDD e aprendendo a debugar

Já faz algum tempo em que eu via as pessoas programaram em C++ com a utilização do Visual Studio, famosa IDE da Microsoft. Nesta época eu tinha a tarefa de transcrever algumas metodologias estatística em pseudo-código para que as mesmas fossem implementadas por algum desenvolvedor em C++. Até aí nada demais, mas volta e meia o código quebrava e lá começava-se o ciclo vicioso na procura de onde estava o erro - e um detalhe importante: o código era complexo, grande parte das ferramentas tinham sido implementadas - e pensando assim, achar onde estava o erro seria um verdadeiro pesadelo.

Porém o Visual Studio contava com uma ferramenta bem conhecida já por desenvolvedores, e pouco aproveitada pelos usuários um pouco menos hardcores, que é o modo debug. Lá funcionava da seguinte forma: O desenvolvedor escolhia alguns pontos onde ele desejava explorar o valor de variáveis locais e mandava o programa executar, então com isso ele seria possível executar linha a linha em tempo real explorando cada uma daquelas variáveis que estavam sendo criada ou alteradas. E isto era simplesmente fantástico !

R é a 15ª linguagem mais utilizada, segundo RedMonk

Segundo o ranking publicado pela RedMonk, a linguagem R ocupa a 15ª posição entre as mais utilizadas. O ranking é baseado na popularidade das linguagens em dois sites: Stackoverflow e Github. O primeiro é um site de dúvidas muito popular com uma comunidade extremamente ativa (acredite, é extremamente) e o segundo é provavelmnte o repositório de códigos mais popular do momento. Segundo os analistas da própria RedMonk, a escolha por estas duas comunidades como base para o ranking é simples: O tamanho da comunidade e transparência sobre números que a envolvem.

Afinal, quanto ganha um cientista de dados?

Foi publicado pela O'Reilly um relatório sobre o salário e ferramentas mais utilizadas pelos cientistas de dados. A pesquisa aconteceu entre 2012 e 2013 durante o Strata Conference, que é uma conferência realizada pela própria O'Reilly sobre Data Science. No total, pessoas de 33 países responderam a pesquisa, contemplando todos os setores profissionais, desde o governamental até o setor privado. O objetivo da pesquisa era entender melhor quais ferramentas os cientistas de dados utilizam e como as mesmas se correlacionam com o salário recebido e apesar de nem todos afirmarem trabalhar diretamente com análise de dados, quase todos afirmaram estar exposto a este ambiente. Alguns resultados seguem abaixo:
  • A ferramenta mais utilizada de longe foi SQL. No total, 71% dos respondentes afirmaram utilizar a ferramenta de banco de dados.
  • A segunda e terceira ferramentas mais utilizadas foram respectivamente R e Python. O agradável ambiente estatístico R ficou com 43% do total e a verdadeira linguagem serve-para-tudo Python ficou com 40% do total. 
  • Os salários são correlacionados positivamente com o número de ferramentas utilizadas. Enquanto que os indivíduos que afirmaram usar até 10 ferramentas possuem um salário anual mediano de $100.000, os que afirmaram utilizar mais de 15 ferramentas possuem um salário anual mediano de $130.000.
  • Foram encontrados 2 clusters de ferramentas utilizadas. Um composto de ferramentas open source (R, Python, Hadoop e mais algumas ferramentas de machine learning) e outro composto de ferramentas comerciais (Excel, SAS, Tableau e Oracle RDB).
  • Indivíduos que afirmaram utilizar mais ferramentas do grupo open source possuem um salário maior que os indíviduos que afirmaram utilizar mais ferramentas do grupo comercial.
  • Ferramentas open source (como Python e R) são tão importantes quanto (ou até mais) que ferramentas tradicionais como SAS e Excel.
  •  A utilização de ferramentas feitas com foco no big data como por exemplo MapR, Cassandra, Hive, MongoDB, Apache Hadoop e Cloudera também está correlacionada com salários maiores. 

apply, lapply, sapply, tapply, mapply.. Como é que é mesmo?

Acredito que a esta altura do campeonato todos já devem se questionar sobre a performance do R. Existe um Carma que é carregado de que não é eficiente em termos de gerenciamento de memória e velocidade. Tudo bem, temos que cofessar que estes itens não podem ser classificados como os pontos fortes da linguagem, porém nem tudo está perdido e dependendo da situação, contorná-la pode ser mais simples do que parece, em especial quando o assunto é velocidade.

Escrever loops da forma tradicional pode ser uma verdadeira tortura, tanto para o usuário quanto para o computador. Se você já tentou aninhar mais de 3 for's sabe do que estou falando. Claro que não existe uma ferramenta mágica que vai fazer com que seu loop passe de 2 horas paras 5 segundos, porém com as metafunções da família apply muita coisa pode ser melhorada. As funções da família apply são um conjunto muito poderoso de funções que sob certas condições permitem a aplicação de outras funções em objetos do R .  

Entendendo as diferentes mensagens de aviso no R

Comumente ao utilizar funções escritas por terceiros no ambiente R, algumas mensagens de aviso podem ser exibidas com o objetivo de alertar sobre algum acontecimento interno daquela função. Suponha que você tenha criado uma função que calcula o logaritmo de um número em uma determinada base. Caso o usuário passe algum número que seja menor que 0, algo de estranho tem de acontecer, afinal não existe o logaritmo de números negativos e estar atento a estas mensagens pode ser uma importante tarefa de alerta na utilização do R no dia a dia. Aqui vamos explorar essas mensagens tentando mostrar algumas dicas para tentar solucionar o problema de quando alguma mensagem for exibida. Os diferentes tipos de mensagem exibidos pelo R são: message. warning, error e condition.

message: Este tipo de mensagem é uma notificação produzida pela função message e não é considerado nem um warning nem um error. Tem o objetivo de servir apenas como mensagens de diagnóstico e sendo assim, a execução da função continua normalmente.

warning: Uma mensagem de notificação onde algo aconteceu de forma inesperada, porém não afetou a execução da função. Geralmente acontece pelo fato da função esperar uma coisa e receber outra coisa. Não é exatamente um problema, porém resultados inesperados podem acontecer. São gerados pela função warning.

error: O erro é uma mensagem que é exibida na ocorrência de um problema crítico. A execução da função é parada automaticamente e uma mensagem de erro é exibida. São gerados pela função stop.

condition: São mecanismos que permitem tratar condições não usuais. A criação de condições é feita pelo próprio usuário e tem o objetivo de lidar com as situações não esperadas que podem acontecer. São gerados pela função TryCatch.

Caso esteja tentando utilizar uma função - ou criando a sua própria - e ela estiver dando erros, algumas dicas podem ajudar a solucionar o problema. Um dos problemas mais comuns é chamar a função com argumentos que não são compatíveis com a função. Se você está utilizando uma função que recebe como argumentos uma lista e um número, então não adianta passar nada que não seja uma lista e um número que a função não será executada com sucesso, caso não tenha definido isto anteriormente. Outra dica é observar o resultado real e o esperado e refletir por quais razões eles foram diferentes. E por último é ver se você realmente é capaz de reproduzir o problema, pois algumas vezes a falha está justamente no real entendimento do problema. 

Ferramentas para criação de tabelas LaTex a partir do R

Sair do ambiente R para exportar resultados e tabelas nem sempre é uma tarefa fácil, em especial quando deseja-se exportar estes resultados para o ambiente LaTex. O motivo é simples de ser entendido, afinal nem nem sempre os resultados possuem uma estrutura simples e como acontece, as vezes este é demasiadamente grande. Neste post, vamos discutir algumas soluções para tornar esta tarefa mais simples e é claro, mais divertida. Além disso, vamos ilustrar exemplos da utilização de tais pacotes.

Enviando mensagens automáticas para o seu amigo oculto

O mês de Dezembro passou, e como de costume aconteceram as tão esperadas festas. Comidas, bebidas, confraternizações e é claro, não poderia faltar a tão esperada brincadeira de amigo oculto. Comumente já é difícil decidir uma data que consiga agradar a todos, então reunir todos apenas para a realização do sorteio é praticamente impossível. Neste contexto surgiram algumas possibilidade para evitar este problema, que nada mais é que fazer a realização do sorteio em algum ambiente online, cada um dos participantes se cadastra em um site, que realiza o sorteio e envia os resultados por e-mail. 

Simples assim.

Este ano o site escolhido para realizar tal façanha foi o amigosecreto.com.br . O site dispões de algumas ferramentas bem interessantes, como por exemplo a possibilidade de enviar mensagens de forma anônima. E entre essas possibilidades você pode enviar uma mensagem para quem te tirou, para quem você tirou ou simplesmente qualquer um do grupo. Feito o sorteio, lá estava o resultado. Tirei uma pessoa bem próxima de mim.