class: center, middle, inverse, title-slide # Visualizando dados numéricos e categóricos ###
Renata Oliveira --- layout: true <div class="my-footer"> <span> <a href="https://places.education" target="_blank">https://places.education</a> </span> </div> --- class: center, middle ## Retrospecto --- ## Modelo conceitual da análise de dados ![Modelo de Data Science](https://retaoliveira.github.io/relements/figures/dataR.png) --- ## Tipos de dados - Os tipos de dados mais comuns são `character`, `numeric`, `factor`e `logical`. ## Tipos de classes de objetos no R - As classes de organização dos dados mais comuns são `vector`, `list`, `matrix` e `dataframe`. --- ## RMarkdown <img src="img/render.png" width="100%" style="display: block; margin: auto;" /> .footnote[ Alison Hill [Teaching in Production](https://rstudio-education.github.io/teaching-in-production/slides/index.html#1) ] --- ## ggplot2 - ggplot() é a função principal no ggplot2 - As parcelas são construídas em camadas - A estrutura do código para as parcelas pode ser resumida como --- ## Número de variáveis envolvidas - Análise univariada de dados - distribuição de uma única variável - Análise de dados bivariados - relação entre duas variáveis - Análise multivariada de dados - relação entre muitas variáveis ao mesmo tempo, geralmente focalizando a relação entre duas, enquanto condiciona para outras --- ## Tipos de variáveis - As variáveis **numéricas** podem ser classificadas como **contínuas** ou **discretas** considerenado se a variável pode ou não assumir um número infinito de valores ou apenas números inteiros não negativos, respectivamente. - Se a variável for **categórica**, podemos determinar se ela é **ordinal** tendo em conta se os níveis têm ou não uma ordenação natural. --- class: middle # Dados --- ## Dados: Empréstimos - Milhares de empréstimos são feitos anualmente, que várias empresas, operando apenas por meio de plataformas digitais, permitem empréstimos de valores monetários para diferentes pessoas. - Nem todos os empréstimos são autorizados e gerados de maneira igual - a facilidade de obter um empréstimo depende da capacidade (aparente) que o indivíduo tem de pagar o empréstimo - Os dados desta atividade são fictícios. --- ## Dê uma olhada nos dados .small[ ```r library(openintro) ``` ``` ## Warning: package 'openintro' was built under R version 4.1.3 ``` ```r glimpse(loans_full_schema) ``` ``` ## Rows: 10,000 ## Columns: 55 ## $ emp_title <chr> "global config enginee~ ## $ emp_length <dbl> 3, 10, 3, 1, 10, NA, 1~ ## $ state <fct> NJ, HI, WI, PA, CA, KY~ ## $ homeownership <fct> MORTGAGE, RENT, RENT, ~ ## $ annual_income <dbl> 90000, 40000, 40000, 3~ ## $ verified_income <fct> Verified, Not Verified~ ## $ debt_to_income <dbl> 18.01, 5.04, 21.15, 10~ ## $ annual_income_joint <dbl> NA, NA, NA, NA, 57000,~ ## $ verification_income_joint <fct> , , , , Verified, , No~ ## $ debt_to_income_joint <dbl> NA, NA, NA, NA, 37.66,~ ## $ delinq_2y <int> 0, 0, 0, 0, 0, 1, 0, 1~ ## $ months_since_last_delinq <int> 38, NA, 28, NA, NA, 3,~ ## $ earliest_credit_line <dbl> 2001, 1996, 2006, 2007~ ## $ inquiries_last_12m <int> 6, 1, 4, 0, 7, 6, 1, 1~ ## $ total_credit_lines <int> 28, 30, 31, 4, 22, 32,~ ## $ open_credit_lines <int> 10, 14, 10, 4, 16, 12,~ ... ``` ] --- ## Variáveis selecionadas ```r loans <- loans_full_schema %>% select(loan_amount, interest_rate, term, grade, state, annual_income, homeownership, debt_to_income) glimpse(loans) ``` ``` ## Rows: 10,000 ## Columns: 8 ## $ loan_amount <int> 28000, 5000, 2000, 21600, 23000, 5000, 2~ ## $ interest_rate <dbl> 14.07, 12.61, 17.09, 6.72, 14.07, 6.72, ~ ## $ term <dbl> 60, 36, 36, 36, 36, 36, 60, 60, 36, 36, ~ ## $ grade <fct> C, C, D, A, C, A, C, B, C, A, C, B, C, B~ ## $ state <fct> NJ, HI, WI, PA, CA, KY, MI, AZ, NV, IL, ~ ## $ annual_income <dbl> 90000, 40000, 40000, 30000, 35000, 34000~ ## $ homeownership <fct> MORTGAGE, RENT, RENT, RENT, RENT, OWN, M~ ## $ debt_to_income <dbl> 18.01, 5.04, 21.15, 10.16, 57.96, 6.46, ~ ``` --- ## Variáveis selecionadas .midi[ variável | descrição ----------------|------------- `loan_amount` | Montante do empréstimo recebido, em dólares americanos `interest_rate` | Taxa de juros sobre o empréstimo, em uma porcentagem anual `term` | A duração do empréstimo, que é sempre definida como um número inteiro de meses `grade` | Grau de empréstimo, que leva um valor de A a G e representa a qualidade do empréstimo e sua probabilidade de ser reembolsado `state` | Estado americano onde o mutuário reside `annual_income` | A renda anual do mutuário, incluindo qualquer segunda renda, em dólares americanos `homeownership` | Indica se a pessoa possui imóvel, possui mas tem uma hipoteca, ou aluga `debt_to_income` | Índice da dívida em relação à renda ] --- ## Tipos de variáveis variável | tipo ----------------|------------- `loan_amount` | numérica, contínua `interest_rate` | numérica, contínua `term` | numérica, discreta `grade` | categórica, ordinal `state` | categórica, não ordinal `annual_income` | numérica, contínua `homeownership` | categórica, não ordinal `debt_to_income` | numérica, contínua --- class: middle # Visualização de dados numéricos --- ## Descrevendo formas de distribuições numéricas - forma: - skewness: right-skewed, left-skewed, simétrico (skew é o lado da cauda mais longa) - modalidade: unimodal, bimodal, multimodal, uniforme - centro: média (`mean`), mediana (`median`) - dispersão: amplitude (`range`), desvio padrão (`sd`), intervalo interquartil (`IQR`) - observações inespecíficas --- class: middle # Histograma --- ## Histograma ```r ggplot(loans, aes(x = loan_amount)) + geom_histogram() ``` ``` ## `stat_bin()` using `bins = 30`. Pick better value with ## `binwidth`. ``` <img src="index_files/figure-html/unnamed-chunk-6-1.png" width="50%" style="display: block; margin: auto;" /> --- ## Histograma and largura das classes (binwidth) .panelset[ .panel[.panel-name[binwidth = 1000] ```r ggplot(loans, aes(x = loan_amount)) + geom_histogram(binwidth = 1000) ``` <img src="index_files/figure-html/unnamed-chunk-7-1.png" width="40%" style="display: block; margin: auto;" /> ] .panel[.panel-name[binwidth = 5000] ```r ggplot(loans, aes(x = loan_amount)) + geom_histogram(binwidth = 5000) ``` <img src="index_files/figure-html/unnamed-chunk-8-1.png" width="40%" style="display: block; margin: auto;" /> ] .panel[.panel-name[binwidth = 20000] ```r ggplot(loans, aes(x = loan_amount)) + geom_histogram(binwidth = 20000) ``` <img src="index_files/figure-html/unnamed-chunk-9-1.png" width="40%" style="display: block; margin: auto;" /> ] ] --- ## Customizando histogramas .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-10-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(loans, aes(x = loan_amount)) + geom_histogram(binwidth = 5000) + * labs( * x = "Valor do empréstimo ($)", * y = "Frequência", * title = "Quantidade de empréstimos" * ) ``` ] ] --- ## Preencher com uma variável categórica .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-11-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(loans, aes(x = loan_amount, * fill = homeownership)) + geom_histogram(binwidth = 5000, * alpha = 0.5) + labs( x = "Valor do empréstimo ($)", y = "Frequência", title = "Quantidade de empréstimos" ) ``` ] ] --- ## Facet com uma variável categórica .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-12-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(loans, aes(x = loan_amount, fill = homeownership)) + geom_histogram(binwidth = 5000) + labs( x = "Valor do empréstimo ($)", y = "Frequência", title = "Quantidade de empréstimos" ) + * facet_wrap(~ homeownership, nrow = 3) ``` ] ] --- class: middle # Gráfico de densidade --- ## Gráfico de densidade ```r ggplot(loans, aes(x = loan_amount)) + geom_density() ``` <img src="index_files/figure-html/unnamed-chunk-13-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Gráfico de densidade e ajuste de bandwidth .panelset[ .panel[.panel-name[adjust = 0.5] ```r ggplot(loans, aes(x = loan_amount)) + geom_density(adjust = 0.5) ``` <img src="index_files/figure-html/unnamed-chunk-14-1.png" width="40%" style="display: block; margin: auto;" /> ] .panel[.panel-name[adjust = 1] ```r ggplot(loans, aes(x = loan_amount)) + geom_density(adjust = 1) # default bandwidth ``` <img src="index_files/figure-html/unnamed-chunk-15-1.png" width="40%" style="display: block; margin: auto;" /> ] .panel[.panel-name[adjust = 2] ```r ggplot(loans, aes(x = loan_amount)) + geom_density(adjust = 2) ``` <img src="index_files/figure-html/unnamed-chunk-16-1.png" width="40%" style="display: block; margin: auto;" /> ] ] --- ## Customizando gráficos de densidade .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-17-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(loans, aes(x = loan_amount)) + geom_density(adjust = 2) + * labs( x = "Valor do empréstimo ($)", y = "Densidade", title = "Quantidade de empréstimos" * ) ``` ] ] --- ## Adicionando uma variável categórica .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-18-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(loans, aes(x = loan_amount, * fill = homeownership)) + geom_density(adjust = 2, * alpha = 0.5) + labs( x = "Valor do empréstimo ($)", y = "Densidade", title = "Quantidade de empréstimos", * fill = "Posse de imóveis" ) ``` ] ] --- class: middle # Box plot --- ## Box plot ```r ggplot(loans, aes(x = interest_rate)) + geom_boxplot() ``` <img src="index_files/figure-html/unnamed-chunk-19-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Box plot e outliers ```r ggplot(loans, aes(x = annual_income)) + geom_boxplot() ``` <img src="index_files/figure-html/unnamed-chunk-20-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Customizando box plots .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-21-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Códigos] ```r ggplot(loans, aes(x = interest_rate)) + geom_boxplot() + labs( x = "Taxa de juros (%)", y = NULL, title = "Taxas de juros dos empréstimos" ) + * theme( * axis.ticks.y = element_blank(), * axis.text.y = element_blank() * ) ``` ] ] --- ## Adicionando uma variável categórica .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-22-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(loans, aes(x = interest_rate, * y = grade)) + geom_boxplot() + labs( x = "Taxa de juros (%)", y = "Graus de empréstimo", title = "Taxas de juros dos empréstimos", * subtitle = "por graus de empréstimos" ) ``` ] ] --- class: middle # Relacionamentos variáveis numéricas --- ## Scatterplot ```r ggplot(loans, aes(x = debt_to_income, y = interest_rate)) + geom_point() ``` <img src="index_files/figure-html/unnamed-chunk-23-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Hex plot ```r ggplot(loans, aes(x = debt_to_income, y = interest_rate)) + geom_hex() ``` <img src="index_files/figure-html/unnamed-chunk-24-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Hex plot ```r ggplot(loans %>% filter(debt_to_income < 100), aes(x = debt_to_income, y = interest_rate)) + geom_hex() ``` <img src="index_files/figure-html/unnamed-chunk-25-1.png" width="60%" style="display: block; margin: auto;" /> --- ### Dados ```r library(openintro) loans <- loans_full_schema %>% select(loan_amount, interest_rate, term, grade, state, annual_income, homeownership, debt_to_income) glimpse(loans) ``` ``` ## Rows: 10,000 ## Columns: 8 ## $ loan_amount <int> 28000, 5000, 2000, 21600, 23000, 5000, 2~ ## $ interest_rate <dbl> 14.07, 12.61, 17.09, 6.72, 14.07, 6.72, ~ ## $ term <dbl> 60, 36, 36, 36, 36, 36, 60, 60, 36, 36, ~ ## $ grade <fct> C, C, D, A, C, A, C, B, C, A, C, B, C, B~ ## $ state <fct> NJ, HI, WI, PA, CA, KY, MI, AZ, NV, IL, ~ ## $ annual_income <dbl> 90000, 40000, 40000, 30000, 35000, 34000~ ## $ homeownership <fct> MORTGAGE, RENT, RENT, RENT, RENT, OWN, M~ ## $ debt_to_income <dbl> 18.01, 5.04, 21.15, 10.16, 57.96, 6.46, ~ ``` --- class: middle # Gráfico de barras --- ## Gráfico de barras ```r ggplot(loans, aes(x = homeownership)) + geom_bar() ``` <img src="index_files/figure-html/unnamed-chunk-27-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Gráfico de barras segmentado ```r ggplot(loans, aes(x = homeownership, * fill = grade)) + geom_bar() ``` <img src="index_files/figure-html/unnamed-chunk-28-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Gráfico de barras segmentado ```r ggplot(loans, aes(x = homeownership, fill = grade)) + * geom_bar(position = "fill") ``` <img src="index_files/figure-html/unnamed-chunk-29-1.png" width="60%" style="display: block; margin: auto;" /> --- .question[ Qual dos gráficos de barra é uma representação mais útil para visualizar a relação entre a propriedade de imóveis e o grau de empréstimo? ] .pull-left[ <img src="index_files/figure-html/unnamed-chunk-30-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-31-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Customizando gráficos de barras .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-32-1.png" width="60%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r *ggplot(loans, aes(y = homeownership, fill = grade)) + geom_bar(position = "fill") + * labs( * x = "Proporção", * y = "Propriedade de imóveis", * fill = "Grau de empréstimo", * title = "Graus de empréstimos", * subtitle = "e propriedade de imóveis do mutuário" * ) ``` ] ] --- class: middle # Relação entre variáveis numéricas e categóricas --- ## Já apresentado... - Histogramas e gráficos de densidade em cores e facets - Box plots lado a lado --- ## Gráficos violino ```r ggplot(loans, aes(x = homeownership, y = loan_amount)) + geom_violin() ``` <img src="index_files/figure-html/unnamed-chunk-33-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Ridge plots ```r library(ggridges) ggplot(loans, aes(x = loan_amount, y = grade, fill = grade, color = grade)) + geom_density_ridges(alpha = 0.5) ``` <img src="index_files/figure-html/unnamed-chunk-34-1.png" width="60%" style="display: block; margin: auto;" />