Probabilidade e Estatística


Tabelas e Gráficos

Professor: Leonardo Brandão Freitas do Nascimento

Introdução

Introdução

  • Após a coleta e organização de dados, os próximos passos são:
    • Resumir as informações;
    • Comunicar a informação obtida.
  • Nesse processo usam-se tabelas, gráficos e estatísticas de resumo (análise exploratória de dados) que permitem uma síntese e uma melhor compreensão dos resultados.

Tabelas de Frequências

  • Quando se estuda uma variável, o maior interesse do pesquisador é conhecer o comportamento dessa variável, analisando a ocorrência de suas possíveis realizações.

  • As tabelas de distribuição de frequência permitem identificar características dos dados em análise. Elas podem ser: simples, intervalares e dupla entrada

Conceitos Básicos

  • Dados brutos: valores coletados, sem tratamento ,os seguintes valores poderiam ser os dados brutos: 24, 23, 22, 28, 35, 21, 23, 33.

  • Rol: é o arranjo dos dados brutos em ordem de frequência crescente ou decrescente. Os dados brutos anteriores ficariam assim: 21, 22, 23, 23, 24, 28, 33, 35.

  • Amplitude Total (AT): é a diferença entre o maior e o menor valor observado, \(AT = \text{maior valor} - \text{menor valor}\). No exemplo, \(AT = 35 - 21 = 14\).

