Tag

data science Archives - Análise Macro

Estatística vs Analytics vs Data Science

By | Hackeando o R

Algo que sempre gera dúvidas para aqueles que estão entrando na área de dados refere-se as áreas de atuação, bem como a relação entre cada uma. Obviamente, Estatística não é o mesmo que Data Analytics, bem como também são diferentes de Data Science. Apesar disto, estão totalmente interligadas. No post de hoje, explicamos brevemente as diferenças das três áreas e aplicamos exemplos de demonstração de suas finalidade.

Para esclarecer toda a confusão que é gerada sobre as áreas, definimos brevemente da seguinte forma:

  • Estatística é uma área que está mais preocupada com os métodos de coleta, analise e apresentação dos dados. O objetivo é buscar o relacionamentos de variáveis, descrever suas características e ser cuidadosa na área de inferência e criação de hipóteses.
  • Data Analytics é uma área que não está preocupada com os métodos de avaliação das variáveis (sendo menos rigorosos que a estatística), e sim está mais preocupado com os resultados que se encontram com os objetivos do negócios. Deste modo, por mais que certas características são significativas em um estudo estatísticos, para o DA, isto pode ser inútil caso não agregue valor para o negócio.
  • Data Science está também interligado com a estatística, porém é focada em resultados, isto é, o Cientista de Dados está preocupado com os objetivos do negócio em mente, de forma a criar produtos sofisticados, com algoritmos que predizem variáveis dentro de um sistema que gera essas previsões instantaneamente. A sua utilização é muito interligada com o uso de Machine Learning.

É possível baixar os dados através do seguinte link.

Vamos investigar a relação entre duas variáveis do dataset: mpg e origin. O quanto a origem do carro pode estar relacionada a variação de mpg? E se confirmada essa relação, além de origin, quais variáveis podemos adicionar para criar um modelo de previsão?

Primeiro, analisamos a distribuição de mpg por origem do carro por meio de um histograma. Observamos que o  número de carros construídos no EUA são maiores em relação a Asia e Europa. Além disso, vemos onde os dados estão centralizado, bem como as assimetrias que se formam.

Com um boxplot, podemos entender melhor os percentis dos valores de mpg por origem. Vemos que Asia possui uma mediana de mpg maior que Europa e EUA.

Com os insights retirado dos gráficos, podemos descobrir se a variável origin exerce uma influência na variável dependente.

Obviamente, a análise estatística é mais robusta e preciosista, com a formulação de um objetivo de estudo e criação de testes de hipóteses. Aqui, fizemos um simples passeio sobre o conteúdo que a área trata.

A partir daqui, iremos estar concentrados em prever o mpg do carro utilizando a regressão linear. A questão, é que o nosso objetivo aqui não será buscar de fato buscar relacionamentos estatísticos, e sim entregar uma previsão de mpg dos carros (e aqui apenas lidaremos com o workflow do {tidymodels}, e não trataremos de toda a infraestrutura criada por um time de Data Science). O objetivo de ensino aqui será somente diferenciar os objetivos de uma área para a outra.

Com as considerações feitas, podemos prosseguir com o nosso modelo. Além de origin, vamos adicionar outra variável, que será weight.

Podemos ver a relação através de um gráfico de dispersão.

Ao especificar e rodar o modelo, construímos as previsões com a fução predict() e comparamos os resultados com os dados de teste.

Quer saber mais?

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

_____________________________________________

Cursos Aplicados de R e Python: Turmas de Outono

By | Cursos da Análise Macro

Abrimos hoje, 22/3, as inscrições com 30% de desconto para as Turmas de Outono dos nossos Cursos Aplicados de R e Python. As vagas com esse desconto são limitadas aos primeiros inscritos. Haverá vagas para 25 Cursos Livres e 3 Formações. As turmas de Outono terão início no dia 04/04 e contarão com Cursos de Introdução à Programação em R ou Python, de modo que não é necessário nenhum conhecimento prévio nas linguagens. Para todos os detalhes sobre as Turmas de Outono, continue lendo esse informativo...

Há vagas para as cinco áreas dos nossos Cursos Livres: Data Science, Macroeconomia Aplicada, Econometria, Finanças e Central Banking. Os Cursos com inscrição aberta são os seguintes:

