Category

Hackeando o R

Afinal, o que é Probabilidade?

By | Hackeando o R

Infelizmente não possuímos uma bola de cristal de forma que possamos prever o futuro, e por isso, sempre há uma incerteza em relação a um resultado. Entretanto, apesar de ser extremamente difícil ter 100% de certeza, podemos quantificar essa incerteza, e pelo menos, haver a possibilidade de acertar um certo nível de um resultado. No post de hoje explicamos o que é probabilidade e o seu papel na Análise de Dados.

Antes de introduzir o conceito da probabilidade, devemos entender o conceito de aleatoriedade. A grosso modo, algo é aleatório quando sabemos que haverá um resultado, porém, não sabemos qual será o valor deste resultado, ou seja, segue uma distribuição de probabilidade e não um valor determinístico.

Podemos utilizar o velho exemplo dos dados de seis lados. Se jogarmos o dado, saberemos que o resultado será entre um a seis, porém, não sabemos qual será o seu valor. Essas possibilidade de resultados do dado (um a seis) é chamado de Espaço Amostral. Cada lado desse dado representa uma fração da possibilidade do resultado, sendo sua soma igual a 1 (100%).

Se a probabilidade depende do número de casos favoráveis de cair um lado do dado e do número do casos possíveis, então podemos definir pela equação da probabilidade teórica.

     $$P(evento) = \frac{n°de casos que podem ocorrer}{total de resultados possíveis}$$

No caso do dado, qual a probabilidade de cair no número dois? Obviamente 1/6.

Construímos um tibble com os valores do dado, e "jogamos" ele com a função sample_n

A função set.seed permite que possamos obter o mesmo resultado sempre. Útil para reprodutibilidade e comunicação dos resultados.

E se estivermos jogando um jogo em que não possamos tirar o mesmo lado novamente? Devemos então levar em conta a amostra sem reposição.

Caso não houvesse esta regra, poderíamos rodar o dado novamente com reposição, utilizando o argumento replace = TRUE na função.

Isto nos ajuda a entender o conceito de Independência de eventos, que no caso, aplica-se a rodar o dado com reposição, isto porque, rodar o dado na primeira vez não afeta o resultado da probabilidade na segunda. O que não podemos dizer sobre o caso de rodar o dado sem reposição, o que leva a termo eventos dependentes.

Distribuição de probabilidades

Uma distribuição de probabilidades é uma lista dos possíveis resultados que um evento pode ter, e como cada resultado é comum entre si. Elencaremos duas formas de distribuição de probabilidade: Discreta e Contínua

Discreta

Uma distribuição é considerada discreta quando seus números são contagens em formato de inteiros. Em relação ao dado, sua distribuição segue como discreta devido ao fato de que, teoricamente, seus resultados possuem a mesma probabilidade (1/6).

Contínua

Uma distribuição é considerada contínua quando o resultado pode ser qualquer valor entre dois outros valores. Uma importante distribuição contínua pode ser representada pela distribuição normal, muito famosa pelo seu formato de sino. Esta distribuição, construída por um histograma, possui uma forma simétrica e o seu centro equivale a sua média.

Podemos gerar uma distribuição normal utilizando a função rnorm.

Veja que o histograma acima não representa fielmente a distribuição normal perfeitamente, porém, se adicionarmos cada vez mais valores, poderemos ver que a distribuição cada vez mais se aproxima de uma normal.

Isso ocorre devido ao que é conhecido como Teorema Central do Limite, que permite dizer que quanto maior a amostra, mais a distribuição dos dados se tornam normais e próximas da média.

____________________________________________

Quer saber mais?

Veja nossos cursos de R e Python aplicados para a Análise de Dados e Economia

O que é Análise Exploratória de Dados?

By | Hackeando o R

Nunca saberemos o que dizem os dados se nunca os analisarmos, este é o princípio da Análise Exploratória de Dados. A AED potencializa a pesquisa com dados, permitindo que analistas consigam entender o que de fato o conjunto de dados descreve. No post de hoje, introduzimos o conceito de AED e demonstramos um exemplo com o R.

O que é AED?

Como dito, a AED é um conjunto de métodos que o analista utiliza para descrever um determinado conjunto de dados, permitindo compreender o comportamento de diversas variáveis. Permite também solidificar uma base para criar hipóteses e modelos preditivos/causais.