Conceitos Básicos

  • Classe: é cada um dos grupos de valores em que se subdivide a amplitude total do conjunto de valores observados da variável.

  • Limite de Classe: são os valores extremos do intervalo de classe. Exemplo: No intervalo de classe \(75|--85\) ou \([75,85)\) ou \([75,85[\), o limite inferior (LI) é representado pelo valor 75, inclusive, e o valor 85 representa o limite superior (LS), exclusive, do intervalo de classe.

Conceitos Básicos

  • Ponto Médio do Intervalo de Classe (\(x_i\) ou \(PM_i\)): é o valor que representa a classe para o cálculo de certas medidas. Ele é obtido através da seguinte razão: \(PM_i = \frac{LS+LI}{2}\). O ponto médio da classe \([75,85)\) é \[PM = \frac{LS+LI}{2} = \frac{85+75}{2}=80.\]

  • Observação: Amplitude da Classe é dada por: \(AC = LS-LI\)

Conceitos Básicos - Tipos de Frequência

  1. Frequência absoluta ou observada (\(f_a\)): é o número de vezes que o elemento aparece na amostra, ou o número de elementos pertencentes a uma classe.

  2. Frequência relativa (\(f_r\)): é o valor da frequência absoluta dividido pelo número total de observações: \(f_r = \frac{f_a}{n}\). A soma de todas as frequências é igual a 1. A \(f_r\) é apresentada como proporção (valor entre 0 e 1) ou como percentual (valor entre 0 e 100) \(f_r = \frac{f_a}{n} \times 100\).

Conceitos Básicos - Tipos de Frequência

  1. Frequência absoluta acumulada (\(F_{a}\)): corresponde ao total acumulado das \(f_a\) observadas até no nível em questão (inclusive).

  2. Frequência relativa acumulada (\(F_{r}\)): corresponde ao total acumulado das \(f_r\) observadas até no nível em questão (inclusive).

Tabela Simples

Exemplo - Falta dos empregados

  • As faltas ao trabalho de 30 empregados estão a seguir:
    \[ 1, 3, 1, 1, 0, 1, 0, 1, 1, 0 \\ 2, 2, 0, 0, 0, 1, 2, 1, 2, 0 \\ 0, 1, 6, 4, 3, 3, 1, 2, 4, 0 \]

Tabela Simples

Exemplo - Falta dos empregados

Determine:

  1. Frequência absoluta e Frequência absoluta acumulada
  2. Frequência relativa e Frequência relativa acumulada
  3. Porcentagem de empregados que tiveram no máximo 3 faltas.
  4. Número de empregados que tiveram pelo menos 3 faltas
  5. Número de empregados que tiveram no mínimo 1 e no máximo 3 faltas.

Tabela Simples

Exemplo - Falta dos empregados

dados <- c(1, 3, 1, 1, 0, 1, 0, 1, 1, 0, 2, 2, 0, 0, 0, 1, 2, 1, 2, 0, 0, 1, 6, 4, 3, 3, 1, 2, 4, 0)
length(dados) # tamnho dos dados
[1] 30
require(tidyverse)
tabela = tibble::tibble(X = unique(dados) |> sort(),
                f_a = table(dados),
                f_r = prop.table(f_a) |> round(2),
                F_a = cumsum(f_a),
                F_r = cumsum(f_r)
                ) 

Tabela Simples

Exemplo - Falta dos empregados

knitr::kable(tabela,booktabs = TRUE)
X f_a f_r F_a F_r
0 9 0.30 9 0.30
1 10 0.33 19 0.63
2 5 0.17 24 0.80
3 3 0.10 27 0.90
4 2 0.07 29 0.97
6 1 0.03 30 1.00

Tabelas de frequência intervalares

  • A ideia básica é dividir os valores em determinadas classes ou intervalos;

  • Embora não exista uma regra única para a determinação do tamanho e da quantidade de classes, devem-se observar as seguintes indicações:

Tabelas de frequência intervalares

  1. O extremo superior de uma classe é o extremo inferior da classe subsequente;

  2. Cada valor observado deve enquadrar-se em apenas uma classe;

  3. A quantidade de classes, de modo geral, não deve ser inferior a 5 ou superior a 25.

Tabela Intervalar

Exemplo - Tempo para resolver uma questão

  • Os tempos, em minutos, gasto por estudantes na resolução de um problema de estatística foram os seguintes:

\[ 17, 19, 21, 26, 29, 31, 32, 33, \\ 37, 38, 40, 41, 42, 43, 44, 47, \\ 47, 48, 53, 54, 58, 59, 60, 63. \]

Tabela Intervalar

  1. Apresente a distribuição de frequências (Intervalos) da variável tempo.

  2. Qual a proporção de estudantes que gastam pelo menos 41 minutos?

  3. Qual a proporção de estudantes que gastam entre 25 e 49 minutos (inclusive)?

  4. Qual a proporção de estudantes que gastam menos do que 41 minutos?

Tabela Intervalar - I

dados <- c(17, 19, 21, 26, 29, 31, 32, 33, 
           37, 38, 40, 41, 42, 43, 44, 47, 
           47, 48, 53, 54, 58, 59, 60, 63)

# obtendo o número de classes
HIST = hist(dados,plot = F)
inter.class = cut(dados,breaks = HIST$breaks)
head(inter.class)
[1] (10,20] (10,20] (20,30] (20,30] (20,30] (30,40]
Levels: (10,20] (20,30] (30,40] (40,50] (50,60] (60,70]

Tabela Intervalar - I

tabela = tibble::tibble(X = unique(inter.class) |> sort(),
                PM = HIST$mids,
                f_a = table(inter.class),
                f_r = prop.table(f_a) |> round(3),
                F_a = cumsum(f_a),
                F_r = cumsum(f_r)
) 

Tabela Intervalar - I

knitr::kable(tabela,booktabs = TRUE)
X PM f_a f_r F_a F_r
(10,20] 15 2 0.083 2 0.083
(20,30] 25 3 0.125 5 0.208
(30,40] 35 6 0.250 11 0.458
(40,50] 45 7 0.292 18 0.750
(50,60] 55 5 0.208 23 0.958
(60,70] 65 1 0.042 24 1.000

Tabela Intervalar - II

dados <- c(17, 19, 21, 26, 29, 31, 32, 33, 
           37, 38, 40, 41, 42, 43, 44, 47, 
           47, 48, 53, 54, 58, 59, 60, 63)

# obtendo o número de classes
HIST = hist(dados,plot = F)
inter.class = cut(dados,breaks = HIST$breaks,right=F)
head(inter.class)
[1] [10,20) [10,20) [20,30) [20,30) [20,30) [30,40)
Levels: [10,20) [20,30) [30,40) [40,50) [50,60) [60,70)

Tabela Intervalar - II

tabela = tibble::tibble(X = unique(inter.class) |> sort(),
                PM = HIST$mids,
                f_a = table(inter.class),
                f_r = prop.table(f_a) |> round(1),
                F_a = cumsum(f_a),
                F_r = cumsum(f_r)
) 

Tabela Intervalar - II

knitr::kable(tabela,booktabs = TRUE)
X PM f_a f_r F_a F_r
[10,20) 15 2 0.1 2 0.1
[20,30) 25 3 0.1 5 0.2
[30,40) 35 5 0.2 10 0.4
[40,50) 45 8 0.3 18 0.7
[50,60) 55 4 0.2 22 0.9
[60,70) 65 2 0.1 24 1.0

Tabela de dupla entrada

Exemplo: Análise entre Grau de escolaridade e Região de procedência

  • Suponha que queiramos analisar o comportamento conjunto das variáveis \(X\) (Grau de escolaridade) e \(Y\) (Região de procedência) dos empregados de uma empresa.

Tabela de dupla entrada

empregados = read.table("../../dados/empregados.txt",sep=";",header = T)
tab.abs = table(Y=empregados$reg_procedencia,
         X = empregados$grau_instrucao) |> addmargins()
knitr::kable(tab.abs,booktabs = TRUE)
Table 1: Distribuição conjunta das frequências das variáveis \(Y\) e \(X\)
ensino fundamental ensino médio superior Sum
capital 4 5 2 11
interior 3 7 2 12
outra 5 6 2 13
Sum 12 18 6 36

Tabela de dupla entrada

  • 4 indivíduos procedem da capital e possuem o ensino fundamental;

  • 11 indivíduos são da capital;

  • 18 individuos possuem o ensino médio

  • Note que na última coluna está representada a frequência absoluta da variável \(Y\)

  • Note que na última linha está representada a frequência absoluta da variável \(X\)

  • As frequências da parte interna da tabela são chamadas de frequências absolutas conjunta entre \(X\) e \(Y\).

Tabela de dupla entrada

  • Ao invés de trabalharmos com frequência absoluta, podemos construir tabelas com a frequência relativa (proporções). Nesse caso, podemos considerar três possibilidades para expressar a proporção:

    1. em relação ao total;

    2. em relação ao total de cada coluna;

    3. em relação ao total de cada linha.

Tabela de dupla entrada - Total

  • Foi pego cada número da Table 1 e dividido pelo total (36)
table(Y=empregados$reg_procedencia,X = empregados$grau_instrucao) |>
  prop.table() |> 
  addmargins() |> 
  knitr::kable(booktabs = TRUE,digits = 2)
ensino fundamental ensino médio superior Sum
capital 0.11 0.14 0.06 0.31
interior 0.08 0.19 0.06 0.33
outra 0.14 0.17 0.06 0.36
Sum 0.33 0.50 0.17 1.00

Tabela de dupla entrada - Total

  • 11% dos empregados vêm da capital e têm o ensino fundamental

  • Os totais nas margens fornecem as distribuições unidimensional de cada uma da variável, 31% dos indivíduos vêm da capital.

Tabela de dupla entrada - Coluna

  • Foi pego cada número da Table 1 e dividido pelo total de cada Coluna
tab.col = table(Y=empregados$reg_procedencia,X = empregados$grau_instrucao) |>
prop.table(margin = 2) 
print(tab.col)
          X
Y          ensino fundamental ensino médio  superior
  capital           0.3333333    0.2777778 0.3333333
  interior          0.2500000    0.3888889 0.3333333
  outra             0.4166667    0.3333333 0.3333333

Tabela de dupla entrada - Coluna

rbind(tab.col,Total = colSums(tab.col) )|>
  knitr::kable(booktabs = TRUE,digits = 2)
ensino fundamental ensino médio superior
capital 0.33 0.28 0.33
interior 0.25 0.39 0.33
outra 0.42 0.33 0.33
Total 1.00 1.00 1.00

Tabela de dupla entrada - Coluna

  • Entre os empregados com instrução até o ensino fundamental, 33% vêm da capital, ao passo que entre os empregados com ensino médio, 28% vêm da capital.

Tabela de dupla entrada - Linha

  • Foi pego cada número da Table 1 e dividido pelo total de cada Linha
(tab.linha = table(Y=empregados$reg_procedencia,X = empregados$grau_instrucao) |>
prop.table(margin = 1)) 
          X
Y          ensino fundamental ensino médio  superior
  capital           0.3636364    0.4545455 0.1818182
  interior          0.2500000    0.5833333 0.1666667
  outra             0.3846154    0.4615385 0.1538462

Tabela de dupla entrada - Linha

cbind(tab.linha,Total = rowSums(tab.linha) )|>
  knitr::kable(booktabs = TRUE,digits = 2)
ensino fundamental ensino médio superior Total
capital 0.36 0.45 0.18 1
interior 0.25 0.58 0.17 1
outra 0.38 0.46 0.15 1

Tabela de dupla entrada - Linha

  • Entre os empregados do interior, 58% têm o ensino médio.
  • Entre os empregados da capital, 36% têm o ensino fundamental

Gráficos

  • Os gráficos desempenham um papel crucial na análise de dados, fornecendo uma representação visual que facilita a compreensão e interpretação das informações.

  • Será apresentado os seguintes gráficos: histogramas, densidades, barras, setores, dispersão, linha, boxplot, distribuição acumulada

Gráficos - Dados Falta dos empregados

Distribuição acumulada

  • Visualizar a distribuição acumulada de uma variável. Analisar a proporção de valores abaixo de um determinado limite.
dados <- c(1, 3, 1, 1, 0, 1, 0, 1, 1, 0, 2, 2, 0, 0, 0, 1, 2, 1, 2, 0, 0, 1, 6, 4, 3, 3, 1, 2, 4, 0)
plot(ecdf(dados))

Gráficos - Dados Meteorológicos

Apresentação

dados  = readRDS("../../dados/dados_meteorologicos_am.rds")
head(dados)
# A tibble: 6 × 8
  cidade   year  month month_names    rh   tbs   tbu precp
  <chr>    <chr> <chr> <fct>       <dbl> <dbl> <dbl> <dbl>
1 Barcelos 2000  01    Jan         0.83   28.1  26    275.
2 Barcelos 2000  02    Feb         0.785  27    26.2  121.
3 Barcelos 2000  03    Mar         0.745  25.1  24.7  236.
4 Barcelos 2000  04    Apr         0.8    28.3  25.9  406.
5 Barcelos 2000  05    May         0.805  25.5  25.1  370 
6 Barcelos 2000  06    Jun         0.76   25.7  24.6  180.
  • rh: menor média diária da umidade relativa

  • tbs (temperatura bulbo seco): tbs do dia em que ocorreu a menor média diária de “rh”

Apresentação

  • tbu (temperatura bulbo úmido): tbu do dia em que ocorreu a menor média diária de “rh”

  • precp: precipitação (mm) no mês

Identificações das variáveis

str(dados)
tibble [2,016 × 8] (S3: tbl_df/tbl/data.frame)
 $ cidade     : chr [1:2016] "Barcelos" "Barcelos" "Barcelos" "Barcelos" ...
 $ year       : chr [1:2016] "2000" "2000" "2000" "2000" ...
 $ month      : chr [1:2016] "01" "02" "03" "04" ...
 $ month_names: Factor w/ 12 levels "Apr","Aug","Dec",..: 5 4 8 1 9 7 6 2 12 11 ...
 $ rh         : num [1:2016] 0.83 0.785 0.745 0.8 0.805 0.76 0.765 0.745 0.725 0.75 ...
 $ tbs        : num [1:2016] 28.1 27 25.1 28.3 25.5 25.7 27.3 26.5 29.4 28.4 ...
 $ tbu        : num [1:2016] 26 26.2 24.7 25.9 25.1 24.6 26.4 24.3 25.9 25.4 ...
 $ precp      : num [1:2016] 275 121 236 406 370 ...
table(dados$cidade) |> addmargins()

         Barcelos Benjamin.Constant             Coari           Codajás 
              144               144               144               144 
         Eirunepé         Fonte.Boa           Iaurete       Itacoatiara 
              144               144               144               144 
           Lábrea            Manaus          Manicoré         Parintins 
              144               144               144               144 
              SGC              Tefé               Sum 
              144               144              2016 

Linhas

  • Mostrar tendências ao longo do tempo ou de uma série. Destacar padrões de crescimento, declínio ou flutuações.

Linhas

  • Vamos selecionar a Cidade de Manaus
manaus = subset(dados,cidade=="Manaus")
plot.ts(manaus$rh,ylab="Umidade Relativa",xlab="Índice")

Linhas

(manaus.rh = ts(manaus$rh,start = 2000,frequency = 12))
           Jan       Feb       Mar       Apr       May       Jun       Jul
2000 0.7050000 0.7250000 0.7200000 0.7400000 0.7150000 0.7200000 0.7250000
2001 0.7350000 0.7300000 0.6950000 0.7250000 0.7100000 0.7200000 0.7050000
2002 0.6800000 0.7300000 0.7300000 0.6950000 0.7350000 0.6850000 0.6700000
2003 0.6400000 0.6450000 0.7500000 0.7350000 0.7300000 0.7550000 0.7000000
2004 0.7250000 0.7500000 0.7750000 0.7950000 0.8000000 0.7850000 0.7550000
2005 0.6750000 0.7000000 0.7800000 0.7350000 0.7200000 0.7000000 0.6800000
2006 0.7850000 0.7650000 0.7650000 0.7700000 0.8000000 0.7000000 0.6800000
2007 0.7350000 0.6600000 0.7250000 0.7700000 0.7500000 0.6700000 0.6350000
2008 0.6800000 0.7250000 0.7600000 0.7150000 0.7400000 0.7200000 0.6650000
2009 0.7800000 0.7700000 0.7250000 0.7500000 0.7350000 0.7250000 0.6550000
2010 0.7150000 0.7250000 0.6750000 0.7500000 0.7100000 0.6750000 0.7100000
2011 0.6800000 0.7450000 0.6600000 0.7100000 0.7000000 0.6600000 0.4950000
           Aug       Sep       Oct       Nov       Dec
2000 0.6950000 0.7100000 0.7450000 0.6900000 0.6350000
2001 0.6100000 0.6300000 0.5550000 0.6250000 0.6550000
2002 0.6100000 0.5600000 0.5600000 0.6700000 0.7000000
2003 0.7100000 0.6950000 0.6450000 0.6350000 0.6950000
2004 0.6550000 0.6600000 0.6350000 0.5950000 0.6850000
2005 0.7050000 0.6850000 0.7100000 0.7300000 0.8050000
2006 0.6250000 0.6300000 0.5800000 0.6800000 0.6900000
2007 0.6650000 0.6250000 0.6500000 0.6400000 0.7500000
2008 0.6300000 0.6750000 0.7222516 0.7950000 0.7350000
2009 0.5950000 0.5350000 0.5400000 0.5600000 0.5550000
2010 0.6200000 0.5800000 0.5900000 0.6250000 0.6850000
2011 0.5250000 0.5100000 0.5350000 0.6150000 0.6300000

Linhas

plot(manaus.rh,ylab="Umidade Relativa",xlab="Data")

Gráfico de Barras

  • Dados categóricos ou discretos.

  • Exibir a proporção de cada categoria em relação ao todo. Facilita a comparação de partes com o todo.

Gráfico de Barras

require(tidyverse)
precp.mes.total = dados %>% group_by(cidade,month) %>%
  summarise(total = sum(precp)|> round())  
precp.mes.total
# A tibble: 168 × 3
# Groups:   cidade [14]
   cidade   month total
   <chr>    <chr> <dbl>
 1 Barcelos 01     1842
 2 Barcelos 02     2117
 3 Barcelos 03     3240
 4 Barcelos 04     4359
 5 Barcelos 05     3985
 6 Barcelos 06     2910
 7 Barcelos 07     2545
 8 Barcelos 08     1468
 9 Barcelos 09     1304
10 Barcelos 10     1265
# ℹ 158 more rows

Gráfico de Barras

barplot(total~month+cidade,data = precp.mes.total,beside=T,las=2,ylab = "Precipitação mensal",xlab="Cidade",col=heat.colors(12))
legend("topright",legend = month.abb,horiz = T,fill = heat.colors(12),title = "Mês",bty = "n")

Gráfico: Histogramas

  • Gráfico para variáveis quantitativas. Usualmente utilizada para variável contínua.
  • Consiste de retângulos contíguos cuja base é o intervalo da classe e cuja área é a frequência relativa ou absoluta da classe.
  • Uma outra alternativa é usar a chamada densidade de frequência, onde a densidade da classe \(i\) é o valor \(d_i\) dado por \(d_i=fr_i/AC_i\), em que \(fr_i\) e \(AC_i\) são frequência relativa e amplitude da classe \(i\), respectivamente.

Histograma - Frequência

par(mfrow=c(1,2))
hist(manaus$rh,xlab="Umidade relativa",ylab="Frequência",main="")
hist(manaus$precp,ylab="Frequência",xlab="Precipitação",main="")

Histograma - Densidade

par(mfrow=c(1,2))
hist(manaus$rh,xlab="Umidade relativa",ylab="Densidade",main="",prob=T)
hist(manaus$precp,ylab="Frequência",xlab="Densidade",main="",prob=T)

Gráfico de Dispersão

  • Investigar a relação entre duas variáveis e identificar padrões de dispersão, como correlação e agrupamento.

Gráfico de Dispersão

par(mfrow=c(1,2))
plot(manaus$rh,manaus$tbs,xlab="Umidade relativa",ylab="Temperatura")
plot(manaus$rh,manaus$precp,xlab="Umidade relativa",ylab="Precipitação")

Boxplot

  • Sumarizar a distribuição de uma variável, destacando medidas de posição (mediana, quartis) e identificando outliers.

Boxplot

boxplot(dados$rh ~ dados$cidade,xlab = "",ylab="Umidade Relativa",las=2)

Gráficos - Dados Simulados

Apresentação da base de dados

  • Base simulada usando o programa R

  • Emails de 100 remetentes

print(head(dados_email))
                     remetente               assunto tamanho_kb prioridade spam
1      Ana-Ribeiro@example.com Confirmação de Pedido        195      Média TRUE
2   Rafael-Martins@example.com  Atualização de Conta        467      Média TRUE
3 Fernanda-Pereira@example.com   Convite para Evento        342       Alta TRUE
4      Ana-Almeida@example.com  Atualização de Conta        224      Média TRUE
5    Mariana-Silva@example.com Confirmação de Pedido         68      Média TRUE
6      Maria-Silva@example.com       Oferta Especial        474      Baixa TRUE
  qtd_caracteres formato
1            241   Texto
2            115   Texto
3             55   Texto
4            246    HTML
5            159    HTML
6            169   Texto

Identificações das variáveis

str(dados_email)
'data.frame':   100 obs. of  7 variables:
 $ remetente     : chr  "Ana-Ribeiro@example.com" "Rafael-Martins@example.com" "Fernanda-Pereira@example.com" "Ana-Almeida@example.com" ...
 $ assunto       : chr  "Confirmação de Pedido" "Atualização de Conta" "Convite para Evento" "Atualização de Conta" ...
 $ tamanho_kb    : num  195 467 342 224 68 474 131 56 340 324 ...
 $ prioridade    : chr  "Média" "Média" "Alta" "Média" ...
 $ spam          : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ qtd_caracteres: num  241 115 55 246 159 169 134 118 208 181 ...
 $ formato       : chr  "Texto" "Texto" "Texto" "HTML" ...

Gráficos de Barras

  • Tabelas: Frequências Absolutas e Relativas
dados_email$prioridade <- factor(dados_email$prioridade,levels = c("Baixa","Média","Alta"))
(tabela = table(dados_email$prioridade) ) 

Baixa Média  Alta 
   19    45    36 
(tabela.prop = prop.table(tabela)) 

Baixa Média  Alta 
 0.19  0.45  0.36 

Gráficos de Barras

par(mfrow=c(1,2))
LABELS.1 = paste(tabela,sep = "")
bar_1 = barplot(tabela,xlab = "Prioridade",ylab="Frequência Absoluta")
text(x = bar_1,y = tabela-2,labels = LABELS.1)

bar_2 = barplot(tabela.prop,xlab = "Prioridade",ylab="Frequência Relativa")
LABELS.2 = paste(tabela.prop*100,"%",sep = "")
text(x = bar_1,y = tabela.prop-0.05,labels = LABELS.2)

Setores

  • Dados categóricos.
  • Exibir a proporção de cada categoria em relação ao todo e facilitar a comparação de partes com o todo.

Setores

cores = gray(c(0.25,0.50,0.75),alpha = 0.5)
LABELS = paste(tabela.prop*100,"%",sep = "")
pie(tabela.prop,labels = LABELS,col = cores)
legend("topright",legend = names(tabela.prop),fill=cores)

Boxplot

par(mfrow=c(1,2))
boxplot(dados_email$tamanho_kb,main="Tamanho da mensagem em kb")
boxplot(dados_email$qtd_caracteres,main="Quantidade de caracteres")

Gráfico de dispersão

par(mfrow=c(1,2))
plot(dados_email$tamanho_kb,ylab="Tamanho da mensagem em kb",xlab="Índice")
plot(dados_email$qtd_caracteres,ylab="Quantidade de caracteres",xlab="Índice")

Observações

Densidades X Frequências

Exemplo: tempo gasto na resolução da atividade

x = runif(30,1,40) |> round() # simulação
x
 [1]  7  8  8 26 36 38 28 39  7 20  3  2 40 27  9  6 18 39 12 21 12 32  6 27 30
[26]  5  2 15  9 38

Densidades X Frequências

Exemplo: tempo gasto na resolução da atividade

intervalos <- c(0,5,10,15,30,50)
inter.class= cut(x,intervalos)
HIST =  hist(x,breaks = intervalos,plot = F) 

tabela = tibble::tibble(X = unique(inter.class) |> sort(),
                        PM = HIST$mids,
                        f_a = table(inter.class),
                        f_r = prop.table(f_a) |> round(4),
                        d_i = HIST$density |> round(4),
) 

Densidades X Frequências

Exemplo: tempo gasto na resolução da atividade

knitr::kable(tabela)
X PM f_a f_r d_i
(0,5] 2.5 4 0.1333 0.0267
(5,10] 7.5 8 0.2667 0.0533
(10,15] 12.5 3 0.1000 0.0200
(15,30] 22.5 8 0.2667 0.0178
(30,50] 40.0 7 0.2333 0.0117

Densidades X Frequências

Exemplo: tempo gasto na resolução da atividade

par(mfrow = c(1,2))

hist(x,breaks = intervalos,freq = F) 
hist(x,breaks = intervalos,freq = T) 

Densidades X Frequências

Exemplo: tempo gasto na resolução da atividade

  • A densidade nos ajuda a entender a frequência relativa dos tempos gastos em cada intervalo, normalizando pela largura do intervalo.

  • Isso é útil para comparar distribuições de frequência quando os intervalos têm tamanhos diferentes.

Referências