Cursos de Data Science

Macroeconomia Aplicada

Cursos de Econometria e Machine Learning

Cursos de Microdados

Cursos de Finanças

Cursos de Central Banking

Além disso, também abrimos as inscrições para as nossas Formações:

Importante dizer que, para manter o nosso suporte aos alunos funcionando de forma plena, as inscrições com desconto são limitadas. Daremos desconto de 30% apenas para os primeiros alunos inscritos. Tão logo o primeiro lote atinja o limite de alunos, nós fecharemos ele e passaremos para o segundo lote com as vagas restantes, mas com o preço cheio. As inscrições no primeiro lote costumam acabar rápido, então garanta o quanto antes a sua inscrição!

Plano Disponível

Será ofertado um Plano Único com acesso aos Cursos por 24 meses, cursos de Introdução ao R ou ao Python, Certificado e suporte customizado do professor via plataforma exclusiva.

Investimento

Os preços dos Cursos variam de acordo com a complexidade do conteúdo. Os alunos poderão financiar a aquisição dos Cursos em até 10x sem juros no cartão de crédito.

Qualquer dúvida adicional, por favor, nos contacte no botão do whatsapp, no canto inferior direito do Site.

______________

Inscrições Abertas para as Turmas 2022!

By | Cursos da Análise Macro

Estão abertas as inscrições para as Turmas 2022 dos nossos Cursos Aplicados de R e Python. Há vagas para 22 Cursos Livres e 3 Formações.

As turmas 2022 terão início no dia 03/01/2022 e contarão com o nosso Curso de R para Análise de Dados como bônus, de modo que não é necessário nenhum conhecimento prévio em linguagens de programação.

Para todos os detalhes sobre as Turmas 2022, continue lendo esse informativo...

vagas para as cinco áreas dos nossos Cursos Livres: Data Science, Macroeconomia Aplicada, Econometria, Finanças e Central Banking. Haverá vagas para 16 Cursos, a saber:

Começando a lidar com dados: cursos voltados para quem ainda não tem conhecimentos de análise de dados ou de linguagens de programação

Cursos de Econometria e Machine Learning: cursos voltados para quem quer aprender a construir modelos econométricos e de machine learning

Cursos de Macroeconomia Aplicada: cursos voltados para quem quer aprender a usar ferramentas de análise de dados na área macroeconômica

Cursos de Microdados: cursos voltados para quem quer aprender a lidar com microdados usando uma linguagem de programação

Cursos de Finanças Quantitativas: cursos voltados para quem quer aprender a lidar com dados financeiros usando uma linguagem de programação

Cursos de Central Banking

Além disso, também estão abertas as inscrições para as nossas Formações:

Tempo de Acesso ao material do Curso

Será ofertado um Plano Único com acesso ao conteúdo dos Cursos por 24 meses e suporte customizado do professor. Nosso objetivo com isso é dar um treinamento totalmente customizado para os alunos inscritos.

Investimento

Os preços dos Cursos variam de acordo com a complexidade do conteúdo. Os alunos poderão financiar a aquisição dos Cursos em até 10x sem juros no cartão de crédito.

Adquirindo todos os Cursos de uma área

Nossos Cursos Aplicados de R são divididos por áreas temáticas. Caso queiram, os alunos poderão adquirir todos os cursos de uma determinada área com desconto adicional. Para isso, basta utilizar os links abaixo:

Qualquer dúvida adicional, por favor, mande e-mail para comercial@analisemacro.com.br.

______________

Conectando Git, Github e RStudio em 3 passos

By | Data Science

Neste tutorial você irá aprender a usar as melhores ferramentas de controle de versão existentes diretamente no RStudio.

Este tutorial foi feito para quem:

  • Pretende utilizar pela primeira vez o Git e GitHub no RStudio;
  • Já é usuário de R;
  • Quer facilitar o fluxo de trabalho de ciência de dados com versionamento usando o Git.

Pré requisitos

Antes de começar, certifique-se de que tenha:

- Uma conta do GitHub criada;
- R e RStudio instalados;
- Git instalado.

Se algum desses requisitos estiverem faltando, você não conseguirá conectar corretamente o RStudio com o Git e GitHub.

Passo 1: configurar o Git