Apesar de crucial, a AED causa dificuldades naqueles que querem entrar no mundo dos dados, e o motivo é simples: cada conjunto de dados se comporta de uma forma, portanto, apesar de uma metodologia, cada "ferramenta" da metodologia se encaixa melhor em determinado dataset, enquanto em outros não, portanto, saber diferenciar quais "ferramentas" devem ser utilizadas é parte de um conhecimento analítico e crítico.

Mas afinal, qual metodologia é essa ? De quais formas podemos "entrevistar" nossos dados e retirar insights? Os meios mais importantes são:

  • Classificar as variáveis em categóricas ou quantitativas;
  • Sumarizar os dados utilizando estatísticas descritivas;
  • Visualizar os dados utilizando gráficos.

Como dito, cada um desse processo pode haver inúmeras ferramentas, cada qual se encaixa melhor para um conjunto de dados em específico. Iremos realizar um exercício tomando como base o dataset peguins do pacote {palmerpenguins}, que possui dados de medidas dos corpos de pinguins, por espécies, por sexo e por ilha em Palmer Station na Antárctica.  Explicaremos como podemos ler o dataset, bem como cada qual ferramenta podemos utilizar inserido no contexto de cada processo acima.

Antes de começar a AED, precisamos olhar nosso conjunto de dados e assegurar que eles devem ter os seguintes requisitos: deve seguir uma forma retangular/tabular de colunas e linhas; cada linha deve representar uma observação; cada coluna representa uma variável. Abaixo, carregamos o pacote e vemos como é o dataset penguins.

Veja que o dataset segue uma forma retangular com colunas e linhas, o que facilita o uso da linguagem e de outro softwares para realizar uma análise dos dados. Como dito, chamamos a colunas de variáveis e linhas de observações, e qual o significado disto?

Observações remetem uma única observação do dataset e suas características, desde indivíduos, tempo, país e no caso do dataset acima, uma amostra sobre as informações de pinguins em Palmer Station, com um total de 334 linhas.

As características destes pinguins são representadas pelas colunas, chamadas de variáveis. Ocorre uma variação de cada observação ao longo das linhas, portanto, as variáveis provêm informações preciosas sobre algo. Há 8 variáveis no dataset penguins.

Cada variável possui um tipo diferente, e que para cada tipo existe uma ferramenta adequada para a análise. A classificação destas variáveis é realizada de forma relativamente arbitrária, com um certo padrão na escolha destes tipos. Elas podem ser:

  • Categóricas: Assume valores que dizem respeito sobre a qualidade ou característica de cada observação.  Os valores são não numéricos, como strings (caracteres) ou lógicos. É subdividido em binário, nominal e ordinal.
    • Binário: Assume apenas dois valores, normalmente como sim ou não; True ou False; 0 ou 1 ou qualquer outra característica de dois valores;
    • Nominal: Valores qualitativos que assumem mais de dois valores, como país, nome, espécie do pinguim, etc.
    • Ordinal: Valores qualitativos que assumem mais de dois valores e também possuem uma ordem intrínseca, como pequeno, médio, grande, dias da semana e etc.
  • Quantitativas: variáveis quantitativas são valores numéricos que dizem respeito a grandeza de uma variável. Assumem valores contínuos ou discretos.
    • Contínuo: em teoria, assumem uma distância não padrão entre uma observação e outra, bem como essa distância pode ser um número infinito de possíveis valores.
    • Discreto: assumem apenas valores fixos entre duas observações.

Classificação de variáveis

Vemos no dataset qual variável se encaixa melhor em cada classificação, remetemos novamente ao quadro anterior, e utilizamos a função glimpse() para entender como o R reconhece as variáveis. Veja que não é difícil tirar conclusões sobre.

  1. species (fct) - categóricos - nominal: Espécie do pinguim
  2. island (fct) - categórico - nominal: Ilha do pinguim
  3. bill_length_mm (double) - quantitativo - continuo: comprimento do cúlmen
  4. bill_depth_mm (double)  - quantitativo - continuo: profundidade do cúlmen
  5. flipper_length_mm - (integer) - quantitativo  - contínuo: comprimento da nadadeira
  6. body_mass_g (integer) - quantitativo - contínuo: massa corporal
  7. sex (fct) - categórico - binário: Sexo do Pinguim
  8. year (integer) - categórico - ordinal:  Ano

Explorando: variáveis categóricas

Antes de explorar os dados, devemos primeiro realizar uma pergunta a nós mesmos: o que eu quero analisar? De fato, podemos simplesmente realizar visualizações e construir estatísticas descritivas com todas as variáveis, mas antes, realizar a definição de uma pergunta sobre o que analisar facilita a direção do trabalho.

