Buscar

06-Estudo_de_Caso

Prévia do material em texto

Programação 
Estatística
Material Teórico
Responsável pelo Conteúdo:
Prof.ª Me. Jéssica Bárbara da Silva Ribas
Revisão Textual:
Prof.ª Dr.ª Luciene Oliveira da Costa Granadeiro 
Estudo de Caso 
• Introdução;
• Trabalhando com Dados não Estruturados – Texto;
• Analise Exploratória.
• Permitir que o aluno tenha uma experiência simulada com problemas reais, utilizando a 
linguagem R.
OBJETIVO DE APRENDIZADO
Estudo de Caso
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem 
aproveitado e haja maior aplicabilidade na sua 
formação acadêmica e atuação profissional, siga 
algumas recomendações básicas: 
Assim:
Organize seus estudos de maneira que passem a fazer parte 
da sua rotina. Por exemplo, você poderá determinar um dia e 
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos 
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua 
interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o 
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e 
de aprendizagem.
Organize seus estudos de maneira que passem a fazer parte 
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Determine um 
horário fixo 
para estudar.
Aproveite as 
indicações 
de Material 
Complementar.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
Não se esqueça 
de se alimentar 
e de se manter 
hidratado.
Aproveite as 
Conserve seu 
material e local de 
estudos sempre 
organizados.
Procure manter 
contato com seus 
colegas e tutores 
para trocar ideias! 
Isso amplia a 
aprendizagem.
Seja original! 
Nunca plagie 
trabalhos.
UNIDADE Estudo de Caso 
Introdução
Um estudo de caso existe para facilitar na investigação e compreensão de fenô-
menos cotidianos, que, algumas vezes, podem não estar tão evidentes no dia a dia 
(YIN, 2015).
Neste documento, iremos trabalhar com dois problemas comuns quando se tra-
balha com ciência de dados ou estatística. O primeiro deles é a necessidade de criar 
uma base de dados partindo de uma fonte de dados não estruturada.
Já o segundo ocorre quando recebe uma base de dados desconhecida e precisa-se 
conhecê-la para decidir que tipo de informação é possível extrair dela, ou que tipo de 
combinação com outros dados são necessários para gerar a informação. Em ambos 
os casos, temos um passo a passo das tarefas a serem realizadas e a interpretação 
dos resultados obtidos quando necessária.
Trabalhando com Dados não 
Estruturados – Texto
Nem todos os conjuntos de dados necessários para realizar determinada análise 
estatística estão disponíveis em forma estruturada. Por esse motivo, nesta sessão, 
serão abordados alguns conceitos relacionados a processamento de texto.
O processamento de texto pertence a uma área da inteligência artificial chama-
da Processamento de Linguagem Natural (PLN). Nos últimos anos, a PLN é um 
campo da ciência em expansão devido ao aumento de nossas necessidades de in-
terações com as máquinas (e softwares) de maneira amigável, como, por exemplo, 
a Siri do Iphone, ou o comando de voz OK Google – ambos são programas de 
interação por voz que contêm algoritmos de PLN.
Você deve estar se perguntando como pegar um texto, como, por exemplo, este 
material e fazer uma máquina entender seu conteúdo? Primeiramente, devemos 
entender que, por mais sofisticados que os algoritmos de PLN possam ser, eles não 
recebem como entrada um texto como este, “cru”.
NLP: O que é Processamento de Linguagem Natural e por que é o futuro? Disponível 
em: https://bit.ly/31XNi9yEx
pl
or
Como assim “cru”? É necessário realizar um pré-processamento do texto para 
passar ao algoritmo, pois, com um o pré-processamento, podemos criar o Dataset 
que precisamos.
8
9
Algumas vezes, a criação do conjunto de dados necessários por meio de dados 
não estruturados ou semiestruturados levará certa quantidade de tempo e empe-
nho, que pode ou não ajudar a alcançar os resultados desejados.
A Coleta dos Dados
Uma das formas mais comuns de se capturarem dados para realizar PLN é a 
utilização de tweets no Twitter. Contudo, como nem tudo nesta vida são flores, 
algumas vezes (quase sempre no caso de estatísticos e economista), os dados que 
eles precisam podem ser dados abertos disponibilizados pelo governo em forma de 
relatórios (geralmente arquivos PDF).
Quase sempre há os microdados em TXT, ou algum arquivo XLS ou CSV. 
Porém, isso não é uma regra, então tenha em mente que, a partir desse ponto, não 
ter dados estruturados não será mais desculpa para abandonar o trabalho.
Para trabalhar com arquivos PDF, o R disponibiliza o pacote “pdftools”. A par-
tir desse ponto, iremos usar também os pacotes: “stringr”, “dplyr”, “NLP”, “tm”, 
“wordcloud”, “RColorBrewer”, “ggplot2”. Instale todos eles.
O objetivo desse exemplo será a utilização do pré-processamento de texto para 
saber a frequência de determinadas palavras em um documento, fazer uma nuvem 
de palavras e gráfico de barras.
Aparentemente, nosso objetivo não é tão ambicioso, mas já adiantamos que será 
divertido e trabalhoso.
O arquivo utilizado é uma pesquisa realizada pela OXFAM Brasil, chamada nós 
e as desigualdades1. Neste momento, não vamos explicar sobre do que trata o rela-
tório, mas vamos ver se descobrimos ao olhar as nuvens de palavras.
Manipulação dos Dados
Na importação de um arquivo PDF, devemos atentar que não há nenhuma op-
ção no RStudio. Nós iremos criar um objeto apontando os caminhos para o(s) 
arquivo(s) PDF e executar a função “pdf_text()” para extrair o conteúdo do PDF 
para um objeto, podendo ser salvo em arquivo TXT sem nenhum problema.
A Figura 1 mostra a extração do texto do relatório para o objeto txt, utilizando a 
função “pdf_text()”. A saída da função “pdf_text()” é um vetor do tipo “character” 
em que cada posição do vetor será uma página do documento.
Caso queira dados específicos de algumas páginas, pode realizar isso facilmente 
indicando a página desejada e realizando as ações necessárias, como, por exemplo, 
retirar do texto somente aqueles elementos, realizando uma busca pelas palavras-
-chaves de início e fim do trecho necessário.
1 https://bit.ly/2D6Wz57
9
UNIDADE Estudo de Caso 
Figura 1 – Utilização das funções “pdf_text()” e “cat()”
Na Figura 1, foi utilizada a função “cat()” para visualizar o valor do objeto txt, em 
forma de texto, livre da estrutura de vetor. Faça um teste: visualize o objeto txt ds 
em duas formas e tente notar a diferença.
Agora, vamos extrair o texto de cada índice do vetor que não está em branco (“ ”) 
ou nulo, colocando tudo em um objeto String, para manipular os dados em um único 
nível de hierarquia.
Figura 2 – Utilização do comando For para percorrer todo o vetor e 
concatenando as posições do vetor não vazias num objeto string
Na Figura 2, temos um laço de repetição “For”, contendo uma condição, se a 
posição i do vetor não estiver nula, concatena seu valor no objeto valor. A função 
para concatenar, ou seja, juntar Strings no R é a função “paste()”; nessa função, é 
10
11
necessário indicar como irá separar uma String da outra. Nesse caso, foi utilizado 
o símbolo de quebra de linha “\n”.
Visualize o objeto valor, note que ele possui apenas uma posição contendo so-
mente o texto e suas marcações de quebra de linha, tabulação, alinhamento.
Agora vamos começar a manipular o texto, a primeira coisa que vamosfazer é 
separar cada linha do texto em uma posição do vetor. Pode parecer absurdo juntar 
as páginas e agora separar as linhas. Mas não é. Primeiro, juntar todo o documento 
pode facilitar a realização de buscas nele por palavras chaves e termos.
Para partir uma String, utilizaremos a função “str_split()”, passando a ela o ob-
jeto e o critério de separação; nesse caso, será a marcação “\n”. O resultado será 
uma lista com cada posição, um “pedaço” da String.
Figu ra 3 – A separação do texto em linhas e colocar, 
onde cada uma delas será a posição de um Data Frame/Tibble
A Figura 3 apresenta três blocos de códigos para realizar a quebra da String 
em linhas, depois, a conversão do vetor em data frame e a exclusão das linhas em 
branco. Os três blocos seguem as recomendações para manipulação de dados do 
pacote “dplyr”, utilizando o operador “%>%”, as funções “select()” e “filter()”. 
No segundo bloco de código, a função “as_data_frame()” transforma o vetor 
em objeto data frame e, após passar pelas funções “select()” e “filter()”, passa a 
ser um Tibble.
Pré-processamento de Texto
Após a manipulação do arquivo texto, deixando na estrutura o que lhe for mais 
conveniente, vamos iniciar a fase de pré-processamento de texto. Nessa fase, va-
mos retirar do texto aquilo que é considerado sujeira ou ruído, como, por exemplo, 
as marcas de formatação: “\n,” “\r”, “\t”.
A Figura 4 mostra a utilização da função corpus, que transforma o data frame 
em um vetor contento os metadados necessários para as funções da limpeza do 
texto. A função “inspect()” irá mostrar o conteúdo do texto salvo na estrutura do 
objeto corpus.
11
UNIDADE Estudo de Caso 
Figura 4 – inserção do Texto na estrutura de Tiible no Corpus para o pré-processamento
Ainda na Figura 4, é apresentada a função tm_map(), onde irá aplicar uma 
função específica ao objeto corpus. Nesse caso, começamos deixando todas as 
palavras em letras minúsculas, depois, removemos a pontuação e os números.
Na Figura 5, temos a continuação do processo, onde vamos remover as palavras 
chamadas StopWords, ou seja, as palavras “irrelevantes” como os conectores: e, 
a, as, para, de, entre outras. Quando vamos remover as StopWords, precisamos 
indicar o idioma.
Lista de StopWords. Disponível em: https://bit.ly/2ZmihKH
Ex
pl
or
Após a remoção das palavras, iremos reduzir as palavras em seu radical, por 
exemplo: emprego, empregado, empregador, todas as palavras possuem o radical 
“empreg” e são relacionadas ao mesmo assunto. Essa fase não é obrigatória na 
contagem das palavras, mas pode ser que o resultado final fique interessante, ao 
agrupar as palavras com o mesmo radical.
Figura 5 – Eliminação de conectores, redução das palavras ao radical e o cálculo da frequência das palavras
Agora vamos calcular a frequência das palavras utilizando a função “TermDo-
cumentMatrix()”, onde passamos a corpus processado e será montada uma matriz 
de frequência; num primeiro momento, para visualizá-la, precisa utilizar a função 
“inspect()”. Contudo, basta converter para uma matriz com a função “as.matrix()”.
12
13
Visualização
A primeira visualização realizada é a nuvens de palavras, que nada mais é que 
uma representação gráfica contendo os termos mais relevantes da lista. O tamanho 
das palavras está relacionado à sua frequência, quanto maior for a frequência da 
palavra, maior será o seu tamanho no diagrama.
Figura 6 – Contagem da frequência das palavras na matriz e cria duas nuvens de palavras
A Figura 6 contém os três blocos de códigos referentes à contagem dos termos 
da matriz de palavras m, à transformação dessa contagem em um data frame e à 
criação de duas nuvens de palavras, uma sequencial e outra com valores aleatórios.
Como precisamos converter a matriz de palavras do corpus, para uma matriz 
convencional, perdemos o agrupamento automático que o corpus faz. Então preci-
samos calcular na mão.
Após isso, utilizamos a função “wordcloud()”, para gerar as nuvens de palavras 
a e b da Figura 7. A nuvem contém os termos com a fremência mínima de 10 
palavras. Já na nuvem b colocamos o parâmetro “rot.per=0.3”, onde diminuiu a 
quantidade de palavras e a forma como se organizam; indicamos experimentar 
variar esse parâmetro e ver outros layouts.
Figura 7 – Nuvens de palavras resultantes após a execução da função “wordcloud()”
Gerando Nuvens de palavras no R. Disponível em: https://bit.ly/2Zkj66O
Ex
pl
or
13
UNIDADE Estudo de Caso 
Agora, vamos fazer um gráfico de barras contendo as 10 palavras mais usuais 
no documento. Para tanto, vamos utilizar o pacote “ggplot2”. A primeira coisa a ser 
feita é organizar a base de dados de maneira a facilitar a plotagem do gráfico para 
que ele passe a mensagem desejada.
Como a contagem para a nuvem de palavras passou por algumas funções es-
pecíficas de mineração de texto, essa tinha alguns ruídos para o ggplot2, por isso 
foi necessário criar um data frame chamado bd e depois selecionar somente as 10 
primeiras linhas, conforme mostrado na Figura 8.
Figura 8 – Organização dos dados e plotagem do gráfico das 10 palavras mais frequentes
A Figura 9 mostra o gráfico de barras que possui um fato interessante: a segunda 
palavra mais usual foi o sinal de travessão, além da presença das aspas. Logo, está 
faltando algum passo no pré-processamento para evitar essa sujeira remanescente. 
Figura 9 – Gráfico das 10 palavras mais frequentes
Apesar de poder verificar esse problema durante todo o processo, quando visu-
alizamos os dados no corpus, ou na matriz de frequência, deixamos esse detalhe 
de lado, pois pretendíamos mostrar que esse tipo de coisa pode ocorrer, mesmo 
quando tomamos todo o cuidado no trabalho com texto.
Indicamos voltar ao passo a passo do corpus e remover os sinais errados e 
reprocessar o resto do script. Será um treino de criação de base de dados por con-
junto de dados não estruturado.
Após você observar as palavras da nuvem e do gráfico, juntamente com o título 
do relatório, dá para ter uma ideia sobre o assunto, não é mesmo? o texto fala sobre 
14
15
as desigualdades no Brasil em renda e acessos a recursos básicos, como saúde, edu-
cação, saneamento básico etc.
Analise Exploratória
No dia a dia, normalmente, nós nos deparamos com um conjunto desconhecido, 
no qual não há menor ideia para que foi criado e o que pode ser feito com ele, no 
sentido de estática ou complementação da base. 
Nesses casos, o que deve ser feito é uma análise exploratória dos dados, tanto 
de forma matemática quanto gráfica. Para essa tarefa, vamos utilizar os pacotes: 
“mlbench”, “e1071”, “lattice”, “Amelia”, “corrplot”, “caret”, “ggplot2”. E a base de 
dados “PimaIndiansDiabetes”.
A primeira coisa a ser feita é conhecer a estrutura da base de dados, por exemplo, 
dimensão da base, tipo de dados, cabeçalhos, conforme mostrado na Figura 10.
Figura 10 – Conhecendo a estrutura da base de dados, cabeçalho, dimensão e tipos de dados
A função “head()” irá listar um data frame com um o cabeçalho. Nesse caso, 
colocamos o parâmetro “n=3”, para exibir somente as três primeiras linhas. 
A função “dim()” retorna à quantidade de linhas e colunas do objeto. A função 
“sapply(PimaIndiansDiabetes, class)” está aplicando a função “class” para cada 
coluna do objeto, por isso temos o retorno do tipo de casa um.
apply, lapply, sapply, tapply, mapply… Como é mesmo? Disponível em: https://bit.ly/2TSUHUN
Ex
pl
or
15
UNIDADE Estudo de Caso 
O segundo passo é conhecer os dados em si, sua estatística descritiva, distribuição, 
desvio padrão, assimetria, correlação entre as variáveis. A Figura 11 mostra como 
realizar essas ações. Para estatística descritiva, basta usar a função “summary()”, que 
irá calcular média, mediana, menor valor, maior valor, primeiro e terceiro quartil para 
cada coluna.
Figura 11 – Conhecendo os dados: estatística descritiva, desvio padrão, correlação, assimetria
A distribuição de classes refere-se ao percentual com que cada classe aparece 
na base, por exemplo, a coluna $diabetespossui duas classes, pos e neg, após o 
cálculo, sabemos que aproximadamente 65% é neg e 35% é pos.
A função “sapply(PimaIndiansDiabetes[,1:8], sd)” aplica a função de desvio pa-
drão sd(), no objeto entre as colunas 1 a 8. Enquanto a função “apply(PimaIndians
Diabetes[,1:8], 2, skewness)” verifica a assimetria entre as colunas 1 a 8 do objeto.
O teste de correlação verifica se existe algum tipo de relação entre as colunas 
do data frame; se o resultado for 1 ou próximo a 1, existe uma relação forte, se o 
valor for 0.1 ou abaixo de 0.5, a correlação é fraca ou inexistente, já em valores a 
partir de 0.5, existe uma correlação moderada.
O terceiro e último passo é realizar a análise exploratória utilizando gráficos. 
Aliás, podemos inverter a ordem, visualizar primeiro e calcular depois, pois ambos 
são complementares.
Figura 12 – Análise gráfica de cada variável de maneira independente
16
17
A Figura 12 mostra a codificação para os gráficos histogramas, densidade e 
boxplot, em que irá mostrar o valor de cada coluna num grupo; porém, elas são 
consideradas de maneira independentes (uni variadas).
Figura 13 – Có digo para o gráfi co de correlação multivariado
Na Figura 13, temos o código para o gráfico de correlação multivariado, ou seja, va-
mos verificar de forma gráfica, quais variáveis interagem entre si. O gráfico foi montado 
como uma matriz, onde o cabeçalho e as linhas são as variáveis. O quadrado de en-
contro entre cada variável terá uma cor correspondente ao valor do teste de correlação.
O teste de correlação varia de -1 a 1, sendo que os valores negativos indicam 
uma correlação negativa. Porém, a regra indica que valores menores de 0.5 são de 
fraca correlação, a partir de 0.5, é moderada, e quanto mais próximo de 1 mais 
forte é a correlação. Isso também vale nas correlações negativas. 
Figura 14 - G rá fi co de correlação
Conforme mostra a Figura 14, as correlações mais fortes foram o encontro das 
variáveis com elas mesmas, na diagonal em azul escuro. O segundo valor significa-
tivo foi o encontro das variáveis idade (age) e gravidez (pregnant), resultando 0.54.
17
UNIDADE Estudo de Caso 
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Sites
Análise exploratória de dados
ECOR. Análise exploratória de dados.
https://bit.ly/2pUyxFy
WordCloud no R
FILGUEIRA, L. – WordCloud no R- SER.
https://bit.ly/2MAtqp1
Análise exploratória de dados Com R
MOURA, W. Análise exploratória de dados Com R.
https://bit.ly/31YSudb
Produção Animal dicas sobre o software R para zootecnistas. Entendendo o uso das funções apply, lapply, sapply, 
tapply, mapply
PRODUÇÃO A – Produção Animal dicas sobre o software R para zootecnistas. 
Entendendo o uso das funções apply, lapply, sapply, tapply, mapply.
https://bit.ly/2KP02cU
Qual a importância da analise exploratória de dados?
RAMOS, R. Qual a importância da analise exploratória de dados? 
https://bit.ly/2kukNzV
18
19
Referências
CRAN. The Comprehensive R Archive Network. Site: <https://cran.r-project.
org>. Acesso em: 05/2019.
DA SILVA, L. A.; PERES, S. M.; BOSCARIOLI, C. Introdução à mineração de 
dados: com aplicações em R. Elsevier Editora LTDA, Rio de Janeiro, Brasil, 2017.
ESTATISTIC BERKELEY, Department of Statistic Berkeley. Factors in R. 
Disponível em: <https://www.stat.berkeley.edu/~s133/factors.html>. Acesso em: 
06/2019.
FERREIRA, E.; LISBOA, W. Introdução ao R. Disponível em: <https://book-
down.org/wevsena/curso_r_tce/curso_r_tce.html>. Acesso em: 06/19.
OLIVEIRA, P. F. de; GUERRA, S.; MCDONNEL, R. Ciência de Dados com R – 
Introdução. Brasília: IBPAD, 2018. Disponível em: <https://www.ibpad.com.br/o-
que-fazemos/publicacoes/introducao-ciencia-de-dados-com-r/>
WICKHAM, H. R for Data Science. O’Reilly, 2017. Disponível em <https://r4ds.
had.co.nz>
WICKHAM, H. Advanced R Syle Guide. Site: < http://adv-r.had.co.nz/Style.html >. 
Acesso em: 05/2019.
YIN, R. K. Estudo de Caso: Planejamento e métodos. Bookman Editora LTDA, 
Porto Alegre, Brasil, 2015.
19

Continue navegando