O primeiro procedimento é declarar para o Git quem você é, informando seu nome e e-mail associado a sua conta do GitHub. Isso pode ser feito de duas formas:

  • Pelo Terminal no RStudio, digite esses comandos substituindo seu nome/e-mail:
git config --global user.name 'Fernando da Silva'
git config --global user.email 'fernando@email.com'
  • Usando o pacote usethis, no Console do RStudio:
library(usethis)
use_git_config(user.name = "Fernando da Silva", user.email = "fernando@email.com")

Passo 2: criar um token do GitHub

Para a interação entre seu computador (mais especificamente o repositório Git local) e o GitHub (repositório remoto) funcionar é preciso de uma autenticação, certificando que você tem as permissões necessárias para fazer o que quer que seja. Essa autenticação pode ser facilmente implementada através da configuração de um token (também conhecido como PAT) do GitHub.

Para criar o token, há duas formas:

  • Acesse https://github.com/settings/tokens e clique em "Generate new token", selecionando os escopos desejados (recomenda-se selecionar repo, user, e workflow)
  • Ou, no Console do RStudio:
usethis::create_github_token()

Clique em "Generate token" e copie o código do token gerado (ao fechar a página não será possível visualizá-lo novamente).

Com o token em mãos, use o pacote gitcreds para armazenar o token no Git credential store, que é algo parecido como um arquivo de "cache" de algum site ou botão "lembrar senha" que é usado toda vez que você fizer interações entre o repositório local e o remoto.

Após executar o comando abaixo, cole o token obtido anteriormente:

gitcreds::gitcreds_set()

Passo 3: test drive

Agora você já tem tudo pronto para testar se está funcionando. Se você fizer o teste a seguir e não obter erros, significa que seu RStudio está corretamente conectado com o Git e GitHub.

O "test drive" a seguir serve basicamente para verificar se a interação entre RStudio, Git e GitHub está bem configurada. Para essa averiguação, criaremos um repositório no GitHub, faremos o clone do mesmo para o computador local, iremos gerar alterações locais, salvar e "commitar", e, por fim, enviar as alterações locais para o repositório remoto ("push").

3.1) Criar um repositório no GitHub

Acesse o site do github certifique-se de estar conectado. Próximo de “Repositories”, clique no botão verde “New”. Na nova página preencha o nome do repositório e descrição (use sua criatividade). Marque as opções "Public" e "Add a README file" e, por fim, clique em "Create repository".

Após criar o repositório você será direcionado para a página do mesmo no GitHub. Agora clique no botão verde que diz “Code” e copie a URL que aparece na opção HTTPS (recomendado).

3.2) Clonar repositório pelo RStudio

Há duas formas de realizar o "clone" do repositório no RStudio, ambas criam um novo projeto local com o repositório GitHub em questão:

  • Navegue por File > New Project > Version Control > Git e cole a URL do GitHub em "Repository URL". Mantenha o campo "Project directory name" inalterado e escolha um local (pasta) onde o projeto será criado. Além disso, é importante marcar a opção "Open in new session". Por fim, clique em "Create Project".

  • Ou, é possível fazer esse mesmo procedimento pelo Console usando o pacote usethis. Com uma simples função, basta indicar o nome de usuário (que criou o repositório) e nome do repositório:
usethis::create_from_github("schoulten/test-drive")

Após clonar o repositório, você deverá estar em um novo projeto do RStudio que conterá o repositório do GitHub. No painel Files do RStudio procure o arquivo README.md e abra o mesmo no próprio RStudio.

3.3) Fazer alterações locais, salvar, commitar

Adicione uma linha com uma frase (use sua criatividade) no arquivo README.md e salve essa alteração. Agora faça o commit dessas alterações no seu repositório local:

- Clique na painel "Git" do RStudio;
- Clique no botão "Commit";
- Marque a caixinha ao lado de README.md na coluna "Staged";
- Em "Commit message" use sua criatividade novamente e digite uma mensagem;
- Clique no botão "Commit", aguarde mensagem de sucesso e clique em "Close".

Se houverem outros arquivos no repositório criados automaticamente pelo RStudio, deixe-os como estão.

3.4) Enviar alterações (push) para o GitHub

Clique no botão verde "Push" para enviar suas alterações realizadas no repositório local para o repositório remoto (GitHub).

