class: center, middle, inverse, title-slide # Estatística I ## Aula 03 - Análise Exploratória de Dados - Parte 2 ### Prof. Dr. Hidelbrando F. Rodrigues ### ICET/UFAM ### 2021-08-23 --- ## EXPLORAÇÃO DE DADOS - Vetor de Dados: Tabela 1. Resistencia à Compressao (em psi) de 80 Corpos de Prova da Liga de Alumínio-Lítio. A base de dados está "guardada" num objeto (vetor de dados) chamado *dados_compressao*. ```r dados_compressao <- c(105, 221, 183, 186, 121, 181, 180, 143, 97, 154, 153, 174, 120, 168, 167, 141, 245, 228, 174, 199, 181, 158, 176, 110, 163, 131, 154, 115, 160, 208, 158, 133, 207, 180, 190, 193, 194, 133, 156, 123, 134, 178, 76, 167, 184, 135, 229, 146, 218, 157, 101, 171, 165, 172, 158, 169, 199, 151, 142, 163, 145, 171, 148, 158, 160, 175, 149, 87, 160, 237, 150, 135, 196, 201, 200, 176, 150, 170, 118, 149) ``` -- A análise desse conjunto de dados será feito a partir de perguntas e resposta, de modo que fique claro o objetivo de cada passo. --- ### Como se faz para ordenar os dados do menor para o maior? R: Usa-se o comando *sort()* ```r sort(dados_compressao) ``` ``` ## [1] 76 87 97 101 105 110 115 118 120 121 123 131 133 133 134 135 135 141 142 ## [20] 143 145 146 148 149 149 150 150 151 153 154 154 156 157 158 158 158 158 160 ## [39] 160 160 163 163 165 167 167 168 169 170 171 171 172 174 174 175 176 176 178 ## [58] 180 180 181 181 183 184 186 190 193 194 196 199 199 200 201 207 208 218 221 ## [77] 228 229 237 245 ``` -- #### De antemão sabemos que se trata de 80 observações, mas se não soubéssemos, qual o código R para essa informação? Qual o tamanho da amostra? Quantos dados estão sendo analisados (n)? R: Usa-se o comando *length()* ```r length(dados_compressao) ``` ``` ## [1] 80 ``` ```r n <- length(dados_compressao) n ``` ``` ## [1] 80 ``` --- ### Quais os valores extremos de nossa base de dados, ou seja, qual o maior valor observados (máximo), qual o menor valor observado (mínimo) e qual a amplitude dos dados? R: Usa-se *max()* para recuperar o maior valor observado, *min()* para o menor valor observado e *range()* para a amplitude dos dados (*max()-min()*). ```r max(dados_compressao) ``` ``` ## [1] 245 ``` ```r min(dados_compressao) ``` ``` ## [1] 76 ``` ```r range(dados_compressao) ``` ``` ## [1] 76 245 ``` --- ### Como fazer o gráfico de pontos e o diagrama de ramo e folhas? R: Para o gráfico de pontos, usa-se o comando *dotchart()* e para o diagrama de ramos e folhas, *stem()*. <img src="Aula03_files/figure-html/unnamed-chunk-6-1.png" width="100%" /> --- ```r stem(dados_compressao, scale = 2) ``` ``` ## ## The decimal point is 1 digit(s) to the right of the | ## ## 7 | 6 ## 8 | 7 ## 9 | 7 ## 10 | 15 ## 11 | 058 ## 12 | 013 ## 13 | 133455 ## 14 | 12356899 ## 15 | 001344678888 ## 16 | 0003357789 ## 17 | 0112445668 ## 18 | 0011346 ## 19 | 034699 ## 20 | 0178 ## 21 | 8 ## 22 | 189 ## 23 | 7 ## 24 | 5 ``` ```r sort(dados_compressao) ``` ``` ## [1] 76 87 97 101 105 110 115 118 120 121 123 131 133 133 134 135 135 141 142 ## [20] 143 145 146 148 149 149 150 150 151 153 154 154 156 157 158 158 158 158 160 ## [39] 160 160 163 163 165 167 167 168 169 170 171 171 172 174 174 175 176 176 178 ## [58] 180 180 181 181 183 184 186 190 193 194 196 199 199 200 201 207 208 218 221 ## [77] 228 229 237 245 ``` --- # Tabela de Distribuição de Frequência O próximo passo é organizar nossos dados em uma tabela que sintetize o conjunto de dados. Para construi-la vamos seguir os seguintes passos: Passo 1: Determinar o número de classes (k). Há duas fórmulas para esse cálculo: 1) Pela raiz quadrada do número de observações `\(k=\sqrt (n)\)` ```r n <- length(dados_compressao) n # Como já sabíamos a base de dados possui 80 pbservações ``` ``` ## [1] 80 ``` ```r k <- sqrt(n) # *sqrt* é o comando para o cálculo da raiz quadrada. k ``` ``` ## [1] 8.944272 ``` ```r # O número de classes sempre deve ser arrendondado para o inteiro superior. Logo, devemos trabalhar com k = 9 classes. ``` --- 2) A segunda forma de determinar o número de classes é pela fórmula de Stuges, ou seja, `\(1+3,3log(n)\)`. ```r k <- 1+3.3*log(80, 10) k ``` ``` ## [1] 7.280197 ``` ```r # ou pelo comando nclass.Sturges(dados_compressao) ``` ``` ## [1] 8 ``` > Pelo método da *raiz* a decisão é trabalhar com 9 classes, e pelo método de *Sturges*, a decisão seria de 8 classes. Pode-se escolher qualquer um dos dois métodos, entretando, isto deve estar claro na metodologia. Em nosso exemplo, vamos trabalhar com `\(k=8\)` classes (Sturges) --- Passo 2: Determinar a ampitude de classe *(h)*. A amplitude de classe é `\(h = \mbox{amplitude total}/\mbox{número de classes}\)` ou `\(h = AT/K\)`, onde `\(AT=x(max)-x(min)\)`. Então, como calcular a amplitude total (AT) no R? ```r # Amplitude total (AT) AT <- max(dados_compressao) - min(dados_compressao) AT ``` ``` ## [1] 169 ``` ```r # Número de classes (k) k <- nclass.Sturges(dados_compressao) k # ou seja, 8 classes ``` ``` ## [1] 8 ``` --- Em seguida, calcular a amplitude de classe (h) ```r h <- AT/k h # que também deve ser arrendondada para maior, obedecendo a precisão da variável em análise. ``` ``` ## [1] 21.125 ``` Ainda com respeito à amplitude de classe, obteve-se `\(h= 21,125\)`. Como os dados analisados possuem a precisão de duas casas decimais, a amplitude de classe de manter a mesma ordem de grandeza, sendo arredondado para *cima*, ou seja, o valor de `\(h=22\)`. > Temos, agora, todas as informações que precisamos: - Número de classes (k=8) - Amplitude de classe (h=21,13) - amplitude total: > ``` ## [1] 76 245 ``` Podemos, agora, constuir nossa tabela de distribuição de frequência. --- # Tabela de Distribuição de Frequência Para fazermos uma tabela de frequências de uma contínua é preciso primeiro agrupar os dados em classes. Nos comandos mostrados a seguir verificamos inicialmente os valores máximo e mínimo dos dados, depois usamos o critério de Sturges para definir o número de classes, usamos cut() para agrupar os dados em classes e finalmente obtemos as frequências absolotas e relativas. ```r tabela1 <- table(cut(dados_compressao, br=seq(75,246, l= 9))) tabela1 ``` ``` ## ## (75,96.4] (96.4,118] (118,139] (139,160] (160,182] (182,203] (203,225] ## 2 5 10 23 21 11 4 ## (225,246] ## 4 ``` ```r sum(tabela1) ``` ``` ## [1] 80 ``` ```r relativa1 <- prop.table(tabela1) relativa1 ``` ``` ## ## (75,96.4] (96.4,118] (118,139] (139,160] (160,182] (182,203] (203,225] ## 0.0250 0.0625 0.1250 0.2875 0.2625 0.1375 0.0500 ## (225,246] ## 0.0500 ``` ```r sum(relativa1) ``` ``` ## [1] 1 ``` --- # Tabela de Distribuição de Frequência ```r tabela2 <- table(cut(dados_compressao, br=seq(75,245, l=9), right = FALSE, include.lowest = T)) tabela2 ``` ``` ## ## [75,96.2) [96.2,118) [118,139) [139,160) [160,181) [181,202) [202,224) ## 2 5 10 20 24 11 4 ## [224,245] ## 4 ``` ```r sum(tabela2) ``` ``` ## [1] 80 ``` ```r relativa2 <- prop.table(tabela2) sum(relativa2) ``` ``` ## [1] 1 ``` --- # Tabela de Distribuição de Frequência Utilzando o pacote *fdth* - Primeiro certifique-se que o pacote estar instalado. - Use o comando `install.packages(fdth)` para instalar, caso necessário ```r # install.packages(fdth) library(fdth) tabela3 <- fdt(dados_compressao) tabela3 ``` ``` ## Class limits f rf rf(%) cf cf(%) ## [75.24,96.7662) 2 0.03 2.50 2 2.50 ## [96.7662,118.292) 6 0.07 7.50 8 10.00 ## [118.292,139.819) 9 0.11 11.25 17 21.25 ## [139.819,161.345) 23 0.29 28.75 40 50.00 ## [161.345,182.871) 21 0.26 26.25 61 76.25 ## [182.871,204.397) 11 0.14 13.75 72 90.00 ## [204.397,225.924) 4 0.05 5.00 76 95.00 ## [225.924,247.45) 4 0.05 5.00 80 100.00 ``` --- # Tabela de Distribuição de Frequência ```r range(dados_compressao) ``` ``` ## [1] 76 245 ``` ```r tabela4 <- fdt(dados_compressao) tabela4 ``` ``` ## Class limits f rf rf(%) cf cf(%) ## [75.24,96.7662) 2 0.03 2.50 2 2.50 ## [96.7662,118.292) 6 0.07 7.50 8 10.00 ## [118.292,139.819) 9 0.11 11.25 17 21.25 ## [139.819,161.345) 23 0.29 28.75 40 50.00 ## [161.345,182.871) 21 0.26 26.25 61 76.25 ## [182.871,204.397) 11 0.14 13.75 72 90.00 ## [204.397,225.924) 4 0.05 5.00 76 95.00 ## [225.924,247.45) 4 0.05 5.00 80 100.00 ``` --- # Tabela de Distribuição de Frequência ```r range(dados_compressao) ``` ``` ## [1] 76 245 ``` ```r tabela5 <- fdt(dados_compressao, start = 76, end = 252, h = 22) tabela5 ``` ``` ## Class limits f rf rf(%) cf cf(%) ## [76,98) 3 0.04 3.75 3 3.75 ## [98,120) 5 0.06 6.25 8 10.00 ## [120,142) 10 0.12 12.50 18 22.50 ## [142,164) 24 0.30 30.00 42 52.50 ## [164,186) 21 0.26 26.25 63 78.75 ## [186,208) 10 0.12 12.50 73 91.25 ## [208,230) 5 0.06 6.25 78 97.50 ## [230,252) 2 0.03 2.50 80 100.00 ``` --- # Histograma ```r hist(dados_compressao, labels = TRUE, # mostra a frequência de cada classe xlim = c(70, 260), xlab = "Compressão (psi)", # formata o texto da variável x ylab = "Frequência", # formata o texto da variável y col = "blue", # controla a cor dos retângulos border = "pink", # controla a cor das bordas dos retângulos main = " Resistencia à Compressao (em psi)", # Título do gráfico breaks = "Sturges" # define o critério das classes ) ``` <img src="Aula03_files/figure-html/unnamed-chunk-18-1.png" width="100%" /> --- <img src="Aula03_files/figure-html/unnamed-chunk-19-1.png" width="100%" />