Com isso, podemos realizar a pergunta: Qual a distribuição de pinguins por espécies em cada ilha? E o sexo? Podemos explorar as variáveis categóricas a fim de obter as respostas.

As variáveis categóricas devem ser exploradas em formato de contagem, afinal, como não são numéricas não podemos utilizar de medidas estatísticas diretamente. Utilizamos a função count() do pacote {dplyr} para realizar o cálculo.

Em poucas linhas obtivemos os resultado das perguntas criadas acima. O interessante do count() é que é também útil para alegar um problema constante na AED: valores faltantes no dataset.  Não iremos lidar diretamente com este problema aqui, porém, tomaremos cuidado com eles na análise.

Outro método mais amigável para investigar variáveis categóricas é através da visualização. Utilizaremos o pacote ggplot2 para gerar um gráfico de barras, que é uma das melhores ferramentas para averiguar a distribuição dos dados categóricos.



Interessante, não? Podemos partir para como lidar com as variáveis quantitativas.

Explorando variáveis quantitativas

Será que pinguins de diferentes ilhas possuem tamanhos de bicos muito diferentes? Qual espécie possui, em média, uma massa corporal maior? Aqui podemos utilizar diretamente de medidas estatísticas. Para as perguntas, podemos realizar uma combinação da função group_by() para agrupar por categóricas, e em seguida utilizar a função summarise() para aplicar o cálculo de uma medida estatística para cada grupo.

Veja que ambas as perguntas foram respondidas, uma por meio do desvio padrão e outro por meio da média. Com cada resposta seria possível realizar ainda mais perguntas sobre os dados, como: A variação do comprimento do bico em cada ilha ocorre devido as distribuição de espécies por ilha? Além da espécie, é necessário levar em conta a distribuição do sexo de penguim por espécie para tirar conclusões sobre o peso? De fato, poderíamos criar cada vez mais perguntas e seguir uma caminho para Análise, por isso, é sempre necessário escolher um direcionamento antes de começar um AED.

Como seria exaustivo responder todas as perguntas aqui, continuaremos a utilizar diferentes ferramentas para entender as perguntas feitas anteriormente. Os gráficos podem ser nossos aliados.

____________________________________________

Essas são algumas das ferramentas que podemos utilizar para que possamos realizar uma Análise Exploratória de Dados. Existem inúmeras outras técnicas e que você pode aprender com nossos cursos de R e Python aplicados para a Análise de Dados e Economia. Confira:

Fazendo limpeza de dados Macroeconômicos com R e o Python

By | Hackeando o R, Python

O processo de limpeza de dados é extremamente importante para a análise de dados. Sem esta etapa, seria impossível lidar com dados "sujos", dos quais possuem formatos, classes e estruturas não compatíveis com o R e o Python, principalmente para o modo de lidar com dados Macroeconômicos. O objetivo do post de hoje será mostrar os pontos principais que devem ser levados em consideração ao realizar o processo de limpeza de dados.

Ao realizar a importação de dados Macroeconômicos, é comum enfrentar alguns desafios para efetivamente lidar com o dataset, sendo eles:

  • Nomes de colunas indesejadas;
  • Colunas (variáveis) não necessárias;
  • Filtragem;
  • Formatos/tipos dos dados de variáveis não corretos;
  • Problemas com o formato de data

Cada problema listado acima pode ser resolvido facilmente utilizando o R e o Python. Elencaremos cada problema em ambas as linguagens

Limpeza de dados Macroeconômicos no R

Tomaremos como exemplo a série do PIB a preços de mercado em milhões retirado do Ipeadata utilizando o pacote {ipeadatar}. O primeiro passo será investigar o data frame e sua estrutura

Vemos que o data frame já é importado em classe tibble com cinco colunas, representando o código, a data, o valor da série, o nome do território e o código territorial, respectivamente. Não há motivos para manter as colunas que não sejam a de data e do valor da série, portanto, iremos remover estas colunas utilizando a função select().

O próximo passo, este mais a gosto do usuário, será renomear as colunas do objeto. Como queremos que sejam facilmente reconhecidos as variáveis, utilizaremos nomes que sugerem o seu significado.

Um ponto interessante do R é a facilidade de manipulação com séries temporais. Ao inspecionar o tibble, vemos que há um intervalo trimestral para as observações, seria interessante, portanto, utilizar um formato de data mais conveniente para o caso. Podemos realizar a mudança utilizando a função yearquarter() do pacote {tsibble}.