Se todas as etapas e configurações foram corretamente executadas, você não deve ser perguntado para digitar o token e suas alterações locais devem aparecer na página do repositório do GitHub (sugiro que atualize a página para verificar)!

Se você chegou até aqui, a configuração do RStudio com o Git e GitHub está concluída!

 

Ficou perdido ou não sabe o que é Git, versionamento, GitHub, repositório, etc.? Comece lendo Happy Git and GitHub for the useR de Jennifer Bryan para uma visão geral desse "mundinho", o livro está disponível gratuitamente e online.

 
________________________
(*) Para entender mais sobre a linguagem R e suas ferramentas, confira nosso Curso de Introdução ao R para análise de dados.

Detecção de plágio com NLP no R: o caso Decotelli

By | Data Science

Natural Language Processing (NLP) é um tópico interessante que vem sendo bastante explorado no mundo da ciência de dados. Aqui no blog já exploramos, por exemplo, a mineração de textos (text mining) das atas do COPOM (códigos disponíveis em R). No texto de hoje exploraremos mais o assunto aplicado ao problema de detecção de plágio entre dois ou mais textos, usando como exemplo um evento repercutido no ano passado envolvendo o ex-Ministro da Educação, Carlos Decotelli.

Para contextualizar, e para quem não teve conhecimento do evento em questão, em junho de 2020 houveram apontamentos de que a dissertação de mestrado do então Ministro da Educação, Carlos Decotelli, continha indícios de plágio. Muitas notícias foram vinculadas na época e após o “escândalo” o Ministro entregou uma carta de demissão.

Dados os atores envolvidos e repercussão deste evento, é natural aos cientistas de dados se perguntarem se o plágio pode ser verificado de forma mais empírica. Neste texto faremos um exercício aplicado de R para tentar responder essa questão, usando o pacote textreuse.

O pacote textreuse serve muito bem o propósito deste exercício, pois fornece um conjunto de funções para medir a similaridade entre documentos de texto e detectar passagens que foram reutilizadas. Para realizar essa mensuração existem algumas possibilidades, entre elas o Índice de Jaccard - também conhecido como coeficiente de similaridade de Jaccard - que oferece uma estatística para medir a similaridade entre conjuntos amostrais, expresso conforme abaixo:

O Índice de Jaccard é muito simples quando queremos identificar similaridade entre textos, sendo os coeficientes expressos como números entre 0 e 1. Dessa forma, quanto maior o número, mais semelhantes são os textos (conjuntos amostrais).

Agora vamos à prática!

Pacotes

Para reproduzir os código de R deste exercício, certifique de que tenha os seguintes pacotes instalados/carregados:


# Carregar pacotes
library(textreuse) # CRAN v0.1.5
library(magrittr) # CRAN v2.0.1
library(dplyr) # CRAN v1.0.7
library(stringr) # CRAN v1.4.0
library(ggplot2) # CRAN v3.3.5
library(ggtext) # CRAN v0.1.1
library(scales) # CRAN v1.1.1

Dados

Os dados utilizados são os documentos que queremos comparar a similaridade. O principal documento é a dissertação de mestrado de Carlos Decotelli, e os demais são documentos indicados por Thomas Conti de onde os trechos teriam sido copiados. Nos links à seguir você pode baixar os originais de cada documento:

  1. Dissertação Carlos Decotelli (2008): https://bibliotecadigital.fgv.br/dspace/handle/10438/3726
  2. Relatório CVM (2007) - The Internet Archive: http://web.archive.org/web/20200629224030/https://ri.banrisul.com.br/banrisul/web/arquivos/Banrisul_DFP2007b_port.pdf
  3. “A Abordagem Institucional na Administração” de Alexandre Rosa e Cláudia Coser (2003): https://twiki.ufba.br/twiki/bin/viewfile/PROGESP/ItemAcervo241?rev=&filename=Abordagem_institucional_na_administracao.pdf
  4. “Mudança e estratégia nas organizações” de Clóvis L. Machado-da-Silva et al. (1999): http://anpad.org.br/admin/pdf/enanpad1998-orgest-26.pdf

