class: center, middle, inverse, title-slide # Probabilidade e Estatística ## Aula 03 - Análise Exploratória de Dados - Parte 2 ### Prof. Dr. Hidelbrando F. Rodrigues ### ICET/UFAM ### 2021-08-20 --- ## 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 # Ampitude 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,125) 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. Padrão: Não inclui o limite inferior e inclui o superior. Neste caso, a primeira classe deve iniciar com um valor menor que o min(x). ```r tabela1 <- table(cut(dados_compressao, br=seq(75,246, 9))) tabela1 ``` ``` ## ## (75,84] (84,93] (93,102] (102,111] (111,120] (120,129] (129,138] (138,147] ## 1 1 2 2 3 2 6 5 ## (147,156] (156,165] (165,174] (174,183] (183,192] (192,201] (201,210] (210,219] ## 10 11 10 9 3 7 2 1 ## (219,228] (228,237] (237,246] ## 2 2 1 ``` ```r sum(tabela1) ``` ``` ## [1] 80 ``` ```r relativa1 <- prop.table(tabela1) relativa1 ``` ``` ## ## (75,84] (84,93] (93,102] (102,111] (111,120] (120,129] (129,138] (138,147] ## 0.0125 0.0125 0.0250 0.0250 0.0375 0.0250 0.0750 0.0625 ## (147,156] (156,165] (165,174] (174,183] (183,192] (192,201] (201,210] (210,219] ## 0.1250 0.1375 0.1250 0.1125 0.0375 0.0875 0.0250 0.0125 ## (219,228] (228,237] (237,246] ## 0.0250 0.0250 0.0125 ``` ```r sum(relativa1) ``` ``` ## [1] 1 ``` --- # Tabela de Distribuição de Frequência Opção: Para que o limite inferior seja incluído e o superior, não, precisamos alterar dois parâmetros: ```r tabela2 <- table(cut(dados_compressao, br=seq(75,245, 9), right = FALSE,include.lowest = T)) tabela2 ``` ``` ## ## [75,84) [84,93) [93,102) [102,111) [111,120) [120,129) [129,138) [138,147) ## 1 1 2 2 2 3 6 5 ## [147,156) [156,165) [165,174) [174,183) [183,192) [192,201) [201,210) [210,219) ## 9 11 9 10 4 6 3 1 ## [219,228) [228,237] ## 1 3 ``` ```r sum(tabela2) ``` ``` ## [1] 79 ``` ```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, start = 76, end = 245, h=21.3) tabela4 ``` ``` ## Class limits f rf rf(%) cf cf(%) ## [76,97.3) 3 0.04 3.75 3 3.75 ## [97.3,119) 5 0.06 6.25 8 10.00 ## [119,140) 9 0.11 11.25 17 21.25 ## [140,161) 23 0.29 28.75 40 50.00 ## [161,182) 21 0.26 26.25 61 76.25 ## [182,204) 11 0.14 13.75 72 90.00 ## [204,225) 4 0.05 5.00 76 95.00 ``` --- # Histograma ```r hist(dados_compressao, col = "blue", main = " Resistencia à Compressao (em psi)") ``` <img src="Aula03_files/figure-html/unnamed-chunk-16-1.png" width="100%" />