Projeto Estatistica alura - 1
1 CONHECENDO OS DADOS
1.1 Dataset do projeto
Pesquisa Nacional por Amostra de Domicílios - 2015
A Pesquisa Nacional por Amostra de Domicílios - PNAD investiga anualmente, de forma permanente, características gerais da população, de educação, trabalho, rendimento e habitação e outras, com periodicidade variável, de acordo com as necessidades de informação para o país, como as características sobre migração, fecundidade, nupcialidade, saúde, segurança alimentar, entre outros temas. O levantamento dessas estatísticas constitui, ao longo dos 49 anos de realização da pesquisa, um importante instrumento para formulação, validação e avaliação de políticas orientadas para o desenvolvimento socioeconômico e a melhoria das condições de vida no Brasil.
Fonte dos Dados
https://ww2.ibge.gov.br/home/estatistica/populacaotrabalhoerendimento/pnad2015/microdados.shtm
Variáveis utilizadas
Renda
Rendimento mensal do trabalho principal para pessoas de 10 anos ou mais de idade.
Idade
Idade do morador na data de referência em anos.
Altura (elaboração própria)
Altura do morador em metros.
UF
| Código | Descrição | Código | Descrição |
|---|---|---|---|
| 11 | Rondônia | 28 | Sergipe |
| 12 | Acre | 29 | Bahia |
| 13 | Amazonas | 31 | Minas Gerais |
| 14 | Roraima | 32 | Espírito Santo |
| 15 | Pará | 33 | Rio de Janeiro |
| 16 | Amapá | 35 | São Paulo |
| 17 | Tocantins | 41 | Paraná |
| 21 | Maranhão | 42 | Santa Catarina |
| 22 | Piauí | 43 | Rio Grande Sul |
| 23 | Ceará | 50 | Mato Grosso Sul |
| 24 | Rio Grande do Norte | 51 | Mato Grosso |
| 25 | Paraíba | 52 | Goiás |
| 26 | Pernambuco | 53 | Distrito Federal |
| 27 | Alagoas |
Sexo
| Código | Descrição |
|---|---|
| 0 | Masculino |
| 1 | Feminino |
Anos de Estudo
| Código | Descrição | Código | Descrição |
|---|---|---|---|
| 1 | Sem instrução e menos de 1 ano | 10 | 9 anos |
| 2 | 1 ano | 11 | 10 anos |
| 3 | 2 anos | 12 | 11 anos |
| 4 | 3 anos | 13 | 12 anos |
| 5 | 4 anos | 14 | 13 anos |
| 6 | 5 anos | 15 | 14 anos |
| 7 | 6 anos | 16 | 15 anos ou mais |
| 8 | 7 anos | 17 | Não determinados |
| 9 | 8 anos | Não aplicável |
Cor
| Código | Descrição | Código | Descrição |
|---|---|---|---|
| 0 | Indígena | 6 | Amarela |
| 2 | Branca | 8 | Parda |
| 4 | Preta | 9 | Sem declaração |
Observação
Os seguintes tratamentos foram realizados nos dados originais:
- Foram eliminados os registros onde a Renda era inválida (999 999 999 999);
- Foram eliminados os registros onde a Renda era missing;
- Foram considerados somente os registros das Pessoas de Referência de cada domicílio (responsável pelo domicílio).
sessionInfo()## R version 4.1.2 (2021-11-01)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 22621)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Portuguese_Brazil.1252 LC_CTYPE=Portuguese_Brazil.1252
## [3] LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C
## [5] LC_TIME=Portuguese_Brazil.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] dplyr_1.0.8 ggplot2_3.3.5 janitor_2.1.0 stringr_1.4.0
##
## loaded via a namespace (and not attached):
## [1] pillar_1.7.0 bslib_0.3.1 compiler_4.1.2 jquerylib_0.1.4
## [5] rmdformats_1.0.3 tools_4.1.2 digest_0.6.29 gtable_0.3.0
## [9] jsonlite_1.8.0 lubridate_1.8.0 evaluate_0.15 lifecycle_1.0.1
## [13] tibble_3.1.8 pkgconfig_2.0.3 rlang_1.0.2 cli_3.3.0
## [17] DBI_1.1.3 rstudioapi_0.13 yaml_2.3.5 xfun_0.30
## [21] fastmap_1.1.0 withr_2.5.0 knitr_1.39 generics_0.1.2
## [25] vctrs_0.4.1 sass_0.4.1 grid_4.1.2 tidyselect_1.1.2
## [29] glue_1.6.2 snakecase_0.11.0 R6_2.5.1 fansi_1.0.3
## [33] rmarkdown_2.14 bookdown_0.28 purrr_0.3.4 magrittr_2.0.3
## [37] scales_1.2.0 htmltools_0.5.2 ellipsis_0.3.2 assertthat_0.2.1
## [41] colorspace_2.0-3 utf8_1.2.2 stringi_1.7.6 munsell_0.5.0
## [45] crayon_1.5.1
Importando a base de dados
dados <- read.csv(
"C:/Lepes - pasta local/Rmarkdown - alura/dados.csv",
sep = ","
)1.2 Tipos de dados
Variáveis qualitativas ordinais
► Variáveis que podem ser ordenadas ou hierarquizadas
Exemplo: Anos de Estudo
sort(unique(dados$Anos.de.Estudo),decreasing = FALSE)## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Variáveis qualitativas nominais
► Variáveis que não podem ser ordenadas ou hierarquizadas
Exemplo: UF, Sexo e Cor
knitr::kable(
data.frame(
UF = sort(unique(dados$UF), decreasing = FALSE),
Sexo = c(
sort(unique(dados$Sexo), decreasing = FALSE),
rep("",25)
),
Cor = c(
sort(unique(dados$Cor), decreasing = FALSE),
rep("",22)
),
fix.empty.names = TRUE
),
align = c('c','c','c')
)| UF | Sexo | Cor |
|---|---|---|
| 11 | 0 | 0 |
| 12 | 1 | 2 |
| 13 | 4 | |
| 14 | 6 | |
| 15 | 8 | |
| 16 | ||
| 17 | ||
| 21 | ||
| 22 | ||
| 23 | ||
| 24 | ||
| 25 | ||
| 26 | ||
| 27 | ||
| 28 | ||
| 29 | ||
| 31 | ||
| 32 | ||
| 33 | ||
| 35 | ||
| 41 | ||
| 42 | ||
| 43 | ||
| 50 | ||
| 51 | ||
| 52 | ||
| 53 |
Variáveis quantitativas discretas
► Variáveis que representam uma contagem onde os valores possíveis
formam um conjunto finito ou enumerável.
Exemplo: Idade
Idade <- sort(unique(dados$Idade), decreasing = FALSE)
paste("A idade varia entre",min(Idade),"e",max(Idade))## [1] "A idade varia entre 13 e 99"
Variáveis quantitativas contínuas
► Variáveis que representam uma contagem ou mensuração que assumem
valores em uma escala contínua (números reais).
Exemplo: Altura
altura <- sort(unique(dados$Altura), decreasing = FALSE)
paste("A idade varia entre",round(min(altura),digits = 2),"e",round(max(altura),digits = 2),"metros")## [1] "A idade varia entre 1.34 e 2.03 metros"
2 DISTRIBUIÇÃO DE FREQUÊNCIAS
O primeiro passo em um trabalho de análise é o conhecimento do comportamento das variáveis envolvidas no estudo. Utilizando técnicas estatísticas como as análises das DISTRIBUIÇÕES DE FREQUÊNCIAS e HISTOGRAMAS podemos avaliar melhor a forma como os fenômenos em estudo se distribuem.
2.1 Distribuição de frequências para variáveis qualitativas
# usando o pacote "janitor" e o dplyr
df <- dados %>%
mutate(
Sexo = case_when(
Sexo == 0 ~ "masculino",
Sexo == 1 ~ "feminino"
)
) %>%
tabyl(Sexo) %>%
adorn_pct_formatting(digits = 2)
names(df)[2] <- "amostra"
knitr::kable(df, format = "simple")| Sexo | amostra | percent |
|---|---|---|
| feminino | 23590 | 30.70% |
| masculino | 53250 | 69.30% |
2.2 Distribuição de frequências para variáveis quantitativas
Passo 1 - Especificar os limites de cada classe
Utilizar a seguinte classificação:
A ► Acima de 20 SM
B ► De 10 a 20 SM
C ► De 4 a 10 SM
D ► De 2 a 4 SM
E ► Até 2 SM
onde SM é o valor do salário mínimo na época. Em nosso caso R$ 788,00 (2015):
A ► Acima de 15.760
B ► De 7.880 a 15.760
C ► De 3.152 a 7.880
D ► De 1.576 a 3.152
E ► Até 1.576
classes <- c(0, 1576, 3152, 7880, 15760, 200000)
nomes <- c('E', 'D', 'C', 'B', 'A')
data <- tabyl(
cut(
x = dados$Renda,
breaks = classes,
labels = nomes,
include.lowest = TRUE
)
) %>%
adorn_pct_formatting(digits = 2)
names(data) <- c("classe","amostra","porcentagens")
df <- data[order(data$classe,decreasing = TRUE),]
knitr::kable(df,align = c("c","c","c"))| classe | amostra | porcentagens | |
|---|---|---|---|
| 5 | A | 608 | 0.79% |
| 4 | B | 2178 | 2.83% |
| 3 | C | 7599 | 9.89% |
| 2 | D | 16700 | 21.73% |
| 1 | E | 49755 | 64.75% |
2.3 Distribuição de frequências para variáveis quantitativas
Passo 1 - Definindo o número de classes
Regra de Sturges
\[k = 1 + \frac {10}{3}\log_{10}n\]
n <- nrow(dados)
k <- round(1 + (log(n,base = 10))*(10/3))
frequencia <- table(
cut(
x = dados$Altura,
breaks = k,
include.lowest = TRUE
)
)2.4 Histograma
O HISTOGRAMA é a representação gráfica de uma distribuição de frequências. É um gráfico formado por um conjunto de retângulos colocados lado a lado, onde a área de cada retângulo é proporcional à frequência da classe que ele representa.
ggplot(dados, aes(x = Altura)) +
geom_histogram(
binwidth = 0.02,
alpha = 0.9
) +
# ggplot2::scale_color_gradient(
# low = red,
# high = white
# ) +
ylab("Frequência") +
xlab("Alturas") +
ggtitle('Histograma das Alturas') +
theme(
plot.title = element_text(size = 14, hjust = 0.5),
axis.title.y = element_text(size = 12, vjust = +0.2),
axis.title.x = element_text(size = 12, vjust = -0.2),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10)
)3 MEDIDAS DE TENDÊNCIA CENTRAL
Data Fame Exemplo
db <- data.frame(
materias = c(
'Matemática', 'Português', 'Inglês',
'Geografia','História', 'Física', 'Química'
),
Fulano = c(
8, 10, 4, 8, 6, 10, 8
),
Beltrano = c(
10, 2, 0.5, 1, 3, 9.5, 10
),
Sicrano = c(
7.5, 8, 7, 8, 8, 8.5, 7
)
)
knitr::kable(db,align = c("c","c","c"))| materias | Fulano | Beltrano | Sicrano |
|---|---|---|---|
| Matemática | 8 | 10.0 | 7.5 |
| Português | 10 | 2.0 | 8.0 |
| Inglês | 4 | 0.5 | 7.0 |
| Geografia | 8 | 1.0 | 8.0 |
| História | 6 | 3.0 | 8.0 |
| Física | 10 | 9.5 | 8.5 |
| Química | 8 | 10.0 | 7.0 |
3.1 Média aritmética
É representada por \(\mu\) quando se refere à população e por \(\bar{X}\) quando se refere à amostra
\[\mu = \frac 1n\sum_{i=1}^{n}X_i\]
onde
\(n\) = número de observações (registros)
\(X_i\) = valor da i-ésima observação (registro)
a <- aggregate(list(Renda = dados$Renda), list(Sexo = dados$Sexo), mean)
a## Sexo Renda
## 1 0 2192.442
## 2 1 1566.847
knitr::kable(a, align = c("c","c"))| Sexo | Renda |
|---|---|
| 0 | 2192.442 |
| 1 | 1566.847 |
3.2 Mediana
Para obtermos a mediana de uma conjunto de dados devemos proceder da seguinte maneira: 1. Ordenar o conjunto de dados; 2. Identificar o número de observações (registros) do conjunto de dados (\(n\)); 3. Identicar o elemento mediano:
Quando \(n\) for ímpar, a posição do elemento mediano será obtida da seguinte forma:
\[Elemento_{Md} = \frac{n+1}2\]
Quando \(n\) for par, a posição do elemento mediano será obtida da seguinte forma:
\[Elemento_{Md} = \frac{n}2\]
- Obter a mediana:
# valores ordenados da amostra
# Para descobrir se o md eh par ou impar, devemos utilizar o operador "%% 2"
# quando o valor for par, o resultado sera zero, quando impar, 1 ...
mediana <- function(base, coluna){
if(k %% 2 == 0){
dados <- base[order(base[,coluna])]
k <- length(dados)
md <- (dados[k/2])
paste("O valor da divisao foi par, logo
divide-se k por 2 e teremos:", md)
} else{
mf <- ( dados[round(k/2)] + dados[(1+k)/2] )
paste("O valor da divisao foi impar, logo realiza-se a conta
somando os dois termos do meio da distribuicao:", mf)
}
}
# Ou use a funcao median()3.3 Moda
Pode-se definir a moda como sendo o valor mais frequente de um conjunto de dados. A moda é bastante utilizada para dados qualitativos.
# criando uma funcao para calcular a moda
Moda <- function(vetor) {
freq <- table(vetor)
return(names(freq)[freq == max(freq)])
}
Moda(db$Fulano)## [1] "8"
3.4 Relação entre média, mediana e moda
Avaliando a variável RENDA
ggplot(
dados[dados$Renda < 20000,],
aes(x = Renda, y = ..density..)
) +
geom_histogram(
binwidth = 500
) +
geom_density(
color = 'green',
alpha = 0.7
)Variaveis estatisticas descritivas
mediana <- median(dados$Renda)
media <- mean(dados$Renda)
moda <- as.numeric(Moda(dados$Renda))
paste(
"A media, mediana e moda sao respectivamentes:",
round(media ,3),
round(mediana ,3),
round(mean(moda),3)
)## [1] "A media, mediana e moda sao respectivamentes: 2000.383 1200 788"
summary(dados[dados$Renda < 20000,"Renda"])## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 788 1200 1849 2000 19663
Avaliando a variável ALTURA
ggplot(
dados, aes(x = Altura, y = ..density..)
) +
geom_histogram() +
geom_density(color = 'green',
alpha = 0.7)Variaveis estatisticas descritivas
mediana <- median(dados$Altura)
media <- mean(dados$Altura)
moda <- as.numeric(Moda(dados$Altura))
paste(
"A media, mediana e moda sao respectivamentes:",
round(media ,3),
round(mediana ,3),
round(mean(moda),3)
)## [1] "A media, mediana e moda sao respectivamentes: 1.7 1.699 1.707"
4 MEDIDAS SEPARATRIZES
4.1 Quartis, decis e percentis
Há uma série de medidas de posição semelhantes na sua concepção à mediana, embora não sejam medidas de tendência central. Como se sabe, a mediana divide a distribuição em duas partes iguais quanto ao número de elementos de cada parte. Já os quartis permitem dividir a distribuição em quatro partes iguais quanto ao número de elementos de cada uma; os decis em dez partes e os centis em cem partes iguais.
quartis <- seq(from = 25, to = 75, by = 25) / 100
decis <- seq(from = 1, to = 9) / 10
centis <- seq(from = 1, to = 99) / 100
a <- quantile(dados$Renda, quartis)
b <- quantile(dados$Renda, decis)
c <- quantile(dados$Renda, centis)4.2 Box-plot
O box plot dá uma idéia da posição, dispersão, assimetria, caudas e dados discrepantes (outliers). A posição central é dada pela mediana e a dispersão por \(IIQ\). As posições relativas de \(Q1\), \(Mediana\) e \(Q3\) dão uma noção da simetria da distribuição. Os comprimentos das cauda são dados pelas linhas que vão do retângulo aos valores remotos e pelos valores atípicos.
5 MEDIDAS DE DISPERSÃO
Embora as medidas de posição forneçam uma sumarização bastante importante dos dados, elas podem não ser suficientes para caracterizar conjuntos distintos, especialmente quando as observações de determinada distribuição apresentarem dados muito dispersos.
5.1 Desvio médio absoluto
\[DM = \frac 1n\sum_{i=1}^{n}|X_i-\bar{X}|\]
notas_fulano <- data.frame(Fulano = db$Fulano)
nota_media_fulano <- mean(notas_fulano$Fulano)
notas_fulano$Desvio <- notas_fulano$Fulano - nota_media_fulano
notas_fulano$Desvio.Absoluto <- abs(notas_fulano$Desvio)
mean(notas_fulano$Desvio.Absoluto)## [1] 1.55102
Variância
A variância é construída a partir das diferenças entre cada observação e a média dos dados, ou seja, o desvio em torno da média. No cálculo da variância, os desvios em torno da média são elevados ao quadrado.
Variância populacional
\[\sigma^2 = \frac 1n\sum_{i=1}^{n}(X_i-\mu)^2\]
Variância amostral
\[S^2 = \frac 1{n-1}\sum_{i=1}^{n}(X_i-\bar{X})^2\]
notas_fulano$Desvio2 <- notas_fulano$Desvio ^ 2
knitr::kable(notas_fulano,format = "html")| Fulano | Desvio | Desvio.Absoluto | Desvio2 |
|---|---|---|---|
| 8 | 0.2857143 | 0.2857143 | 0.0816327 |
| 10 | 2.2857143 | 2.2857143 | 5.2244898 |
| 4 | -3.7142857 | 3.7142857 | 13.7959184 |
| 8 | 0.2857143 | 0.2857143 | 0.0816327 |
| 6 | -1.7142857 | 1.7142857 | 2.9387755 |
| 10 | 2.2857143 | 2.2857143 | 5.2244898 |
| 8 | 0.2857143 | 0.2857143 | 0.0816327 |
round(sum(notas_fulano$Desvio2) / (nrow(notas_fulano) - 1),3)## [1] 4.571
variancia <- var(notas_fulano$Fulano)
variancia## [1] 4.571429
5.3 Desvio padrão
Uma das restrições da variância é o fato de fornecer medidas em quadrados das unidades originais - a variância de medidas de comprimento, por exemplo, é em unidades de área. Logo, o fato de as unidades serem diferentes dificulta a comparação da dispersão com as variáveis que a definem. Um modo de eliminar essa dificuldade é considerar sua raiz quadrada.
Desvio padrão populacional
\[\sigma = \sqrt{\frac 1n\sum_{i=1}^{n}(X_i-\mu)^2} \Longrightarrow \sigma = \sqrt{\sigma^2}\]
Desvio padrão amostral
\[S = \sqrt{\frac 1{n-1}\sum_{i=1}^{n}(X_i-\bar{X})^2} \Longrightarrow S = \sqrt{S^2}\]
sqrt(variancia)## [1] 2.13809
desvio_padrao <- sd(notas_fulano$Fulano)
desvio_padrao## [1] 2.13809
summary(db)## materias Fulano Beltrano Sicrano
## Length:7 Min. : 4.000 Min. : 0.500 Min. :7.000
## Class :character 1st Qu.: 7.000 1st Qu.: 1.500 1st Qu.:7.250
## Mode :character Median : 8.000 Median : 3.000 Median :8.000
## Mean : 7.714 Mean : 5.143 Mean :7.714
## 3rd Qu.: 9.000 3rd Qu.: 9.750 3rd Qu.:8.000
## Max. :10.000 Max. :10.000 Max. :8.500