Para usar esses documentos no pacote textreuse precisamos transformá-los para o formato de texto (extensão .txt). Existem formas de fazer isso por meio de pacotes no R, no entanto, para simplificar eu usei ferramentas online que fazem esse serviço, tomando o cuidado de remover as páginas pré ou pós textuais (capa, sumário, referências, etc.) antes da conversão, já que o objetivo é comparar os textos do corpo dos documentos propriamente ditos.

Ferramenta online para converter de PDF para TXT: https://pdftotext.com/pt/

Após esse tratamento/conversão teremos 4 arquivos de texto para realizar a análise. Disponibilizei os arquivos neste link para quem se interessar em reproduzir. Na sequência importamos os arquivos para o R:


# Criar pasta temporária
temp_folder <- tempdir()

# Baixar arquivos txt (zipados)
download.file(
url = "https://analisemacro.com.br/download/34322/",
destfile = paste0(temp_folder, "\\decotelli.zip"),
mode = "wb" # talvez você precise mudar esse argumento, dependendo do seu sistema
)

# Descompactar
unzip(
zipfile = paste0(temp_folder, "\\decotelli.zip"),
exdir = paste0(temp_folder, "txts")
)

# Listar arquivos na pasta
list.files(paste0(temp_folder, "txts"), pattern = ".txt")

# [1] "clovis-p ginas-1-13.txt" "cvm-p ginas-23-62.txt"
# [3] "decotelli-p ginas-9-83.txt" "rosa-p ginas-1-13.txt"

# Importar arquivos (se arquivos não tiverem marcador "End of Line" será gerado um warning
corpus <- textreuse::TextReuseCorpus( # cria uma estrutura Corpus (coleção de documentos)
dir = paste0(temp_folder, "txts"), # caminho para pasta com arquivos txt
tokenizer = tokenize_ngrams, # função para separar textos em tokens
progress = FALSE # não mostrar barra de progresso
)

Se você tiver dificuldades em importar os dados, é possível explorar os exemplos das Vignettes do pacote também.

Agora vamos inspecionar o que temos no objeto corpus:


# Exibir resultado
corpus

# TextReuseCorpus
# Number of documents: 4
# hash_func : hash_string
# tokenizer : tokenize_ngrams

Verificando a classe do objeto:


# Classe
class(corpus)

# [1] "TextReuseCorpus" "Corpus"

Quais documentos/textos temos no objeto corpus?


# Documentos importados
names(corpus)

# [1] "clovis-p ginas-1-13" "cvm-p ginas-23-62" "decotelli-p ginas-9-83"
# [4] "rosa-p ginas-1-13"

E, similarmente, podemos acessar os elementos do objeto:


# Acessando texto da dissertação de mestrado
corpus[[3]]

# TextReuseTextDocument
# file : C:\Users\ferna\AppData\Local\Temp\Rtmp6rA1wGtxts/decotelli-p ginas-9-83.txt
# hash_func : hash_string
# id : decotelli-p ginas-9-83
# minhash_func :
# tokenizer : tokenize_ngrams
# content : 1 – INTRODUÇÃO
#
# A moeda é sem dúvida a principal invenção do homem na área das ciências sociais. Criada para
# facilitar as trocas, viabilizando a especialização do trabalho, a moeda é de s

Perceba que há problemas de encoding, que para este exercício iremos simplesmente ignorar.

Índice de Jaccard

Com os dados preparados, podemos obter a estatística do Índice de Jaccard para medir a similaridade entre os textos, usando a função jaccard_similarity(), que compara um texto A com um texto B. Queremos fazer isso já para os 4, portanto usamos a função auxiliar pairwise_compare() que reporta a estatística de cada documento comparando a todos os demais (todos os pares possíveis), dentro do objeto corpus:


# Coeficientes de similaridade de Jaccard
comparisons <- textreuse::pairwise_compare(
corpus = corpus, # objeto com textos importados
f = jaccard_similarity # função para comparar os textos
)

# Resultado
comparisons

# clovis-p ginas-1-13 cvm-p ginas-23-62
# clovis-p ginas-1-13 NA 0.01308411
# cvm-p ginas-23-62 NA NA
# decotelli-p ginas-9-83 NA NA
# rosa-p ginas-1-13 NA NA
# decotelli-p ginas-9-83 rosa-p ginas-1-13
# clovis-p ginas-1-13 0.04087225 0.02439457
# cvm-p ginas-23-62 0.19385437 0.01169428
# decotelli-p ginas-9-83 NA 0.03302505
# rosa-p ginas-1-13 NA NA

