1 Instação R

RStudio Desktop
1. Install R (https://cran.rstudio.com/ (base e Rtools)
2. Download RStudio Desktop (https://rstudio.com/products/rstudio/download/)

2 Carregamento de pacotes

library(readxl)
library(dplyr)
library(car)
library(rstatix)
library(emmeans)
library(ggplot2)
library(knitr)
library(kableExtra)
library(htmltools)

3 Importar conjunto de dados

#library(readxl)
DadosIDH <- read_excel("C:/Users/Andreia Zanella/Seafile/Minha Biblioteca/INE/Aulas graduação/2020.2/INE5123/DadosIDH.xlsx")

ou
File -> Import Dataset -> From excel… (ou outro formato) -> Browse -> Import

4 Vizualizar dados

View(DadosIDH)      

ou

#library(dplyr)
glimpse(DadosIDH)
## Rows: 293
## Columns: 14
## $ Ref            <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ~
## $ Estado         <chr> "SC", "SC", "SC", "SC", "SC", "SC", "SC", "SC", "SC", "~
## $ Mesorregião    <chr> "V. Itajai", "Sul", "Oeste", "Sul", "G. Fpolis", "Oeste~
## $ Microrregião   <chr> "Blumenau", "Tubarão", "Joaçaba", "Tubarão", "Tijucas",~
## $ Cidade         <chr> "BOTUVERÁ", "SANTA ROSA DE LIMA", "IOMERÊ", "PEDRAS GRA~
## $ População      <dbl> 5322, 2147, 2962, 3953, 38583, 9810, 6559, 4115, 24382,~
## $ AnosEstudo_cat <chr> "9 a 11 anos", "11 a 13 anos", "9 a 11 anos", "9 a 11 a~
## $ MortInf_cat    <chr> "12 a 16", "12 a 16", "8 a 12", "8 a 12", "8 a 12", "12~
## $ EspVida_cat    <chr> "75 a 79", "75 a 79", "75 a 79", "75 a 79", "75 a 79", ~
## $ Renda_cat      <chr> "Superior ou igual à Mediana", "Inferior à Mediana", "S~
## $ AnosEstudo     <dbl> 10.53, 11.51, 10.43, 9.41, 9.50, 11.66, 10.29, 8.96, 9.~
## $ MortInf        <dbl> 12.4, 12.8, 9.2, 10.7, 11.1, 12.2, 12.0, 12.8, 10.3, 10~
## $ EspVida        <dbl> 75.87, 75.55, 78.44, 77.18, 76.90, 75.97, 76.15, 75.55,~
## $ Renda          <dbl> 805.77, 731.43, 873.90, 683.36, 794.12, 719.94, 754.54,~

Visualização em tabela (das 10 primeiras entradas):

#library(knitr)
kable(head(DadosIDH, 10), align = 'c') %>% 
kable_styling(full_width = FALSE, font_size = 9.5, bootstrap_options = c("striped", "condesed"))
Ref Estado Mesorregião Microrregião Cidade População AnosEstudo_cat MortInf_cat EspVida_cat Renda_cat AnosEstudo MortInf EspVida Renda
1 SC V. Itajai Blumenau BOTUVERÁ 5322 9 a 11 anos 12 a 16 75 a 79 Superior ou igual à Mediana 10.53 12.4 75.87 805.77
2 SC Sul Tubarão SANTA ROSA DE LIMA 2147 11 a 13 anos 12 a 16 75 a 79 Inferior à Mediana 11.51 12.8 75.55 731.43
3 SC Oeste Joaçaba IOMERÊ 2962 9 a 11 anos 8 a 12 75 a 79 Superior ou igual à Mediana 10.43 9.2 78.44 873.90
4 SC Sul Tubarão PEDRAS GRANDES 3953 9 a 11 anos 8 a 12 75 a 79 Inferior à Mediana 9.41 10.7 77.18 683.36
5 SC G. Fpolis Tijucas SÃO JOÃO BATISTA 38583 9 a 11 anos 8 a 12 75 a 79 Superior ou igual à Mediana 9.50 11.1 76.90 794.12
6 SC Oeste Chapecó SAUDADES 9810 11 a 13 anos 12 a 16 75 a 79 Inferior à Mediana 11.66 12.2 75.97 719.94
7 SC G. Fpolis Tabuleiro ÁGUAS MORNAS 6559 9 a 11 anos 12 a 16 75 a 79 Inferior à Mediana 10.29 12.0 76.15 754.54
8 SC V. Itajai Blumenau DOUTOR PEDRINHO 4115 7 a 9 anos 12 a 16 75 a 79 Inferior à Mediana 8.96 12.8 75.55 679.44
9 SC V. Itajai Blumenau GUABIRUBA 24382 9 a 11 anos 8 a 12 75 a 79 Superior ou igual à Mediana 9.67 10.3 77.53 851.75
10 SC Norte Joinville MASSARANDUBA 17125 9 a 11 anos 8 a 12 75 a 79 Superior ou igual à Mediana 10.76 10.9 77.04 847.63

Contagem automatizada:

nrow(DadosIDH)
length(which(DadosIDH$Mesorregião=="G. Fpolis"))
length(which(DadosIDH$Mesorregião=="Norte"))
length(which(DadosIDH$Mesorregião=="Oeste"))
length(which(DadosIDH$Mesorregião=="Serrana"))
length(which(DadosIDH$Mesorregião=="Sul"))
length(which(DadosIDH$Mesorregião=="V. Itajai"))

Para inserir uma contagem automatizada no texto, inserir no texto r nrow(DadosIDH) e r length(which(DadosIDH$Mesorregião==“G. Fpolis”)) entre crases: O banco de dados contém informação de 293 cidades, sendo que 21 são da região Grande Florianópolis.

5 Filtros para criar subconjuntos

GFpolis <- subset(DadosIDH, DadosIDH[3]=="G. Fpolis")
VItajai <- subset(DadosIDH, DadosIDH[3]=="V. Itajai")
Sul <- subset(DadosIDH, DadosIDH[3]=="Sul")
Oeste <- subset(DadosIDH, DadosIDH[3]=="Oeste")
Norte <- subset(DadosIDH, DadosIDH[3]=="Norte")
Serrana <- subset(DadosIDH, DadosIDH[3]=="Serrana")

6 Cálculo medidas descritivas

6.1 Medidas de posição

summary(DadosIDH[11:14]) # medidas de posição para variáveis das colunas 11 a 14
##    AnosEstudo       MortInf         EspVida          Renda       
##  Min.   : 7.35   Min.   : 8.55   Min.   :71.05   Min.   : 373.9  
##  1st Qu.: 9.71   1st Qu.:10.60   1st Qu.:74.51   1st Qu.: 642.6  
##  Median :10.31   Median :12.20   Median :76.03   Median : 768.8  
##  Mean   :10.30   Mean   :12.59   Mean   :75.81   Mean   : 767.0  
##  3rd Qu.:10.88   3rd Qu.:14.30   3rd Qu.:77.25   3rd Qu.: 858.2  
##  Max.   :12.70   Max.   :19.90   Max.   :78.64   Max.   :1798.1

6.2 Medidas descritivas

library(pastecs)
descr <- stat.desc(DadosIDH[11:14]) # para variáveis das colunas 11 a 14
round(descr, 2)  #arredondar para 2 casas decimais
##              AnosEstudo MortInf  EspVida     Renda
## nbr.val          293.00  293.00   293.00    293.00
## nbr.null           0.00    0.00     0.00      0.00
## nbr.na             0.00    0.00     0.00      0.00
## min                7.35    8.55    71.05    373.86
## max               12.70   19.90    78.64   1798.12
## range              5.35   11.35     7.59   1424.26
## sum             3016.82 3688.39 22212.95 224719.91
## median            10.31   12.20    76.03    768.81
## mean              10.30   12.59    75.81    766.96
## SE.mean            0.05    0.14     0.10     11.67
## CI.mean.0.95       0.11    0.28     0.20     22.96
## var                0.85    5.85     3.10  39888.44
## std.dev            0.92    2.42     1.76    199.72
## coef.var           0.09    0.19     0.02      0.26
descr_GFpolis <- stat.desc(GFpolis[11:14]) # para região GFpolis nas colunas 11 a 14
round(descr_GFpolis, 2)
##              AnosEstudo MortInf EspVida    Renda
## nbr.val           21.00   21.00   21.00    21.00
## nbr.null           0.00    0.00    0.00     0.00
## nbr.na             0.00    0.00    0.00     0.00
## min                7.44    9.10   72.82   618.55
## max               11.02   16.90   78.59  1798.12
## range              3.58    7.80    5.77  1179.57
## sum              208.25  243.46 1608.54 17697.62
## median            10.07   11.10   76.90   794.12
## mean               9.92   11.59   76.60   842.74
## SE.mean            0.23    0.46    0.35    54.72
## CI.mean.0.95       0.48    0.96    0.73   114.15
## var                1.09    4.46    2.55 62885.31
## std.dev            1.05    2.11    1.60   250.77
## coef.var           0.11    0.18    0.02     0.30

6.3 Medidas Assimetria e Curtose

library(e1071)
kurtosis(DadosIDH$Renda, type=1) # 1 população, 2 amostra  
## [1] 3.908539
skewness(DadosIDH$Renda, type=1) # 1 população, 2 amostra  
## [1] 1.098342

7 Gráficos

7.1 Gráfico de setores (pizza)

7.2 Gráfico de colunas

7.2.1 Colunas simples

7.2.2 Colunas lado a lado

7.2.3 Colunas empilhadas

7.3 Diagrama de dispersão

7.3.1 Esperança de vida ao nascer x Renda per capita

plot(DadosIDH$Renda, DadosIDH$EspVida, main="", 
     xlab="Renda percapita", ylab="Esperança de vida ao nascer", 
     col="blue", pch=16)   #número do pch altera o tipo de marcador

7.3.2 Esperança de vida ao nascer x Renda per capita - ggplot

library(ggplot2)
options(scipen = 999)
ggplot(DadosIDH, aes(x=`Renda`, 
                     y=`EspVida`, 
                     color=Mesorregião)) +
  geom_point(alpha=0.8) + #tranparência
  scale_size(range = c(2, 16), #tamanho bolhas
    name="População") +
    xlab("Renda per capita") +
    ylab("Esperança de Vida ao nascer")

7.4 Histograma

7.4.1 Expectativa de Anos de Estudo

hist(DadosIDH$AnosEstudo, 
     main = "Expectativa de Anos de Estudo nos municípios de Santa Catarina",
     xlab = "Expectativa de Anos de Estudo", ylab="Frequência", 
     xlim = c(6,14), #início e fim do eixo
     breaks= c(7.3,8,8.7,9.4,10.1,10.8,11.5,12.2,12.9), col = c("lightblue"))

7.4.2 Taxa de mortalidade Infantil

hist(DadosIDH$MortInf, 
     main = "Taxa de mortalidade Infantil nos municípios de Santa Catarina",
     xlab = "Taxa de mortalidade Infantil", ylab="Frequência", 
     xlim = c(8,20), breaks= c(8.5,10,11.5,13,14.5,16,17.5,19,20.5), col = c("lightblue"))

7.4.3 Esperança de vida ao nascer - com ggplot

ggplot(DadosIDH[13],aes(x=EspVida))+    
  geom_histogram(position = 'identity',binwidth = 1,alpha = 0.5,fill="blue",color="black")+
  xlab("Esperança de vida ao nascer")+ ylab("Frequência") 

7.4.4 Renda per capita - com ggplot

ggplot(DadosIDH[14],aes(x=Renda))+    
  geom_histogram(position = 'identity',binwidth = 200,alpha = 0.5,fill="blue",color="black")+
  xlab("Renda per capita")+ ylab("Frequência")

7.5 Múltiplos Histogramas

7.5.1 Histogramas mais de uma variável na mesma figura

par(mfrow=c(2,2)) # permite imprimir vários gráficos numa mesma figura 
#par(mfcol=c(3,3))
hist(DadosIDH$AnosEstudo, main = "",
     xlab = "Expectativa de Anos de Estudo", ylab="Frequência", 
     xlim = c(6,14), #início e fim do eixo
     breaks= c(7.3,8,8.7,9.4,10.1,10.8,11.5,12.2,12.9), col = c("lightblue"))
hist(DadosIDH$MortInf, main = "",
     xlab = "Taxa de mortalidade Infantil", ylab="Frequência", 
     xlim = c(8,20), breaks= c(8.5,10,11.5,13,14.5,16,17.5,19,20.5), col = c("lightblue"))
hist(DadosIDH$EspVida, main = "",
     xlab = "Esperança de Vida ao nascer (em anos)", ylab="Frequência", 
     xlim = c(70,80), breaks=c(71,72,73,74,75,76,77,78,79), col = c("lightblue"))
hist(DadosIDH$`Renda`, main = "",
     xlab = "Renda percapita", ylab="Frequência", 
     xlim = c(0,2000), breaks=c(300,500,700,900,1100,1300,1500,1700,1900), col = c("lightblue"))

#dev.off()

7.5.2 Ajuste à distribuição normal e densidades

library(psych)
multi.hist(DadosIDH[11:14],nrow=NULL,ncol=NULL,density=TRUE,freq=FALSE,bcol="white",
           dcol=c("red","blue"),dlty=c("dashed","dotted"),
           main=c("Média de Anos de Estudo","Taxa de mortalidade infantil","Esperança de vida ao nascer","Renda percapita"),
           ylab="Densidade",
           mar=c(6,4,2,1),breaks=7)

7.5.3 Histogramas de uma variável filtrado por grupos

DadosIDH %>%
  filter(Mesorregião=="V. Itajai" |Mesorregião=="Serrana") %>% # filtra no conjunto de dados, os dados de V. Itajaí e Serrana
  ggplot(aes(x=Renda, fill=Mesorregião))+    #fill=Mesorregião Insere cor
  geom_histogram(position = 'identity',binwidth = 100,alpha = 0.5,color="gray")+
  xlab("Renda per capita")+ ylab("Frequência")

DadosIDH %>%
  filter(Mesorregião=="V. Itajai"|Mesorregião=="Serrana"|Mesorregião=="Sul") %>%  #
  ggplot(aes(x=Renda, fill=Mesorregião))+    #fill=Mesorregião Insere cor
  geom_histogram(position = 'identity',binwidth = 100,alpha = 0.5,color="gray")+
  xlab("Renda per capita")+ ylab("Frequência")+
  facet_grid(rows = "Mesorregião")

DadosIDH %>%
  filter(Mesorregião=="V. Itajai" |Mesorregião=="Serrana") %>%
  ggplot(aes(x=Renda, fill=Microrregião))+    #fill=Microrreegião subdivide por cores os municícipos de cada microrregião
  geom_histogram(position = 'identity',binwidth = 100,alpha = 0.5,color="gray")+
  xlab("Renda per capita")+ ylab("Frequência")+
  facet_grid(rows = "Mesorregião")

7.6 Boxplot Simples

7.6.1 Esperança de vida ao nascer

boxplot(DadosIDH$`EspVida`, 
        main="Municípios de Santa Catarina", col="lightblue",
        ylab="Esperança de Vida")

7.6.2 Renda per capita

boxplot(DadosIDH$`Renda`, 
        main="Municípios de Santa Catarina", col="lightblue",
        ylab="Renda per capita")

7.7 Boxplot Grupos

7.7.1 Renda per capita - por grupo

boxplot(DadosIDH$`Renda`~DadosIDH$Mesorregião, col="lightblue",
                boxwex=0.4, xlab="Mesorregião", ylab="Renda per capita")

7.7.2 Com legenda em cores

boxplot(DadosIDH$`Renda`~DadosIDH$Mesorregião, 
        col=(c("lightblue", "lightblue", "gold", "gold", "lightblue", "lightblue")),
        boxwex=0.4, xlab="Mesorregião", ylab="Renda per capita") 
legend("top", #posição
  legend = c("Litoraneas", "Não litoraneas"), 
  col = c("lightblue", "gold"), 
  pch = c(19,19), #formato da legenda
  bty = "n", #caixa em torno da legenda "o" para caixa, "n" para sem caixa
  pt.cex = 2,  #tamanho do símbolo da legenda
  cex = 0.9, #tamanho letra legenda
  text.col = "black", 
  ncol = 2,  #1 se quiser escrever as legendas uma abaixo da outra
  horiz = F, 
  inset = c(0.02, 0.02)) #posição

7.7.3 Grupos ordenados pela mediana

boxplot(DadosIDH$`Renda`~DadosIDH$Mesorregião,
        at=rank(tapply(DadosIDH$`Renda`,DadosIDH$Mesorregião, median)),
        col=(c("lightblue", "lightblue", "gold", "gold", "lightblue", "lightblue")), 
        boxwex=0.4, xlab="Mesorregião", ylab="Renda per capita")
legend("topleft", #posição
  legend = c("Litoraneas", "Não litoraneas"), 
  col = c("lightblue", "gold"), 
  pch = c(19,19), #formato da legenda
  bty = "n", #caixa em torno da legenda "o" para caixa, "n" para sem caixa
  pt.cex = 2,  #tamanho da simbolo da legenda
  cex = 0.9, #tamanho letra
  text.col = "black", 
  ncol = 2,  #1 se quiser escrever as legendas uma abaixo da outra
  horiz = F, 
  inset = c(0.02, 0.02)) #posição

7.8 Bublechat (bolhas)

7.8.1 Esperança de Vida, Renda per capita e População

library(ggplot2)
options(scipen = 999)
ggplot(DadosIDH, aes(x=`Renda`, 
                     y=`EspVida`, 
                     size=`População`, #tamanho da bolha
                     color=Mesorregião)) +
  geom_point(alpha=0.6) + #tranparência
  scale_size(range = c(2, 16), #tamanho bolhas
    name="População") +
  ggtitle("Municípios de Santa Catarina") + 
  xlab("Renda per capita") +
  ylab("Esperança de Vida ao nascer")

7.8.2 Expectativa de Anos de Estudo, Esperança de Vida e Renda per capita

ggplot(DadosIDH, aes(x=`AnosEstudo`, 
                     y=`EspVida`, 
                     size=`Renda`,
                     color=Mesorregião)) +
  geom_point(alpha=0.6) +
  scale_size(range = c(1, 12), name="Renda per capita") +
  ggtitle("Municípios de Santa Catarina") + 
  xlab("Expectativa Anos de Estudo") +
  ylab("Esperança de Vida ao nascer")


O comando options(scipen = 999) evita que os dados sejam apresentados em notação científica.

7.9 QQ plot

8 Correlação linear

8.1 Matriz de correlações

cor(DadosIDH[11:14])
##             AnosEstudo     MortInf     EspVida      Renda
## AnosEstudo  1.00000000 -0.08775916  0.08744352  0.1895137
## MortInf    -0.08775916  1.00000000 -0.99772637 -0.6258257
## EspVida     0.08744352 -0.99772637  1.00000000  0.6314466
## Renda       0.18951368 -0.62582570  0.63144657  1.0000000

8.2 Gráfico das correlações

library(corrplot)
corrplot(cor(DadosIDH[11:14]), method = "circle", type = "lower", diag = TRUE)

corrplot(cor(DadosIDH[11:14]), method = "ellipse",type = "lower", diag = TRUE)

corrplot(cor(DadosIDH[11:14]), method = "number")

8.3 Gráfico das correlações - coeficiente e círculo

M <- cor(DadosIDH[11:14])[1:4,1:4]
colnames(M) <- c("AnosEstudo","MortInf","EspVida","Renda")
corrplot.mixed(M)

8.4 Matriz de correlações e valores de p (significância)

library(Hmisc)
correlacao <- rcorr(as.matrix(DadosIDH[11:14])) #correlações e valores p
correlacao$r
##             AnosEstudo     MortInf     EspVida      Renda
## AnosEstudo  1.00000000 -0.08775916  0.08744352  0.1895137
## MortInf    -0.08775916  1.00000000 -0.99772637 -0.6258257
## EspVida     0.08744352 -0.99772637  1.00000000  0.6314466
## Renda       0.18951368 -0.62582570  0.63144657  1.0000000
correlacao$P
##             AnosEstudo   MortInf   EspVida       Renda
## AnosEstudo          NA 0.1339602 0.1353703 0.001115402
## MortInf    0.133960193        NA 0.0000000 0.000000000
## EspVida    0.135370337 0.0000000        NA 0.000000000
## Renda      0.001115402 0.0000000 0.0000000          NA

8.5 Gráfico das correlações - coeficiente e diagrama de dispersão

library(PerformanceAnalytics)
chart.Correlation(DadosIDH[11:14], histogram = FALSE)