Fácil até então, certo? Porém, nem sempre pode ser tão facilitado assim. Um caso em que as variáveis não são importadas com seus devidos formatos ocorre ao utilizar o pacote {sidrar} para obter dados do Sidra - IBGE.

Como exemplo podemos utilizar a Pesquisa Mensal de Serviços da Tabela 6442. Obtemos sua API através do site do Sidra.

Ao analisar o data frame importado, não parece tão simples, certo? O primeiro passo para a limpeza, será definir quais variáveis necessitamos e destas, quais devem ser realizadas as manipulações. Para o momento, queremos o valor da variável, a coluna que define a categoria que o valor se encaixa, uma representado se o valor possui ou não ajuste sazonal, uma coluna definindo qual medida se refere a variável, sendo os valores a receita nominal ou o volume, e não menos importante, a data das observações.

O processo será selecionar estas colunas citadas, mudar seus nomes, filtrar a categoria de interesse da medida, mudar de long para wide e por fim, realizar as mudanças necessárias para a data.

Limpeza de dados Macroeconômicos no Python

Todos os procedimentos acima podem ser feitos também utilizando o Python. Seremos mais diretos desta vez, importando a tabela 1442 do Sidra com a biblioteca {sidrapy} que se refere aos dados do IPCA.

O primeiro procedimento será avaliar  o data frame importado e realizar os ajustes necessários.

Veja que os dados importados possuem colunas com nomes diferentes daqueles importados pelo R, a diferença estão que as colunas com os verdadeiros nomes estão localizados na primeiro observação do data frame, ou seja, precisamos substituir as colunas pela primeira observação.

O segundo passo será selecionar apenas as variáveis de interesse, bem como alterar os seus nomes para algo mais útil.

Por fim, devemos realizar o filtro para a variação do IPCA mensal, de acordo com a categoria inserida na coluna 'variable' e em seguida, alterar a coluna de data para o tipo datetime e a realocar para o índice do data frame.

Quer saber mais sobre R e Python?

Veja nossos cursos de:

Saindo do Excel para o R e Python

By | Hackeando o R, Python

Para aqueles que desejam realizar o processo de análise de dados, o Excel pode ser útil, porém, é possível melhorar ainda mais esse processo utilizando o R e Python. Neste post de hoje, mostraremos para os usuários do Excel como é fácil realizar uma análise exploratória de dados, seguindo o procedimento de avaliar as estatísticas descritivas e a visualização de dados, obtendo resultados que podem ser adquiridos dentro do Excel, porém, de forma simplificada e rápida utilizando as linguagens R e Python.

R e Python são linguagens que se tornaram famosas pelo seu uso no processo de Análise de Dados, simplificando todo o processo de coleta, limpeza, visualização, modelagem e comunicação. De fato, as duas linguagens são diferentes, principalmente em seus propósitos, porém, se encaixaram muito bem na área. O interessante do R e do Python é que ambos são open source, ou seja, qualquer usuário pode criar pacotes e realizar sua divulgação, o que permite as soluções de diversos problemas possam ser compartilhados mundo afora.

Através deste mecanismo de criação de pacotes, tanto R e Python tiveram aqueles que mais se destacaram e que auxiliam no processo de análise exploratória de dados. Enquanto o R possui o Tidyverse (que na realidade é uma junção de diversos pacotes). O Python possui o numpy, o pandas e o matplotlib/seaborn para realizar o processo.

Nos exemplos abaixo, utilizaremos os pacotes citados, além de outros, para mostrar aos usuários do Excel como é fácil utilizar o R e o Python. O dataset utilizado como exemplo será o mpg, que traz informações sobre carros produzido no EUA, Asia e Europa na década de 70 e 80 e suas respectivas características. Você pode baixar o arquivo em .xlsx do mpg por aqui para poder reproduzir o código abaixo.

Análise Exploratória no R

Para realizar a análise exploratória no R utilizaremos três pacotes importante para realizar a manipulação, obter as estatísticas descritivas e auxiliar no processo de visualização de dados.

O primeiro passo para realizar a análise é importar a planilha do dataset no R utilizando a função read_excel(). Em seguida, devemos investigar a estrutura dos dados e suas variáveis, vasculhando as colunas e as observações do mesmo. Ao termos uma ideia de como é o Data Frame, selecionamos as colunas de interesse que iremos utilizar.