O resultado de destaque mostra que o texto da dissertação de mestrado de Carlos Decotelli (decotelli-p ginas-9-83) comparado com o texto do relatório da CVM (cvm-p ginas-23-62) obteve um coeficiente de 0.19 (o valor máximo vai até 1), bem superior aos demais. Esse resultado dialoga com o que foi indicado por Thomas Conti em junho de 2020.

Vale frisar que existem outros métodos de comparação e funcionalidades que o pacote oferece, consulte a documentação.

Podemos facilmente converter o resultado, que é uma matriz, para um data frame com a função pairwise_candidates():


# Converter para data frame
comparisons_df <- textreuse::pairwise_candidates(comparisons)
comparisons_df

# A tibble: 6 x 3
# a b score
# * <chr> <chr> <dbl>
# 1 clovis-p ginas-1-13 cvm-p ginas-23-62 0.0131
# 2 clovis-p ginas-1-13 decotelli-p ginas-9-83 0.0409
# 3 clovis-p ginas-1-13 rosa-p ginas-1-13 0.0244
# 4 cvm-p ginas-23-62 decotelli-p ginas-9-83 0.194
# 5 cvm-p ginas-23-62 rosa-p ginas-1-13 0.0117
# 6 decotelli-p ginas-9-83 rosa-p ginas-1-13 0.0330

Por fim, vamos criar uma visualização dos resultados:


comparisons_df %>%
dplyr::filter(
stringr::str_detect(string = a, "decotelli") |
stringr::str_detect(string = b, "decotelli")
) %>%
dplyr::mutate(a = c("Machado-da-Silva et al.", "Relatório CVM", "Rosa & Coser")) %>%
ggplot2::ggplot(ggplot2::aes(x = reorder(a, score), y = score, fill = a)) +
ggplot2::geom_col() +
ggplot2::geom_text(
ggplot2::aes(
label = format(round(score, 2), decimal.mark = ",", )
),
position = ggplot2::position_stack(vjust = .5),
color = "white",
fontface = "bold",
size = 5
) +
ggplot2::scale_y_continuous(labels = scales::number_format(decimal.mark = ",", accuracy = 0.01)) +
ggplot2::scale_fill_manual(NULL, values = c("#b22200", "#282f6b", "#224f20")) +
ggplot2::theme_light() +
ggplot2::labs(
title = "Caso Decotelli: houve plágio?",
subtitle = "Coeficiente de similaridade com dissertação de mestrado de Decotelli (2008)",
y = "Índice de Jaccard",
x = NULL,
caption = "<span style = 'font-size:10pt'>**Dados** dos textos originais disponíveis em *Decotelli (2008)*: bit.ly/3pk8oOe*, Rosa & Coser (2003)*: bit.ly/3pqGQa4, *Machado-da-Silva et al. (1999)*: bit.ly/2Xxsjh2 e *Relatório CVM (2007)*: bit.ly/3aW5Kpz<br>**Elaboração**: analisemacro.com.br</span>"
) +
ggplot2::theme(
legend.position = "none",
axis.text = ggtext::element_markdown(size = 12, face = "bold"),
axis.title = ggtext::element_markdown(size = 12, face = "bold"),
plot.title = ggtext::element_markdown(size = 30, face = "bold", colour = "#282f6b"),
plot.subtitle = ggtext::element_markdown(size = 16),
plot.caption = ggtext::element_textbox_simple(
size = 12,
lineheight = 1,
margin = ggplot2::margin(10, 5.5, 10, 5.5)
)
)

 

 

O que achou? O pacote textreuse é bastante intuitivo e de fácil uso, de modo que até quem não tem conhecimento aprofundado de estatística, NLP, text mining, etc. consegue fazer análises simples como essa. Espero que o exercício tenha ajudado!

Referências

Recomenda-se consultar a documentação dos pacotes utilizados para entendimento aprofundado sobre as funcionalidades.

  • Jure Leskovec, Anand Rajaraman, and Jeff Ullman, Mining of Massive Datasets (Cambridge University Press, 2011).

 

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

Assinar Gratuitamente