Tag

aed no r Archives - Análise Macro

O que é Teste A/B

By | Hackeando o R

Teste A/B é uma técnica criada com o intuito de comparar e testar a efetividade e benefícios de diferentes versões de programas ou mudanças em estratégias de negócios antes de tomar uma decisão final. O teste é uma forma bastante interessante de testar novas ideias, e portanto, pode ser muito útil para a avaliação de qualquer programa de uma empresa. No post de hoje, mostraremos como utilizar o Teste A/B em um exemplo prático com o R.

Imagine o seguinte: você e seus gestores querem saber se uma mudança no visual da página do site de compra de um curso pode levar a um aumento da compra pelos clientes. Seria difícil imaginar qual seria o impacto sem antes tentar a mudança. Para tanto, o Teste A/B permite criar experimentos, separando os sites em dois formatos, e avaliar estatisticamente as diferenças de compras entre ambos.

Em suma, é possível estabelecer as seguintes regras: seria A melhor do que B? Uma layout A atrairia mais clientes do que o B? A cor A é mais lucrativa que a B?

As duas versões daquilo que você deseja testar são chamadas de controle (a versão atual) e a de tratamento (modificada). As amostras desses dois grupos devem possuir tamanhos similares, bem como sua amostragem deve ser feita com os devidos cuidados (dados não viesados, períodos não tão curtos e nem tão longos para a coleta e a escolha correta do período a ser analisado e comparado, evitando sazonalidades e tendencias).

Variáveis

Ao criar um Teste A/B, é necessário cumprir os seguintes passos:

  • Pergunta: A alteração em um programa vai resultar em qual efeito?
  • Hipótese: Usar A ao invés de B resultará em mais benefícios para a empresa?
  • Variável dependente: A variável A
  • Variável Independente: A variável B.

Exemplo

Como exemplo, vamos utilizar o dataset WA_Marketing-Campaign, enviado por Anastasiia Chebotina na plataforma Kaggle.

" Uma rede de fast-food planeja adicionar um novo item ao seu cardápio. No entanto, ainda estão indecisos entre três possíveis campanhas de marketing para promover o novo produto. Para determinar qual promoção tem o maior efeito nas vendas, o novo item é introduzido em locais em vários mercados selecionados aleatoriamente. Uma promoção diferente é usada em cada local e as vendas semanais do novo item são registradas nas primeiras quatro semanas."

Objetivo: Avaliar os resultados do Teste A/B e decidir qual campanha de marketing melhor funciona.

Colunas:

  • MarketID: identificação do mercado
  • MarketSize: tamanho do mercado por vendas
  • LocationID: identificação do local da loja
  • AgeOfStore: idade da loja em anos
  • Promotion: identificação das três promoções de marketing que devem ser testadas
  • week: identificação das quatro semanas que as promoções foram ativadas
  • SalesInThousands: volume de vendas para um local especifico com base no LocationIDPromotion, e week

Vamos construir os passos:

  • Pergunta: Qual das promoções de marketing resultará em mais vendas para as lojas?
  • Hipótese: Há uma diferença de valores por vendas entre as 3 promoções?
  • Variável dependente: variável SalesInThousands;
  • Variável Independente: variável Promotions.

Para começar, iremos realizar uma breve análise exploratória de dados para conhecer o dataset.

Primeiro, devemos importar os dados e checar sua estrutura. Há um problema logo de inicio. Os identificadores, que deveriam ser categorias, são expressos em números, o que leva o R a ler como tipo numérico. Realizamos a alteração das colunas para o tipo factor.

Com a mudança, podemos analisar as estatísticas descritivas do conjunto de dados com o pacote {skimr}. O interessante é perceber o número de contagem de cada categoria das variáveis. Em MarketSize, percebemos que há maior quantidade de mercados médios, com 320, em seguida grandes, com 168, e por fim pequenos com 60.

Em relação ao número de observações por promoções, é importante notar que entre as 3, há um número bem próximo com 188 da promoção 2, 188 da promoção 3 e 172 da promoção 1.

Já as variáveis numéricas, como a Idade da loja, vemos que é bem amplo a idade, com lojas de 1 ano de funcionamento até 28 anos.

Por fim, as vendas também apresentam valores bem amplos, de 17.3 até 99.6. Importante notar o desvio padrão de 16.8%.

Como queremos saber qual promoção resultará em maiores vendas, é necessário investigar a variável promoção e vendas. Como vimos anteriormente, as vendas possuem valores discrepantes, portanto, iremos analisar em conjunto com a semana, de forma a entender se o efeito da diferença de tempo resultou nesse efeito.

Como houve pouca mudança nos gráficos ao longo das semanas, podemos entender que o tempo não teve efeito significativo. Entretanto, podemos já entender que há alguma diferença no número de vendas em relação a cada promoção de marketing.

Antes de prosseguir com o teste da hipótese criada (Há uma diferença de valores por vendas entre as 3 promoções?), devemos averiguar a distribuição dos dados antes escolher qual teste será aplicado. Criamos um histograma das vendas por promoção e podemos ver que há duas distribuições, o que pode afetar a suposição do modelo escolhido. Entretanto, antes de realizar a escolha final, vamos tentar entender o que causa essa distribuição.

Um fator importante que pode afetar também o número de vendas é o tamanho do mercado. Separamos as distribuições de mercado pequenos e médios. Vemos que já não há mais duas distribuições. Isso nos leva a crer que esse efeito é ocasionado pela distribuição de mercados grandes.

Como dito, ao fazer a separação de mercados grandes, vemos que há duas distribuições. Não iremos nos prolongar com o efeito desse caso, portanto, iremos retirar os mercados grandes do nosso conjunto e apenas tratar de mercados pequenos e médios no nosso exemplo de forma a criar um teste que contém a suposição de distribuição normal (que não testamos, porém, iremos supor da mesma forma).

Podemos realizar a análise acima também com o pacote {skim} em conjunto com group_by(). O interessante é obter as estatísticas descritivas desta forma.

Para testar a hipoteses, vamos utilizar o Teste ANOVA, para verificar se há diferença diferença no valor médio de vendas em mais de dois grupos (as 3 promoções de marketing). Como estabelecido, a variável dependente é SalesInThousand e a variável independente Promotion. Construímos a função aov() com base nessa relação.

No resultado, podemos verificar que o p valor é significativo, ou seja, há significância na promoção de marketing utilizada. Para entender o quanto é essa diferença entre as médias, utilizamos a comparação de Tukey, por meio da função TukeyHSD().

Em diff, obtemos a diferença entre as média dos grupos. lwr e upr os intervalos de confiança e p adj o p valor após os ajuste para comparações múltiplas. Apenas a comparação entre a promoção 3 e 1 não é significativa.

Por fim, podemos avaliar a hipótese criada, levando em conta os mercados analisados. É possível entender que o Teste A/B pode ser extremamente útil para a avaliação de mudanças de programas em empresas, e permite obter resultados bem definidos e claros.

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:

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.

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

Assinar Gratuitamente