O resto do processo é analisar através das estatísticas descritivas e sumarização a configuração dos dados. Esse processo deve ser necessário para tirar insights e responder dúvidas: Em média, qual o peso dos carros? Os pesos dos carros variam muito? Há valores discrepantes nesta variável? Se separarmos por origem dos carros, o padrão de cada variável mudará? Esse formato de perguntas são necessários em qualquer análise exploratória, e auxilia também no processo de modelagem.

Nos códigos acima calculamos valores preciosos sobre as estatísticas descritivas do dataset. Primeiro realizando este cálculo para todas as variáveis como um todo, e depois, separando-as por categorias da origem dos carros. Veja que no processo utilizamos tanto o {dplyr} e o {skimr} (e os dois juntos) para obter os resultados.

Abaixo, o processo de análise também seguirá com as mesmas perguntas, porém, utilizaremos de métodos gráficos para obter a distribuição e o relacionamento das variáveis com o pacote {ggplot2}.

Análise Exploratória no Python

No Python, o processo seguirá o mesmo, com as mesmas perguntas, porém, obviamente, utilizaremos formas diferentes para calcular as estatísticas descritivas e a visualização. A intuição é a mesma, o que muda aqui é somente a sintaxe.

Importaremos os dataset com a função read_excel do pandas e inspecionaremos os dados para em seguida selecionar as variáveis de interersse.



Realizamos o processo de análise de dados sumarizando as estatísticas descritivas e separando os valores por categorias de origem do carros.

Por fim, visualizamos a distribuição e o relacionamento entre as variáveis do dataset.

Quer saber mais?

Veja nossos cursos de R e Python para Análise de dados. Também veja nossa trilha de Ciência de dados.

PROCV no R

By | Hackeando o R

A função PROCV é amplamente conhecida no mundo das planilhas eletrônicas, com o importante papel de facilitar o trabalho na montagem e procura de dados. É definida como uma forma de buscar os valores correspondentes de uma coluna , com base em um ID (um valor comum que esteja procurando), retornando esses valores correspondentes em outra célula. Para realizar essa tarefa no R é extremamente fácil, e para tanto, iremos demonstrar como podemos realizar essa tarefa neste post.

Para realizar o mesmo procedimento do PROCV no R utilizaremos a família de funções 'joins' do pacote {dplyr}, conhecido por ser parte importante do {tidyverse} e peça chave na manipulação de dados no R. Conhecidos como "mutating joins", essas funções são descritas como funções que adicionam colunas de y para x, juntando suas observações baseadas em chaves, isto é,  colunas iguais de ambos os data frame, retornado os valores em comuns (isto é, tal qual um chave definida) em outro data frame. Existem quatro funções dos mutating joins:

      • inner_join() Junta os valores de x e y, isto é, retorna um data frame com observações interseccionados;
      • left_join() Junta todos os valores de x. É a função que mais se assemelha com o PROCV;
      • right_join() Junta todos os valores de y. É igual a função acima, porém especificando y;
      • full_join() Junta todos os valores de x ou y.

Para exemplificar melhor, segue a estrutura dos joins:

Em que é o data frame com os valores, y é o data frame das chaves e by é o argumento que específica qual coluna está inserido os dados da chave que "grudam" x e y. O data frame que é utilizado como chave, por óbvio, muda a depender do join utilizado. Neste caso, o left_join() considera a junção de x em y, ou seja, somente os valores de x serão considerados no resultado em relação a y.

Exemplo

Como exemplo, iremos utilizar dois data frames do pacote {Lahman}, que contém dados sobre estatísticas da MLB. Queremos juntar a coluna 'playerID' de um data frame com outro. Como queremos que sejam todos os valores do data frame x, escolhido aqui como Batting, utilizaremos a função left_join(), para exemplificar o uso do PROCV no R.

Repare no output que automaticamente a função reconheceu que a coluna a ser utilizada como chave foi "playerID", por óbvio, as vezes isso nem sempre ocorre, sendo necessário a utilização do argumento by, principalmente quando por mais que as colunas tenham os mesmo valores, possuam nomes diferentes.  Observe também que somente os valores de x (Batting) em relação a y (Master) foram mantidos, excluindo todos os valores de y,  isto por conta do efeito do uso de left_join().

Quer saber mais?

Veja nossos cursos de Python aplicado: R e Python para Economistas, Econometria usando R e Python e Estatística usando R e Python

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente