“Chamar um estatístico depois que o experimento foi feito é o mesmo que pedir a ele que faça um exame post-mortem – talvez ele consiga dizer do que o experimento morreu”.
Ronald Fischer
Estatística descritiva
A estatística descritiva é a parte da estatística que trata da organização e descrição dos dados e nos ajuda a descrever e compreender as características de um conjunto de dados específico, fornecendo pequenos resumos sobre a amostra e as medidas desses dados.
As características de interesse, que chamaremos de variáveis, podem ser do tipo qualitativas ou quantitativas.
A variável qualitativa resulta de uma classificação por tipos ou atributos, enquanto a variável quantitativa é expressa em números.
Distribuições de frequência
A distribuição de frequência é uma ferramenta usada para resumir e entender um conjunto de dados, especialmente quando estamos lidando com grandes quantidades de valores.
Vamos usar o conjunto de dados hipotético de Morettin (2017), do livro Estatística básica1 para ilustrar a construção de uma tabela de frequência:
N | estado_civil | grau_instrucao | n_filhos | salario | idade_anos | idade_meses | reg_procedencia |
---|---|---|---|---|---|---|---|
1 | solteiro | ensino fundamental | NA | 4.00 | 26 | 3 | interior |
2 | casado | ensino fundamental | 1 | 4.56 | 32 | 10 | capital |
3 | casado | ensino fundamental | 2 | 5.25 | 36 | 5 | capital |
4 | solteiro | ensino médio | NA | 5.73 | 20 | 10 | outra |
5 | solteiro | ensino fundamental | NA | 6.26 | 40 | 7 | outra |
6 | casado | ensino fundamental | 0 | 6.66 | 28 | 0 | interior |
7 | solteiro | ensino fundamental | NA | 6.86 | 41 | 0 | interior |
8 | solteiro | ensino fundamental | NA | 7.39 | 43 | 4 | capital |
9 | casado | ensino médio | 1 | 7.59 | 34 | 10 | capital |
10 | solteiro | ensino médio | NA | 7.44 | 23 | 6 | outra |
11 | casado | ensino médio | 2 | 8.12 | 33 | 6 | interior |
12 | solteiro | ensino fundamental | NA | 8.46 | 27 | 11 | capital |
13 | solteiro | ensino médio | NA | 8.74 | 37 | 5 | outra |
14 | casado | ensino fundamental | 3 | 8.95 | 44 | 2 | outra |
15 | casado | ensino médio | 0 | 9.13 | 30 | 5 | interior |
16 | solteiro | ensino médio | NA | 9.35 | 38 | 8 | outra |
17 | casado | ensino médio | 1 | 9.77 | 31 | 7 | capital |
18 | casado | ensino fundamental | 2 | 9.80 | 39 | 7 | outra |
19 | solteiro | superior | NA | 10.53 | 25 | 8 | interior |
20 | solteiro | ensino médio | NA | 10.76 | 37 | 4 | interior |
21 | casado | ensino médio | 1 | 11.06 | 30 | 9 | outra |
22 | solteiro | ensino médio | NA | 11.59 | 34 | 2 | capital |
23 | solteiro | ensino fundamental | NA | 12.00 | 41 | 0 | outra |
24 | casado | superior | 0 | 12.79 | 26 | 1 | outra |
25 | casado | ensino médio | 2 | 13.23 | 32 | 5 | interior |
26 | casado | ensino médio | 2 | 13.60 | 35 | 0 | outra |
27 | solteiro | ensino fundamental | NA | 13.85 | 46 | 7 | outra |
28 | casado | ensino médio | 0 | 14.69 | 29 | 8 | interior |
29 | casado | ensino médio | 5 | 14.71 | 40 | 6 | interior |
30 | casado | ensino médio | 2 | 15.99 | 35 | 10 | capital |
31 | solteiro | superior | NA | 16.22 | 31 | 5 | outra |
32 | casado | ensino médio | 1 | 16.61 | 36 | 4 | interior |
33 | casado | superior | 3 | 17.26 | 43 | 7 | capital |
34 | solteiro | superior | NA | 18.75 | 33 | 7 | capital |
35 | casado | ensino médio | 2 | 19.40 | 48 | 11 | capital |
36 | casado | superior | 3 | 23.30 | 42 | 2 | interior |
A Tabela 1 contém dados de variáves qualitativas e quantitativas.
Podemos construir uma tabela de frequência para a variável qualitativa
nominal estado_civil
.
Estado civil | \[ f_i \] | \[ f_r \] | \[ f_r \% \] |
---|---|---|---|
Casado | 20 | 0,5556 | 55,56 |
Solteiro | 16 | 0,4444 | 44,44 |
Total | 36 | 1,0000 | 100,00 |
Podemos observar facilmente que 20 empregados são casados e 16 são
solteiros, analisando a frequência simples das categorias da variável
Estado civil
, representada por \(f_i\) na Tabela 2.
É bastante interessante observar essas mesmas informações em termos de percentuais, então temos a frequência relativa expressa em percentual. Para calcular o percentual de empregados casados, basta fazer \(20/(20+16)*100\).
O mesmo pode ser feito para a variável qualitativa ordinal
grau_instrução
, como na Tabela 3.
Grau de instrução | Frequência | Proporção | Percentual |
---|---|---|---|
Ensino Fundamental | 12 | 0.3333 | 33.33 |
Ensino Médio | 18 | 0.5000 | 50.00 |
Ensino Superior | 6 | 0.1667 | 16.67 |
Neste ponto iremos começar a praticar em R. O primeiro passo é ler o
conjunto de dados, que deve ser do tipo .txt
,
.csv
,.xls
ou .xlsx
. Há outras
extensões, mas iremos utilizar o formato .txt
, pois
acredito ser o mais simples. Primeiro é preciso copiar os dados abaixo
para o bloco de notas e salvar com um nome qualquer. Não precisa se
preocupar em alterar o conteúdo. Na verdade, é recomendado que não o
faça.
N;estado_civil;grau_instrucao;n_filhos;salario;idade_anos;idade_meses;reg_procedencia 1;solteiro;ensino fundamental;;4,00;26;3;interior 2;casado;ensino fundamental;1;4,56;32;10;capital 3;casado;ensino fundamental;2;5,25;36;5;capital 4;solteiro;ensino médio;;5,73;20;10;outra 5;solteiro;ensino fundamental;;6,26;40;7;outra 6;casado;ensino fundamental;0;6,66;28;0;interior 7;solteiro;ensino fundamental;;6,86;41;0;interior 8;solteiro;ensino fundamental;;7,39;43;4;capital 9;casado;ensino médio;1;7,59;34;10;capital 10;solteiro;ensino médio;;7,44;23;6;outra 11;casado;ensino médio;2;8,12;33;6;interior 12;solteiro;ensino fundamental;;8,46;27;11;capital 13;solteiro;ensino médio;;8,74;37;5;outra 14;casado;ensino fundamental;3;8,95;44;2;outra 15;casado;ensino médio;0;9,13;30;5;interior 16;solteiro;ensino médio;;9,35;38;8;outra 17;casado;ensino médio;1;9,77;31;7;capital 18;casado;ensino fundamental;2;9,80;39;7;outra 19;solteiro;superior;;10,53;25;8;interior 20;solteiro;ensino médio;;10,76;37;4;interior 21;casado;ensino médio;1;11,06;30;9;outra 22;solteiro;ensino médio;;11,59;34;2;capital 23;solteiro;ensino fundamental;;12,00;41;0;outra 24;casado;superior;0;12,79;26;1;outra 25;casado;ensino médio;2;13,23;32;5;interior 26;casado;ensino médio;2;13,60;35;0;outra 27;solteiro;ensino fundamental;;13,85;46;7;outra 28;casado;ensino médio;0;14,69;29;8;interior 29;casado;ensino médio;5;14,71;40;6;interior 30;casado;ensino médio;2;15,99;35;10;capital 31;solteiro;superior;;16,22;31;5;outra 32;casado;ensino médio;1;16,61;36;4;interior 33;casado;superior;3;17,26;43;7;capital 34;solteiro;superior;;18,75;33;7;capital 35;casado;ensino médio;2;19,40;48;11;capital 36;casado;superior;3;23,30;42;2;interior
Chamei meu arquivo de dados1.txt
. Há mais de uma função
para lê-lo no R, aqui usaremos read.table
e será armazenado
no objeto dados
. Existem alguns argumentos que devem ser
declarados na função:
file
: Nome do arquivo a ser importado, que deve vir com a extensão e precisa estar entre aspas . O caminho completo é necessário caso o arquivo não esteja na mesma pasta de trabalho.header
: Deve assumir valor TRUE caso a primeira linha do arquivo lido contenha o nome das variáveis.sep
: Caracter que será utilizado para separar as colunas. No nosso caso, utilizaremos“;”
.dec
: Caracter que será utilizado como separador decimal, que costuma ser“,”
no Brasil.skip
: Número de linhas iniciais a serem ignoradas na leitura inicial do arquivo, caso necessário.
Assim, para ler os dados no R
, utilizaremos o
comando:
Antes de qualquer coisa, é preciso analisar a estrutura dos dados e, para isso, podemos usar a função:
## 'data.frame': 36 obs. of 8 variables:
## $ N : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado_civil : chr "solteiro" "casado" "casado" "solteiro" ...
## $ grau_instrucao : chr "Ensino Fundamental" "Ensino Fundamental" "Ensino Fundamental" "Ensino Médio" ...
## $ n_filhos : int NA 1 2 NA NA 0 NA NA 1 NA ...
## $ salario : num 4 4.56 5.25 5.73 6.26 6.66 6.86 7.39 7.59 7.44 ...
## $ idade_anos : int 26 32 36 20 40 28 41 43 34 23 ...
## $ idade_meses : int 3 10 5 10 7 0 0 4 10 6 ...
## $ reg_procedencia: chr "interior" "capital" "capital" "outra" ...
Com essa função é possível ver que o conjunto de dados é do tipo
data.frame
, com 36 observações (número de linhas) e 8
variáveis (colunas). As variáveis são do tipo integer
,
character
e numeric
.
Outras funções úteis são:
## [1] "N" "estado_civil" "grau_instrucao" "n_filhos"
## [5] "salario" "idade_anos" "idade_meses" "reg_procedencia"
## N estado_civil grau_instrucao n_filhos salario idade_anos idade_meses
## 1 1 solteiro Ensino Fundamental NA 4.00 26 3
## 2 2 casado Ensino Fundamental 1 4.56 32 10
## 3 3 casado Ensino Fundamental 2 5.25 36 5
## 4 4 solteiro Ensino Médio NA 5.73 20 10
## 5 5 solteiro Ensino Fundamental NA 6.26 40 7
## 6 6 casado Ensino Fundamental 0 6.66 28 0
## reg_procedencia
## 1 interior
## 2 capital
## 3 capital
## 4 outra
## 5 outra
## 6 interior
## N estado_civil grau_instrucao n_filhos salario idade_anos idade_meses
## 31 31 solteiro Ensino Superior NA 16.22 31 5
## 32 32 casado Ensino Médio 1 16.61 36 4
## 33 33 casado Ensino Superior 3 17.26 43 7
## 34 34 solteiro Ensino Superior NA 18.75 33 7
## 35 35 casado Ensino Médio 2 19.40 48 11
## 36 36 casado Ensino Superior 3 23.30 42 2
## reg_procedencia
## 31 outra
## 32 interior
## 33 capital
## 34 capital
## 35 capital
## 36 interior
Para ver o nome das variáveis, foi usado names;
as
funções head
e tail
, mostram as 6 primeiras
linhas e 6 últimas colunas do conjunto de dados, respectivamente.
Certificar-se de que o conjunto de dados lido tem a estrutura
esperada evita que seja preciso voltar para corrigir variáveis que
deveriam ser do tipo numeric
mas não são lidas como tal,
por exemplo.
Dados faltantes
Muitas vezes encontramos conjuntos de dados com valores faltantes por
uma ou outra razão. O R indica um valor faltante como NA
(Not Available ou Indisponível).
Veja o que acontece quando você tenta calcular a média para o número de filhos do nosso conjunto de dados:
## [1] NA
Para encontrar a média, é preciso remover os NAs antes de calcular:
## [1] 1.65
Então o rm
em na.rm
significa “remover” e
=TRUE
significa “faça isso”. Caso algum dia você tenha que
verificar se há ou quais são os dados faltantes em um objeto, a função
is.na()
fará isso por você:
## [1] TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE
## [13] TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE
## [25] FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
Fatores
Em R, um fator é um tipo de objeto de dados utilizado para representar variáveis nominais ( também chamadas de categóricas). Ele é uma forma de armazenar dados discretos e finitos, onde os valores possíveis são pré-definidos e não numéricos. Fatores são frequentemente usados para representar categorias, níveis ou grupos em um conjunto de dados.
Vejamos um exemplo do livro Estatística Básica para Leigos, de Schmuller (2017): Suponha que estejamos fazendo uma pesquisa sobre a cor dos olhos das pessoas. Quando registramos a cor do olho de alguém, registramos um número: 1 = amber (âmbar), 2 = blue (azul), 3 = brown (castanho), 4 = gray (acinzentado), 5 = green (verde) e 6 = hazel (mel). Uma maneira de pensar nesse processo é considerar que a cor do olho é um fator e cada cor é um nível desse fator. Então, nesse caso, o fator cor de olho tem seis níveis.
Agora imagine que você tenha usado o código numérico para tabular as cores dos olhos de 14 pessoas e transformou esses códigos em um vetor:
Em seguid, usou a função factor()
para transformar
eye_color
em um fator:
Finalmente, atribuiu níveis ao fator:
Agora, se examinarmos os dados de cores dos olhos em termos de níveis de fatores, eles se parecerão com o seguinte:
## [1] blue blue gray amber green green green hazel amber brown hazel brown
## [13] amber gray
## Levels: amber blue brown gray green hazel
Extraindo dados de um data frame
Suponha que você queira fazer uma verificação rápida da média de idade das pessoas solteiras em comparação com pessoas casadas.
Podemos extrair as idades para cada nível do fator
estado_civil
e criar vetores:
solteiros <- dados$idade_anos[dados$estado_civil=="solteiro"]
casados <- dados$idade_anos[dados$estado_civil=="casado"]
Observe o sinal de igual duplo ==
entre os colchetes. É
um operador lógico. Pense nele como “se dados$estado_civil
for igual a solteiro
”.
O sinal de igual duplo a==b
distingue o operador lógico
(“se a for igual a b”) do operador de atribuição (a=b
;
“defina a igual a b”).
O vetor de médias será:
Já temos os resultados, mas podemos melhorar a organização:
Abaixo temos um data frame de três colunas, com estado civil em uma coluna, a média de idade correspondente na segunda e a contagem de cada nível da variável estado civil na última coluna:
Depois de organizado, temos:
## est.civil media.idade n
## 1 solteiros 33.875 16
## 2 casados 35.150 20
A função aggregate
economiza linhas de comando se
estivermos interessados em obter as médias de idade da variáve estado
civil.
Essa função agrega as informações de um dataframe, incluindo alguma
função que é especificada por um parâmetro chamado FUN. Como queremos a
média, usamos a função sum
.
## estado_civil idade_anos
## 1 casado 35.150
## 2 solteiro 33.875
Podemos agregar a variável grau de instrução utilizando o sinal
+
:
Então é possível saber a média de idade de índivíduos casados e solteiros, segundo o grau de instrução.
## estado_civil grau_instrucao idade_anos
## 1 casado Ensino Fundamental 35.80000
## 2 solteiro Ensino Fundamental 37.71429
## 3 casado Ensino Médio 34.41667
## 4 solteiro Ensino Médio 31.50000
## 5 casado Ensino Superior 37.00000
## 6 solteiro Ensino Superior 29.66667
Gráficos
Um gráfico é uma representação visual de dados ou informações que ajuda a transmitir padrões, tendências, relações e comparações de forma mais clara e compreensível. Podemos verificar o padrão da distribuição do salário dos empregados da Companhia MB fazendo um histograma de frequência.
É intressante melhorar a aparrência desse gráfico, e faremos isso modificando as argumentos da função.
hist(dados$salario,
main="Salário dos empregados da Companhia MB",
ylab="Salário (em salários mínimos)",
col = "turquoise3")
Outra maneira de mostrar as informações do histograma é pensar nos
dados como probabilidades, em vez de frequências. Então, em vez da
frequência de uma faixa de salários específica, colocamos no gráfico a
probabilidade de que um salário daquela faixa seja selecionado nos
dados. Para isso, adicione probability = TRUE
. Então temos
um gráfico de densidade.
Um gráfico de densidade, também conhecido como gráfico de distribuição de densidade, é uma representação visual da distribuição de probabilidade de um conjunto de dados contínuos. Ele mostra como os valores dos dados estão distribuídos ao longo de um intervalo contínuo e ajuda a identificar padrões, picos, assimetrias e outros aspectos da distribuição dos dados.
Esse tipo de gráfico é especialmente útil quando se deseja entender a forma da distribuição de dados e obter insights sobre a concentração de valores em diferentes partes do intervalo. Ele é particularmente eficaz para comparar diferentes distribuições e analisar a sobreposição entre elas.
Um gráfico de densidade geralmente consiste em uma curva suave que traça a densidade de probabilidade em relação aos valores dos dados. A área sob a curva representa a probabilidade total de ocorrência dos dados dentro do intervalo.
Depois de criar o gráfico, é possível usar uma função adicional
chamada lines()
para adicionar uma linha ao gráfico de
densidade:
hist(dados$salario,
main="Salário dos empregados da Companhia MB",
xlab="Salário (em saláios mínimos)",
ylab = "Densidade",
col = "orchid3",
probability = TRUE)
lines(density(dados$salario), lty=2, col= "darkgreen", lwd=2 )
Perceba que a função lines
também possui argumentos:
lty
é o tipo, col
é a cor e lwd
,
a espessura da linha.
Ao criar um histograma, R calcula qual é o melhor número de colunas
para uma boa aparência. Aqui, R decidiu que 10 é um bom número. É
possível variar o número de colunas adicionando um argumento chamado
breaks
e declarando seu valor.
R nem sempre lhe dá o valor a ser atribuído, mas fornece algo próximo
e tenta manter uma boa aparência. Adicione esse argumento, declare seu
valor (breaks =4
, por exemplo) e entenderá o que quero
dizer.
Sugiro que modifique também os demais argumentos e verifique aqueles que não foram utilizados aqui.
Este texto faz parte de notas de aula, cujos livros-textos serão frequentemente reproduzidos e, algumas vezes adaptados. As referências são citadas acima.↩︎