Tag

aed 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.

O que é Inferência Estatística?

By | Hackeando o R

É extremamente difícil obter dados para uma população inteira, desta forma, ao realizar uma análise de dados, devemos utilizar métodos para generalizar os resultados de uma amostra para uma população, e podemos atingir o objetivo utilizando a inferência estatística. No post de hoje, elencamos o processo de inferência estatística e como podemos aplicar utilizando um exemplo com o R.

Com o objetivo de estimar os parâmetros de uma análise de dados de uma amostra para uma população, devemos ter em mãos ferramentas que possibilitam alcançar este objetivo. Através dos conhecimentos obtidos através de um rigor crítico, da AED e dos conceitos de probabilidade, conseguimos realizar uma análise dos dados. Mas como agir nos passos seguintes para saber se uma amostra é significativa? Para isso utilizamos a inferência estatística e o método de testes de hipóteses.

Mas afinal, o que é inferência? Como devemos seguir os passos para generalizar os resultados de uma amostra para uma população? A inferência estatística segue uma estrutura que provê  passos para que possamos ser bem sucedidos no processo:

  1. Coletar uma amostra representativa: É necessário realizar este procedimento antes do teste de hipóteses (que iremos explicar adiante), pois é crucial para o sucesso dos passos seguintes. Devemos ter certeza que a amostra coletada é representativa da população, senão, incorremos de um viés estatístico. Este processo de certeza é realizado durante a fase de coleta, no qual deve ser bem definido todos os processos.
  2. Crie as hipóteses: Devemos criar a motivação do trabalho e confeccionar uma hipótese, que pode ser criada das seguintes formas: afirmar ou contrapor um senso comum; testar alguma teoria criada pela literatura; certificar o comportamento do objeto analisado;  e entre outras formas.
  3. Formular um plano de analise: será o ferramental utilizado para conduzir o teste, ou seja, os métodos estatísticos utilizados para mensurar a amostra, realizar o teste e a avaliação.
  4. Analisar os dados: De fato, estará sendo feito a analisar dos dados, de forma a obter um insight prévio sobre como conduzir os testes. Construir as estatísticas descritivas, e construir visualizações para entender a distribuição dos dados é crucial. Realiza os testes
  5. Faça uma decisão: com base nos resultados da análise, iremos avaliar se o plano construído foi alcançado, sendo avaliado as hipóteses. Aqui será crucial conhecimento da significância estatísticas.

Inferência no R

Como exemplo, utilizaremos o dataset Housing, oriundo do pacote Ecdat, que fornece o preços de casas a vendas na cidade de Windsor. Com base nestes dados, seguiremos os passos elencados acima para obter um ideia de como podemos entender a inferência estatística.

Amostra Representativa

Obviamente, seria dificultoso capturar os preços de todas as casas da cidade de Windsor, entretanto, mesmo com este problema, a amostra deve ser suficientemente grande o bastante para retirar quaisquer conclusões. Com 546 observações, sabemos que pode ser útil para a realização de uma inferência.

Apesar do tamanho, não sabemos como foi realizado a pesquisa, e portanto, não podemos ter certeza se há algum viés na coleta ou se houve algum problema na coleta de dados, entretanto, são dados oriundos do Journal of Applied Econometrics, o que nos leva a crer que há autoridade e confiabilidade sobre os dados.

Criar as Hipóteses

Ao tentar entender como é formado os preços das casas, podemos entender inúmeras variáveis, desde o tamanho da casa, a arquitetura, sua localização e entre diversas outras. Para formular uma hipótese sobre o que pode afetar o preço de uma casa, devemos divagar sobre todas estas variáveis. Dentro da amostra, veja que há variável airco, que relata se a casa observada possui ar condicionado ou não. Bem, é lógico pensar: é difícil encontrar alguém que não goste de usufruir de um air condicionado, aumenta o bem estar das pessoas, logo, entendemos que para que haja esse aumento de bem estar, os indivíduos paguem mais pela casa, certo?

Para saber se esse pensamento é válido, podemos criar hipóteses estatística que podem nos auxiliar a provar essa relação.

H0: não há diferença no preço médio das casas a vendas com ou sem ar condicionado

H1: há diferença no preço médio das casas a vendas com ou sem ar condicionado

Como dito, essas hipóteses são mutuamente exclusivas, ou seja, se uma é verdadeira a outra necessita ser falsa.

Formular um plano de análise

Devemos agora definir os métodos que usaremos para analisar as hipóteses criadas. O ferramental da estatística é grande, logo devemos sempre realizar uma análise sobre os dados antes de partir para os testes de fato. Acima, ao analisar o data frame, vimos que o preço das casas vendidas é definido por uma variável continua e a variável airco é um factor, representando uma variável categórica binária. Também formulamos que o fato de uma casa ter ou não ar condicionado afeta o seu preço, logo, entendemos que o price é uma variável dependente e airco é uma variável independente.

Para entender esse relacionamento, utilizaremos o teste t para amostras independentes, que irá assumir que as observações são independentes e que a amostra segue distribuição normal.

Como temos incerteza sobre o resultado da amostra em relação a população, devemos definir como podemos alcançar a significância estatística do teste. Isto é, como na probabilidade, podemos quantificar essa incerteza, portanto, definimos um número de forma a obter a certeza do efeito média de uma variável em relação a outra, convencionalmente (e aqui utilizando teste bicaudal) utiliza-se 5%.

Analisar os dados

Podemos enfim realizar análise dos dados pensando crucialmente nas hipóteses definidas. A realização da análise pode ser um dos primeiros passos, de forma a ser familiarizar com os dados e obter insights, entretanto, para obtermos respostas sobre alguma hipótese, devemos faze-lo depois que é realizado todos os passos anteriores.

Para analisar os dados, utilizamos o pacote {skimr}, que irá calcular as estatísticas descritivas do dataset, veja que agrupamos pela variável airco, de forma que possamos obter os resultados separados por suas categorias.

Temos então uma ideia de como ser comporta o efeito de airco sobre price. As casas que possuem ar condicionado possuem um preço médio maior que as que não possuem, bem como possuem uma variabilidade menor.

Como o teste t presume que os dados sejam normais, podemos ver a distribuição para que possamos realizar o teste.

Obviamente não é uma distribuição normal perfeita, mas pode ser utilizada para realizar o teste.

Por fim, conduzimos o teste t utilizando a função t.test(). Abaixo, nos resultados, vemos que com um nível de significância (95% porcento de confiança) de 5%, que o efeito é significativo, pois o p-valor da estatística é menor de 0.05, ou seja, rejeitamos H0 e aceitamos H1.

Podemos afirmar também que, com significância, que casas com ar condicionado possuem uma diferença negativa de aproximadamente  $ 26000,00 em relação a casas com ar condicionado.


____________________________________________

Quer saber mais?

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

_____________________________________________

Referências

Mount, G. Advancing Into Analytics. Estados Unidos, O'Reilly Media, 2021.

 

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

Estatísticas Descritivas em R e Python

By | Hackeando o R, Python

Estatísticas descritivas são números que sumarizam as características de um conjunto de dados. É útil para prover informações valiosas de forma a responder questões, sendo importantíssimas para o processo da analise exploratória de dados. No post de hoje, ensinaremos o básico sobre as estatísticas descritivas, bem como mostraremos como realizar a aplicação no R e Python.

As estatísticas descritivas possuem algumas características e pontos importantes que devemos elencar antes de fato demonstrar com o R e Python. Em primeiro lugar, devemos separar os tipos de dados que estamos lidando, os dois mais importantes são:

  • categóricos (ou qualitativo): registra quantis ou as características sobre as observações, tais como gênero, partido politico e etc.
  • numérico (quantitativo): registra os números ou a contagem de uma observação, tais como peso, idade, número de filhos e etc.

A aplicação para as variáveis do mundo real pode ser estabelecida pela quantidade de variáveis que se está descrevendo ou sumarizando.

  • univariadas: quando se descreve e sumariza apenas uma variável
  • bivariada/multivariadas: quando se descreve duas ou mais variáveis.

Os cálculo realizados para sumarizar os dados também possuem classificações, separando-os em tipos de medidas.

  • Medidas de tendencia central: responde sobre o que está no centro do dados, medidas importantes incluem a média, mediana e a moda
  • Medidas de variabilidade: responde sobre o quanto os dados estão dispersos, medidas importantes incluem a variância e o desvio padrão
  • Medidas de relacionamento: responde sobre a relação entre duas variáveis em um dataset, medidas importantes incluem a covariância e a correlação.

