| uf | n |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
EST024 - Pesquisa de Opinião e Mercado
Antes de iniciar nossa aula:
Abra o RStudio.
Crie um novo script.
Crie uma pasta na área de trabalho com seu nome.
Defina a pasta como diretório de trabalho
Salve o script criado na pasta com o nome "aula12_est024.R".
Baixe do Moodle o arquivo Pesquisa Secom 07/2022.rar e extraia na pasta criada.
Leia o arquivo Rodada 02_F2F_BDvFinal.xlsx para o objeto pesquisa_secom e limpe os nomes com a função clean_names do pacote janitor.
Estatística Descritiva é um conjunto de metodologias utilizada para explorar e descrever características presentes em conjuntos de dados.
De modo geral, podemos dividí-la em algumas classes de objetos utilizados com a finalidade de descrever as referidas características:
Medidas de resumo (média, variância, proporção, moda)
Gráficos (barras, boxplots, histogramas, …)
Tabelas
O tipo de objeto utilizado para a descrição de uma variável depende de sua natureza, sobretudo de sua escala: qualitativa nominal, qualitativa ordinal, quantitativa discreta ou quantitativa contínua.
Em Pesquisa de Opinião e Mercado, em função da natureza das variáveis, existe uma preponderância de variáveis qualitativas em detrimento das quantitativas. Por exemplo, são muito utilizados dados em escalas do tipo Likert.
Nesse sentido, as estatísticas descritivas mais utilizadas são aquelas baseadas em frequências:
Gráficos: Barras, setores, e suas variações.
Tabelas: Frequência simples, frequência acumulada, frequência cruzada.
Vamos explorar alguns pacotes voltados para apresentação de dados dessa natureza, com algum nível de sofisticação, em relação às opções oferecidas nativamente pelo R e pelo tidyverse.
Para tabelas utilizaremos o pacote gt, um pacote voltado para a construção de tabelas com visual mais refinado, além de pacotes complementares como o gtsummary.
Para dados de escala Likert, utilizaremos o pacote likert, que apresenta uma série de opções que facilitam a análise de dados desse tipo de escala ordinal.
gtConforme descrito em sua página (https://gt.rstudio.com/), o pacote gt é votado para o desenvolvimento de tabelas bonitas e funcionais de forma simplificada.
Uma tabela gerada pelo pacote gt parte de um conjunto de dados e gera um objeto em formato HTML, LaTex ou RTF (Word e afins)
Para ilustrar as funcionalidades, do pacote, vamos partir de uma tabela simples.
gt - Tabela básicaA principal função do pacote é homônima: gt. Ela transforma um dataframe, tibble ou objeto similar em um objeto do tipo gt.
Vamos utilizar nosso banco de dados pesquisa_secom para criar uma tabela de frequência com os 5 estados commais participantes, em ordem decrescente.
| uf | n |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
gt - Elementos adicionaisA partir de uma tabela básica, podemos incluir novos elementos, de acordo com o esquema a seguir:
Vejamos a função responsável pela adição de cada elemento
gt - Elementos adicionaisTítulo e subtítulo - tab_header()
Fontes e outras informações sobre os dados - tab_source_note()
Notas de rodapé - tab_footnote()
Grupos de linhas coluna - funções tab_row_group() e tab_spanner()
Cada uma dessas funções apresenta seus próprios parâmetros. Para entender seu funcionamento, vamos incluir alguns elementos em nossa tabela simples.
Vamos salvar nossa tabela base no objeto tab_uf:
gt - CabeçalhoVamos incluir os seguintes elementos em nossa tabela:
Título: Entrevistas por estado
Subtítulo: Cinco estados com mais entrevistas
gt - CabeçalhoO pacote também aceita formatação Markdown, por meio da função md(). Por exemplo, vamos dar ênfase em algumas palavras de nossos títulos com negrito (**) e itálico (*), além de armazenar a tabela atualizada.
gt - Fonte e informaçõesVamos incluir agora as seguintes informações relacionada à fonte dos dados:
Fonte: Governo Federal - Secretaria de Comunicação (SECOM)
Pesquisa realizada em julho de 2022
| Entrevistas por estado | |
| Cinco estados com mais entrevistas | |
| uf | n |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
| Fonte: Governo Federal - Secretaria de Comunicação (SECOM) | |
| Pesquisa realizada em julho de 2022 | |
gt - Notas de rodapéNotas de rodapé são informações específicas relacionadas a uma ou mais células. Por esse motivo, elas geralmente são adicionadas com base em algum critério e sinalizadas na tabela e na fonte com algum elemento de identificação.
No pacote gt elas são adicionadas por meio da função tab_footnote(). Como se trata de células específicas, é necessário indicar a que célula se refere a nota. Para tal, existem algumas possibilidades de indicação:
nomes de linhas e colunas.
índices de células.
comparação lógica.
Tais parâmetros devem ser passados por meio do parâmetro locations, dentro da função cells_body(). Na função cells_body(), os parâmetros rows e columns indicam o local das notas rnorm(2).
gt - Notas de rodapéVamos incluir as seguintes notas de rodapé usando os métodos de identificação listados anteriormente:
Estado mais populoso do país (SP)
Melhor estado do país (MG)
Estado com menor número de entrevistas (RS)
gt - Notas de rodapétab_uf <- tab_uf %>%
tab_footnote(footnote = "Estado mais populoso do país",
locations = cells_body(columns = uf, rows = 1)) %>%
tab_footnote(footnote = "Melhor estado do país",
locations = cells_body(columns = uf, rows = uf == "Minas Gerais")) %>%
tab_footnote(footnote = "Estado com menor número de entrevistas",
locations = cells_body(columns = n, rows = n == min(n)))
tab_uf| Entrevistas por estado | |
| Cinco estados com mais entrevistas | |
| uf | n |
|---|---|
| São Paulo1 | 452 |
| Minas Gerais2 | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 3 104 |
| Fonte: Governo Federal - Secretaria de Comunicação (SECOM) | |
| Pesquisa realizada em julho de 2022 | |
| 1 Estado mais populoso do país | |
| 2 Melhor estado do país | |
| 3 Estado com menor número de entrevistas | |
gt - Agrupamento de variáveisAo se trabalhar com tabelas, em alguns momentos é interessante segmentar nossos dados em grupos.
Nesse contexto, é possível agrupar os dados por linhas e colunas.
Vamos trabalhar o agrupamento por linhas e colunas em uma nova tabela, que considerará o número de entrevistas dos 10 estados com mais entrevistas
gt - Agrupamento de variáveis| uf | n |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
| Paraná | 89 |
| Pernambuco | 80 |
| Santa Catarina | 80 |
| Ceará | 79 |
| Pará | 78 |
gt - Trabalhando com LinhasPrimeiramente, vamos transformar a coluna uf em rótulo. Para isso, basta utilizar o parâmetro rowname_col na função gt().
| n | |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
| Paraná | 89 |
| Pernambuco | 80 |
| Santa Catarina | 80 |
| Ceará | 79 |
| Pará | 78 |
gt - Trabalhando com LinhasPerceba que a coluna não possui mais o rótulo uf. Podemos atribuir um novo rótulo por meio da função tab_stubhead(). A partir desse momento, a coluna Estado não é mais tratada como variável.
| Estado | n |
|---|---|
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
| Bahia | 143 |
| Rio Grande do Sul | 104 |
| Paraná | 89 |
| Pernambuco | 80 |
| Santa Catarina | 80 |
| Ceará | 79 |
| Pará | 78 |
gt - Trabalhando com LinhasPara criar um grupo de linhas, basta utilizar a função tab_row_group(). Assim como nas notas de rodapé, devemos informar quais linhas compõe cada grupo, por meio do índice, rótulos ou comparação.
| Estado | n |
|---|---|
| Região norte | |
| Pará | 78 |
| Região Sul | |
| Rio Grande do Sul | 104 |
| Paraná | 89 |
| Santa Catarina | 80 |
| Região Nordeste | |
| Bahia | 143 |
| Pernambuco | 80 |
| Ceará | 79 |
| Região Sudeste | |
| São Paulo | 452 |
| Minas Gerais | 211 |
| Rio de Janeiro | 156 |
gt - Trabalhando com ColunasAssim como podemos criar grupos de linhas, podemos agrupar variáveis por colunas, com a função tab_spanner(). Para ilustrar, vamos criar algumas estatísticas descritivas com a idade e a avaliação da educação estadual informada pelos participantes (pf1 e p32).
descritiva <- pesquisa_secom %>%
dplyr::filter(p32 %in% c("Regular", "Boa", "Ótima", "Péssima", "Ruim")) %>%
mutate(p32 = factor(p32, levels = c("Péssima", "Ruim", "Regular", "Boa", "Ótima", ""))) %>%
group_by(p32) %>%
summarise(media = mean(pf2), mediana = median(pf2),
variancia = var(pf2), desvio = sd(pf2)) %>%
gt(rowname_col = "p32") %>%
tab_stubhead(label = "Avaliação da educação estadual") %>%
tab_header(title = "Avaliação da educação estadual - Comparativo por idade",
subtitle = "Estatísticas descritivas")
descritiva| Avaliação da educação estadual - Comparativo por idade | ||||
| Estatísticas descritivas | ||||
| Avaliação da educação estadual | media | mediana | variancia | desvio |
|---|---|---|---|---|
| Péssima | 43.84848 | 43 | 260.8943 | 16.15222 |
| Ruim | 36.63399 | 35 | 195.7467 | 13.99095 |
| Regular | 41.74165 | 39 | 278.9655 | 16.70226 |
| Boa | 41.85421 | 41 | 279.2559 | 16.71095 |
| Ótima | 40.80874 | 40 | 234.1335 | 15.30142 |
gt - Trabalhando com ColunasPara agrupar as estatísticas descritivas em tendência central e dispersão, podemos usar a função tab_spanner(). O rótulo deve ser inserido no parâmetro label e as colunas que ficaram agrupadas em cada rórulo devem ser informadas no parâmetro column.
| Avaliação da educação estadual - Comparativo por idade | ||||
| Estatísticas descritivas | ||||
| Avaliação da educação estadual |
Tendencia central
|
Dispersão
|
||
|---|---|---|---|---|
| media | mediana | variancia | desvio | |
| Péssima | 43.84848 | 43 | 260.8943 | 16.15222 |
| Ruim | 36.63399 | 35 | 195.7467 | 13.99095 |
| Regular | 41.74165 | 39 | 278.9655 | 16.70226 |
| Boa | 41.85421 | 41 | 279.2559 | 16.71095 |
| Ótima | 40.80874 | 40 | 234.1335 | 15.30142 |
Por fim, para nossa tabela ficar em um formato final, podemos corrigir o nome das colunas, por meio da funçãoo cols_label():
| Avaliação da educação estadual - Comparativo por idade | ||||
| Estatísticas descritivas | ||||
| Avaliação da educação estadual |
Tendencia central
|
Dispersão
|
||
|---|---|---|---|---|
| Média | Mediana | Variância | Desvio Padrão | |
| Péssima | 43.84848 | 43 | 260.8943 | 16.15222 |
| Ruim | 36.63399 | 35 | 195.7467 | 13.99095 |
| Regular | 41.74165 | 39 | 278.9655 | 16.70226 |
| Boa | 41.85421 | 41 | 279.2559 | 16.71095 |
| Ótima | 40.80874 | 40 | 234.1335 | 15.30142 |
gtExistem outras funções adicionais, voltadas para formatação, mas não entraremos em detalhes nessa aula.
Detalhes sobre formatação podem ser encontrados no link https://gt.rstudio.com/reference/tab_style.html
Caso queiram se aprofundar nas funções do pacote, existem muitos materiais disponíveis na própria página do pacote: https://gt.rstudio.com/
gt + gtsummaryConforme vimos, o pacote gt apresenta opções excelentes para a criação de tabelas complexas e com excelente formatação.
o pacote gtsummary expande essas características e facilita a construção de tabelas com estatísticas descritivas.
Hoje apresentaremos apenas uma introdução às funções básicas do pacote. Nas próximas aulas exploraremos mais suas funções.
gt + gtsummary - Estatísticas descritivasAo utilizar a função tbl_summary, criamos com facilidade uma tabela de estatísticas descritivas de variáveis de nosso banco de dados. Ela detecta automaticamente o tipo de variável. Veja o exemplo a seguir:
| Characteristic | N = 2,0311 |
|---|---|
| pf1 | |
| Feminino | 1,027 (51%) |
| Masculino | 1,004 (49%) |
| pf2 | 40 (27, 54) |
| 1 n (%); Median (Q1, Q3) | |
Nas próximas aulas testaremos outras funcionalidades do pacote gtsummary.
Dados em escala Likert usualmente se apresentam como uma combinação de variáveis que utilizam uma mesma escala de intensidade.
Apesar dessa combinação, muitas vezes se analisa cada variável de maneira isolada, seja por desconhecimento dos métodos, seja por limitação dos pacotes de visualização.
Para facilitar a análise descritiva desse tipo de dados, podemos utilizar o pacote likert.
likertO pacote likert permite a comparação de variáveis em uma mesma escala, por meio de diversos tipos de gráficos e opções de classificação, como ordenação por intensidade, agrupamento por variável, dentre outras.
Vamos explorar algumas possibilidades com a variável p29, que avalia a satisfação com a saúde pública. Ela possui uma escala likert com os seguintes níveis:
Muito satisfeito
Satisfeito
Mais ou menos satisfeito
Pouco satisfeito
Nada satisfeito
likertA função básica do pacote é homônima: likert(). Ela converte um grupo de variáveis em um objeto do tipo likert. Mas antes vamos converter nossa variável em fator para facilitar o trabalho. Além disso, vamos alterar o nome das variáveis, dado que elas estão rotuladas.
Também é necessário converter nosso banco de dados para dataframe, pois o pacote não trabalha com tibble.
niveis <- c("Nada satisfeito", "Pouco satisfeito", "Mais ou menos satisfeito", "Satisfeito", "Muito Satisfeito")
rotulos <- c("Nada satisfeito", "Pouco satisfeito", "Mais ou menos satisfeito", "Satisfeito", "Muito Satisfeito")
nomes <- c("Hospital Público", "Pronto Socorro Público", "Posto de saúde público", "Campanhas de vacinação", "SAMU")
saude <- pesquisa_secom %>%
mutate(across(starts_with("p29"), function(x)factor(x, levels = niveis, labels = rotulos))) %>%
select(starts_with("p29")) %>%
set_names(nomes) %>%
as.data.frame() likertO primeiro passo é converter os dados em um objeto likert.
Item Nada satisfeito Pouco satisfeito
1 Hospital Público 21.359716 24.353120
2 Pronto Socorro Público 21.641026 21.282051
3 Posto de saúde público 18.049271 19.557567
4 Campanhas de vacinação 4.270109 6.206554
5 SAMU 14.467849 15.188470
Mais ou menos satisfeito Satisfeito Muito Satisfeito
1 26.48402 25.01268 2.790462
2 28.20513 25.89744 2.974359
3 25.38964 33.18250 3.821016
4 11.22145 62.95929 15.342602
5 19.51220 43.79157 7.039911
Note que os dados foram convertidos em percentuais. A partir desse objeto podemos criar nossas visualizações.
likert - ResumoA primeira coisa que podemos visualizar é o resumo. O pacote entende pelo número de níveis e seu ordenamento se a avaliação é positiva, neutra ou negativa:
| Item | low | neutral | high | mean | sd | |
|---|---|---|---|---|---|---|
| 4 | Campanhas de vacinação | 10.48 | 11.22 | 78.3 | 3.789 | 0.9242 |
| 5 | SAMU | 29.66 | 19.51 | 50.83 | 3.137 | 1.197 |
| 3 | Posto de saúde público | 37.61 | 25.39 | 37 | 2.852 | 1.175 |
| 2 | Pronto Socorro Público | 42.92 | 28.21 | 28.87 | 2.673 | 1.162 |
| 1 | Hospital Público | 45.71 | 26.48 | 27.8 | 2.635 | 1.152 |
Perceba que os dados foram automaticamente ordenados.
likert - GráficoSe dermos um plot no objeto lik_saude, teremos o gráfico padrão:
A partir desse gráfico, é possível aplicar algumas variações.
likert - GráficoVariações do gráfico likert são geradas por meio de parâmetros:
ordered - Define se o gráfico será ordenado
centered - Define se o gráfico será centrado na avaliação neutra
center - Define qual a categoria central. Útil para escalas assimétricas.
include.center - A categoria central deve ser exibida? Útil para omitir avaliações neutras
grouping - Define uma variável de agrupamento.
low.color e high.color - Altera as cores das escalas.
Vamos ver alguns exemplos dos nossos dados utilizando esses parâmetros.
likert - Gráficolikert - Gráficolikert - GráficoNesse caso, apenas a pior avaliação seria considerada negativa
likert - GráficoAqui omitimos a classe neutra
likert - GráficoAqui alteramos as cores e a localização da escala.
likert - GráficoVamos agrupar os dados por sexo. Pra isso precisamos agrupar os dados por uma segunda variável:
likert - GráficoTambém podemos plotar o mapa de calor e a densidade dos dados
likert - GráficoAmbos os pacotes são bastante úteis na análise de dados categóricos, em especial em dados de pesquisa de opinião.
O objetivo deste material é apresentar opções. Os pacotes possuem uma série de opções que podem e devem ser exploradas.
No decorrer do curso exploraremos mais algumas opções desses pacotes.
gt, elabore uma tabela que contenha as frequências relativas das variáveis idade e escolaridade (pf3). Inclua um título e um subtítulo, a fonte dos dados e notas de rodapé nas classes com maior e menor frequência.pf15 - avaliação do governo federal em diferentes áreas. Crie duas versões, uma com a escala neutra, outra sem a presença da escala neutra.