Pontos importante:

Percentis: os percentis são os números relativos que representam a localização dos dados de uma variável que são divididos em 100. Fazem parte do que é conhecido como Quantis. Por exemplo, imagine que o individuo que corresponda a uma observação da variável que mede a renda de todos os brasileiros tenha uma renda que esteja acima do 90° percentil, isso significa que esse individuo possui uma renda maior que 90% dos brasileiros.  Uma regra interessante: a mediana sempre representa o 50° percentil.

outliers: É um ponto que difere significativamente da maioria dos dados de um dataset. Entre os motivos para esse acontecimento é: variação natural do dados, mudança estrututral do sistema observado, bem como mudança na forma de mensurar os dados, erros na coleta dos dados.

Agora que realizamos uma breve introdução, podemos partir para prática e entender como podemos aplicar com o R e o Python

Estatísticas Descritivas no R

Como exemplo, utilizaremos os dados do dataset iris, e o primeiro passo para começarmos a analisar as estatísticas descritivas do dataset é dar uma olhada no seus aspectos, visualizando o data frame e a sua estrutura.

Transformamos o data frame em tibble para que seja melhor trabalhado o conjunto de dados. Ao olhar o data frame e a sua estrutura com a função str(),vemos que há informações valiosas: possui 5 colunas com 150 observações, sendo quatro dessas colunas numéricas e uma do tipo factor (dados categóricos). Já cumprimos o primeiro passo de identificar os tipos de dados que temos em mãos. O próximo passo será calcular os tipos de medidas.

Tipos de dados

Tipos de medidas

Medidas de tendência central

Para calcular as medidas de tendência central, como a média, mediana e moda no R, selecionamos as colunas (variáveis) que queremos analisar e utilizamos as seguintes funções:

Para a moda, veja que realizamos uma combinação de table() com sort(), onde a primeira função permite calcular a frequência de ocorrência de um valor e a segunda que o número dessa frequência seja ordenado do maior para o menor.

Medidas de variabilidade

Para calcular a variância e o desvio padrão, utilizamos de duas funções no R, selecionando as variáveis que queremos.

Medidas de relacionamento

Para calcular o relacionamento de duas variáveis no R, é possível utilizar a funções cov() e cor() para calcular a covariância e correlação, respectivamente. Veja que selecionamos duas variáveis para realizar o cálculo. É possível criar também uma matriz de covariância e correlação com as mesmas funções, porém, é necessário especificar as colunas do tipo numérico para o R.

Percentis

Para encontrar um percentil específico, utiliza-se a função quantile, com a posição que queremos encontrar os dados.

Sumarização

Para facilitar o trabalho da análise sobre estatísticas descritivas, a função summary() retorna os indicadores mais importantes para análise de todas as colunas.

O pacote skimr torna poderoso a sumarização no R, retornando informações mais bem trabalhadas.


Estatísticas descritivas no Python

Utilizar o Python para calcular as estatísticas descritivas é tão fácil quanto o R, precisaremos apenas das bibliotecas numpy e pandas para realizar esta tarefa. No Python, primeiro, devemos carregar os dados de exemplo que utilizamos acima para então seguir para o processo de análise.


Tipos de medidas

Medidas de tendência central

No Python, a lógica é a mesma, pegamos uma coluna representando uma variável e calculamos as respectivas medidas.

Medidas de variabilidade

Para a variabilidade, veja que o método segue o mesmo, retirando a coluna de interesse e aplicando as funções var() e std()

Medidas de relacionamento

No Python, construímos uma matriz de covariância e correlação (também sendo possível calcular somente de duas variáveis).

 

Sumarização

O processo de sumarização no Python pode ser alcançado através do método descibre(), que retorna medidas preciosas de todas as colunas.

Para tornar mais poderoso a sumarização, a biblioteca skimpy nos ajuda a melhorar a análise.

 

Quer saber mais?

Veja nosso curso de Estatística usando R e Python, onde ensinamos a como utilizar o R e Python para realizar análises estatísticas com exemplos reais.

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

Assinar Gratuitamente