______________________________________________________________________________________________________________________

Resumo

Este relatório apresenta os resultados da análise exploratória dos dados da Pesquisa Origem e Destino (Pesquisa O/D) de 2007 na Região Metropolitana de São Paulo (RMSP); a análise foi realizado com auxílio do software de cálculos estatísticos R Project. A base de dados está disponível no site do Metrô-SP, nos formatos Dbase e SPSS, sendo utilizado neste trabalho a versão no formato do SPSS (.sav). A base possui 196.698 registros de 123 variáveis. Foram realizados analises univariadas, bivariadas e multivariadas na base de dados da pesquisa, de forma a obter informações ocultas em sua estrutura, e descobrir variáveis importantes e suas correlações. Um dos principais achados foi que trabalho e educação são os principais fatores geradores de demanda de viagens na RMSP.

library(ggplot2)
library(haven)
library(ggmap)
library(scales)
library(dplyr)
library(tidyr)
library(gridExtra)
library(GGally)
library(psych)
library(grid)
library(memisc)
library(ggthemes)
library(grid)
library(foreign)
library(RColorBrewer)
library(descr)
library(plyr)
OD_2007_v2d <- read.spss("OD_2007_v2d.sav", to.data.frame = TRUE)

1 Introdução

Segundo METRÔ (2008), a Pesquisa O/D é realizada desde 1967 na RMSP, com periodicidade de dez anos, e tem por objetivo o levantamento de informações atualizadas sobre as viagens realizadas pela população desta região em dia útil típico. Constitui-se no principal instrumento de coleta de informações sobre viagens, servindo de base para os estudos de planejamento de transporte. A pesquisa de 2007 ocorreu no período de agosto a novembro deste ano, e fevereiro a abril de 2008, envolvendo cerca de 370 pesquisadores; foram visitados 54.500 domicílios, resultando em aproximadamente 30.000 domicílios com entrevistas consideradas válidas para a pesquisa; isto nos 39 municípios da RMSP, que foram subdivididos em 460 zonas de pesquisa.
A amostra de 30.000 domicílios permitiu conferir a pesquisa margens de erro inferiores a 5% e nível de confiança de 95%.
Neste ano acontecerá a quinta edição da pesquisa - completando assim 50 anos - que agora abordará 517 zonas de pesquisa e 32 mil domicílios de amostra. (Revista Engenharia, nº 632/2017
A descrição completa de todas as variáveis da pesquisa de 2007 pode ser acessada aqui.

2 Seção de Gráficos Univariados

A base de dados apresenta as seguintes dimensões: (registros - variáveis):

dim(OD_2007_v2d)
## [1] 196698    123

Abaixo tem-se a estrutura destas variáveis:

str(OD_2007_v2d)
## 'data.frame':    196698 obs. of  123 variables:
##  $ zona      : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ muni_dom  : Factor w/ 39 levels "Arujá","Barueri",..: 36 36 36 36 36 36 36 36 36 36 ...
##  $ co_dom_x  : num  333729 333729 333858 333858 333858 ...
##  $ co_dom_y  : num  7394430 7394430 7394484 7394484 7394484 ...
##  $ id_dom    : Factor w/ 29957 levels "0010001","0010018",..: 1 1 2 2 2 3 3 3 3 3 ...
##  $ f_dom     : Factor w/ 2 levels "Demais registros",..: 2 1 2 1 1 2 1 1 1 1 ...
##  $ fe_dom    : num  18 18 17.7 17.7 17.7 ...
##  $ dom       : num  1 1 18 18 18 19 19 19 19 19 ...
##  $ cd_entre  : Factor w/ 2 levels "Completo sem viagem",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ data      : num  1.34e+10 1.34e+10 1.34e+10 1.34e+10 1.34e+10 ...
##  $ tipo_dom  : Factor w/ 3 levels "Particular","Coletivo",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ no_morad  : num  1 1 2 2 2 3 3 3 3 3 ...
##  $ tot_fam   : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ id_fam    : Factor w/ 30855 levels "001000101","001001801",..: 1 1 2 2 2 3 3 3 3 3 ...
##  $ f_fam     : Factor w/ 2 levels "Demais registros",..: 2 1 2 1 1 2 1 1 1 1 ...
##  $ fe_fam    : num  18 18 17.7 17.7 17.7 ...
##  $ familia   : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ no_moraf  : num  1 1 2 2 2 3 3 3 3 3 ...
##  $ condmora  : Factor w/ 5 levels "Alugada","Própria",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ qt_radio  : num  1 1 6 6 6 1 1 1 1 1 ...
##  $ qt_gel1   : num  1 1 0 0 0 1 1 1 1 1 ...
##  $ qt_gel2   : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ qt_tvcor  : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ qt_freez  : num  0 0 1 1 1 0 0 0 0 0 ...
##  $ qt_video  : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ qt_banho  : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ qt_moto   : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ qt_auto   : num  1 1 1 1 1 0 0 0 0 0 ...
##  $ qt_aspir  : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ qt_mlava  : num  0 0 1 1 1 0 0 0 0 0 ...
##  $ qt_empre  : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ qt_micro  : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ qt_bicicle: num  0 0 1 1 1 1 1 1 1 1 ...
##  $ nao_dcl_it: Factor w/ 2 levels "F","T": 2 2 2 2 2 2 2 2 2 2 ...
##  $ criterio_b: Factor w/ 8 levels "A1","A2","B1",..: 5 5 4 4 4 7 7 7 7 7 ...
##  $ ano_auto1 : num  1998 1998 1989 1989 1989 ...
##  $ ano_auto2 : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ano_auto3 : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ renda_fa  : num  850 850 2600 2600 2600 ...
##  $ cd_renfa  : Factor w/ 4 levels "Renda Familiar Declarada e maior que zero",..: 1 1 1 1 1 3 3 3 3 3 ...
##  $ id_pess   : Factor w/ 91405 levels "00100010101 ",..: 1 1 2 2 3 4 4 4 4 5 ...
##  $ f_pess    : Factor w/ 2 levels "Demais registros",..: 2 1 2 1 2 2 1 1 1 2 ...
##  $ fe_pess   : num  21.8 21.8 21.4 21.4 21.4 ...
##  $ pessoa    : num  1 1 1 1 2 1 1 1 1 2 ...
##  $ sit_fam   : Factor w/ 7 levels "Pessoa responsável",..: 1 1 1 1 2 1 1 1 1 2 ...
##  $ idade     : num  29 29 51 51 52 42 42 42 42 40 ...
##  $ sexo      : Factor w/ 2 levels "Masculino","Feminino": 1 1 1 1 2 1 1 1 1 2 ...
##  $ estuda    : Factor w/ 6 levels "Não","Creche / Pré-escola",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ grau_ins  : Factor w/ 5 levels "Não alfabetizado / primário incompleto",..: 4 4 4 4 1 1 1 1 1 1 ...
##  $ cd_ativi  : Factor w/ 8 levels "Tem Trabalho",..: 1 1 1 1 7 1 1 1 1 7 ...
##  $ co_ren_i  : Factor w/ 3 levels "Tem renda","Não tem renda",..: 1 1 1 1 1 3 3 3 3 3 ...
##  $ vl_ren_i  : num  850 850 2000 2000 600 NA NA NA NA NA ...
##  $ zona_esc  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ muniesc   : atomic  NA NA NA NA NA NA NA NA NA NA ...
##   ..- attr(*, "value.labels")= Named chr  "39" "38" "37" "36" ...
##   .. ..- attr(*, "names")= chr  "Vargem Grande Paulista" "Taboão da Serra" "Suzano" "São Paulo" ...
##  $ co_esc_x  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ co_esc_y  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ tipo_esc  : Factor w/ 2 levels "Pública","Particular": NA NA NA NA NA NA NA NA NA NA ...
##  $ zonatra1  : num  3 3 327 327 NA 24 24 24 24 NA ...
##  $ munitra1  : atomic  36 36 13 13 NA 36 36 36 36 NA ...
##   ..- attr(*, "value.labels")= Named chr  "39" "38" "37" "36" ...
##   .. ..- attr(*, "names")= chr  "Vargem Grande Paulista" "Taboão da Serra" "Suzano" "São Paulo" ...
##  $ co_tr1_x  : num  333221 333221 323572 323572 NA ...
##  $ co_tr1_y  : num  7394103 7394103 7418658 7418658 NA ...
##  $ trab1_re  : Factor w/ 3 levels "Sim","Não","Sem enderço fixo": 2 2 2 2 NA 2 2 2 2 NA ...
##  $ trabext1  : Factor w/ 2 levels "Sim","Não": 2 2 2 2 NA 2 2 2 2 NA ...
##  $ ocup1     : num  906 906 803 803 NA 513 513 513 513 NA ...
##  $ setor1    : Factor w/ 14 levels "Agrícola","Construção Civil",..: 12 12 10 10 NA 9 9 9 9 NA ...
##  $ vinc1     : Factor w/ 8 levels "Assalariado com carteira",..: 1 1 1 1 NA 1 1 1 1 NA ...
##  $ zonatra2  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ munitra2  : Factor w/ 39 levels "Arujá","Barueri",..: NA NA NA NA NA NA NA NA NA NA ...
##  $ co_tr2_x  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ co_tr2_y  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ trab2_re  : Factor w/ 3 levels "Sim","Não","Sem enderço fixo": NA NA NA NA NA NA NA NA NA NA ...
##  $ trabext2  : Factor w/ 2 levels "Sim","Não": NA NA NA NA NA NA NA NA NA NA ...
##  $ ocup2     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ setor2    : Factor w/ 14 levels "Agrícola","Construção Civil",..: NA NA NA NA NA NA NA NA NA NA ...
##  $ vinc2     : Factor w/ 8 levels "Assalariado com carteira",..: NA NA NA NA NA NA NA NA NA NA ...
##  $ n_viag    : num  1 2 1 2 NA 1 2 3 4 NA ...
##  $ fe_via    : num  25.3 25.3 20.1 20.1 NA ...
##  $ dia_sem   : atomic  6 6 5 5 NA 5 5 5 5 NA ...
##   ..- attr(*, "value.labels")= Named chr  "6" "5" "4" "3" ...
##   .. ..- attr(*, "names")= chr  "Sexta-feira" "Quinta-feira" "Quarta-feira" "Terça-feira" ...
##  $ tot_viag  : num  2 2 2 2 0 4 4 4 4 0 ...
##  $ zona_o    : num  1 3 1 327 NA 1 24 1 24 NA ...
##  $ muni_o    : Factor w/ 39 levels "Arujá","Barueri",..: 36 36 36 13 NA 36 36 36 36 NA ...
##  $ co_o_x    : num  333729 333221 333858 323572 NA ...
##  $ co_o_y    : num  7394430 7394103 7394484 7418658 NA ...
##  $ zona_d    : num  3 1 327 1 NA 24 1 24 1 NA ...
##  $ muni_d    : Factor w/ 39 levels "Arujá","Barueri",..: 36 36 13 36 NA 36 36 36 36 NA ...
##  $ co_d_x    : num  333221 333729 323572 333858 NA ...
##  $ co_d_y    : num  7394103 7394430 7418658 7394484 NA ...
##  $ zona_t1   : num  NA NA 91 6 NA NA NA NA NA NA ...
##  $ muni_t1   : Factor w/ 39 levels "Arujá","Barueri",..: NA NA 36 36 NA NA NA NA NA NA ...
##  $ co_t1_x   : num  NA NA 330062 333246 NA ...
##  $ co_t1_y   : num  NA NA 7397397 7396047 NA ...
##  $ zona_t2   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ muni_t2   : Factor w/ 39 levels "Arujá","Barueri",..: NA NA NA NA NA NA NA NA NA NA ...
##  $ co_t2_x   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ co_t2_y   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ zona_t3   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ muni_t3   : Factor w/ 39 levels "Arujá","Barueri",..: NA NA NA NA NA NA NA NA NA NA ...
##  $ co_t3_x   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ co_t3_y   : num  NA NA NA NA NA NA NA NA NA NA ...
##   [list output truncated]
##  - attr(*, "variable.labels")= Named chr  "Zona de Domicílio" "Município do Domicílio" "Coordenada X Domicílio" "Coordenada Y Domicílio" ...
##   ..- attr(*, "names")= chr  "zona" "muni_dom" "co_dom_x" "co_dom_y" ...
##  - attr(*, "codepage")= int 1252

Conforme saída do comando acima, as 123 variáveis da base são de um dos 3 tipos a saber: numéricas (num), ex.: zona; Factor, ex.: muni_dom; ou vetores atomic, ex.: muniesc.
Segundo Fávaro et al. (2009) as variáveis podem ser classificadas em: variáveis não métricas (qualitativas, categóricas): permitem apenas a análise de frequências, sem a possibilidade do cálculo de medidas de posição e de dispersão, exceto a moda; e variáveis métricas (quantitativas): são representadas por valores que podem ser tratados com o intuito do cálculo de medidas de posição (ex. média) ou dispersão (ex. desvio padrão). Podem ser discretas (ex. número de filhos) ou contínuas (ex. salário).
Ao contrário das variáveis qualitativas, as métricas suportam um número bem maior de representações gráficas, tais como: gráficos de dispersão, de linha, etc; bem como o cálculo de correlações entre variáveis deste tipo.
Com isto, temos na base em análise variáveis qualitativas, ex.: muni_dom e quantitativas, ex.: zona. Para as variáveis do tipo atomic, é necessário verificar qual o tipo primitivo dos dados do vetor para classificá-lo.
Quais são as variáveis qualitativas (factor)?

Var_quali <- Filter(is.factor, OD_2007_v2d)
names(Var_quali)
##  [1] "muni_dom"   "id_dom"     "f_dom"      "cd_entre"   "tipo_dom"  
##  [6] "id_fam"     "f_fam"      "condmora"   "nao_dcl_it" "criterio_b"
## [11] "cd_renfa"   "id_pess"    "f_pess"     "sit_fam"    "sexo"      
## [16] "estuda"     "grau_ins"   "cd_ativi"   "co_ren_i"   "tipo_esc"  
## [21] "trab1_re"   "trabext1"   "setor1"     "vinc1"      "munitra2"  
## [26] "trab2_re"   "trabext2"   "setor2"     "vinc2"      "muni_o"    
## [31] "muni_d"     "muni_t1"    "muni_t2"    "muni_t3"    "motivo_o"  
## [36] "motivo_d"   "servir_o"   "servir_d"   "modo1"      "modo2"     
## [41] "modo3"      "modo4"      "modoprin"   "tipovg"     "pag_viag"  
## [46] "tp_esauto"  "pe_bici"    "tp_esbici"

Quais são as variáveis numéricas (num)?

Var_num <- Filter(is.numeric, OD_2007_v2d)
names(Var_num)
##  [1] "zona"       "co_dom_x"   "co_dom_y"   "fe_dom"     "dom"       
##  [6] "data"       "no_morad"   "tot_fam"    "fe_fam"     "familia"   
## [11] "no_moraf"   "qt_radio"   "qt_gel1"    "qt_gel2"    "qt_tvcor"  
## [16] "qt_freez"   "qt_video"   "qt_banho"   "qt_moto"    "qt_auto"   
## [21] "qt_aspir"   "qt_mlava"   "qt_empre"   "qt_micro"   "qt_bicicle"
## [26] "ano_auto1"  "ano_auto2"  "ano_auto3"  "renda_fa"   "fe_pess"   
## [31] "pessoa"     "idade"      "vl_ren_i"   "zona_esc"   "muniesc"   
## [36] "co_esc_x"   "co_esc_y"   "zonatra1"   "munitra1"   "co_tr1_x"  
## [41] "co_tr1_y"   "ocup1"      "zonatra2"   "co_tr2_x"   "co_tr2_y"  
## [46] "ocup2"      "n_viag"     "fe_via"     "dia_sem"    "tot_viag"  
## [51] "zona_o"     "co_o_x"     "co_o_y"     "zona_d"     "co_d_x"    
## [56] "co_d_y"     "zona_t1"    "co_t1_x"    "co_t1_y"    "zona_t2"   
## [61] "co_t2_x"    "co_t2_y"    "zona_t3"    "co_t3_x"    "co_t3_y"   
## [66] "h_saida"    "min_saida"  "anda_o"     "h_cheg"     "min_cheg"  
## [71] "anda_d"     "duracao"    "vl_est"     "id_ordem"   "distancia"

Na sequência tem-se um sumário de algumas estatísticas básicas das variáveis numéricas:

summary(Var_num)
##       zona          co_dom_x         co_dom_y           fe_dom        
##  Min.   :  1.0   Min.   :281749   Min.   :7344733   Min.   :   2.549  
##  1st Qu.: 89.0   1st Qu.:326271   1st Qu.:7387965   1st Qu.:  41.732  
##  Median :205.0   Median :332202   Median :7393435   Median :  89.587  
##  Mean   :210.1   Mean   :334720   Mean   :7392526   Mean   : 186.559  
##  3rd Qu.:311.0   3rd Qu.:341135   3rd Qu.:7397372   3rd Qu.: 239.217  
##  Max.   :460.0   Max.   :413791   Max.   :7427007   Max.   :2256.407  
##                                                                       
##       dom              data              no_morad         tot_fam     
##  Min.   :   1.0   Min.   :4.520e+06   Min.   : 1.000   Min.   : 1.00  
##  1st Qu.:  34.0   1st Qu.:1.341e+10   1st Qu.: 3.000   1st Qu.: 1.00  
##  Median : 101.0   Median :1.342e+10   Median : 4.000   Median : 1.00  
##  Mean   : 628.2   Mean   :1.342e+10   Mean   : 3.864   Mean   : 1.07  
##  3rd Qu.:1127.0   3rd Qu.:1.342e+10   3rd Qu.: 5.000   3rd Qu.: 1.00  
##  Max.   :8000.0   Max.   :1.343e+10   Max.   :24.000   Max.   :10.00  
##                   NA's   :175                                         
##      fe_fam            familia          no_moraf         qt_radio    
##  Min.   :   2.549   Min.   : 1.000   Min.   : 1.000   Min.   :0.000  
##  1st Qu.:  41.732   1st Qu.: 1.000   1st Qu.: 3.000   1st Qu.:1.000  
##  Median :  89.587   Median : 1.000   Median : 4.000   Median :1.000  
##  Mean   : 186.559   Mean   : 1.033   Mean   : 3.671   Mean   :1.696  
##  3rd Qu.: 239.217   3rd Qu.: 1.000   3rd Qu.: 4.000   3rd Qu.:2.000  
##  Max.   :2256.407   Max.   :10.000   Max.   :14.000   Max.   :9.000  
##                                                       NA's   :3154   
##     qt_gel1          qt_gel2          qt_tvcor       qt_freez     
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.00   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:1.00   1st Qu.:0.0000  
##  Median :1.0000   Median :0.0000   Median :2.00   Median :0.0000  
##  Mean   :0.5669   Mean   :0.5376   Mean   :2.08   Mean   :0.2253  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:3.00   3rd Qu.:0.0000  
##  Max.   :9.0000   Max.   :8.0000   Max.   :9.00   Max.   :9.0000  
##  NA's   :3154     NA's   :3154     NA's   :3152   NA's   :3146    
##     qt_video        qt_banho        qt_moto          qt_auto      
##  Min.   :0.000   Min.   :0.000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :1.000   Median :2.000   Median :0.0000   Median :1.0000  
##  Mean   :1.203   Mean   :1.899   Mean   :0.0911   Mean   :0.9567  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :9.000   Max.   :9.000   Max.   :9.0000   Max.   :8.0000  
##  NA's   :3154    NA's   :3148    NA's   :3141     NA's   :2986    
##     qt_aspir         qt_mlava         qt_empre         qt_micro     
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.0000   Median :1.0000   Median :0.0000   Median :1.0000  
##  Mean   :0.5109   Mean   :0.8912   Mean   :0.1987   Mean   :0.7827  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :6.0000   Max.   :5.0000   Max.   :7.0000   Max.   :9.0000  
##  NA's   :3154     NA's   :3154     NA's   :3125     NA's   :3154    
##    qt_bicicle       ano_auto1       ano_auto2        ano_auto3     
##  Min.   :0.0000   Min.   :1955    Min.   :1929     Min.   :1941    
##  1st Qu.:0.0000   1st Qu.:1997    1st Qu.:1997     1st Qu.:1996    
##  Median :0.0000   Median :2002    Median :2001     Median :2000    
##  Mean   :0.6288   Mean   :2000    Mean   :1999     Mean   :1998    
##  3rd Qu.:1.0000   3rd Qu.:2006    3rd Qu.:2005     3rd Qu.:2004    
##  Max.   :9.0000   Max.   :2008    Max.   :2008     Max.   :2008    
##  NA's   :3154     NA's   :73349   NA's   :150281   NA's   :184882  
##     renda_fa        fe_pess             pessoa           idade      
##  Min.   :    0   Min.   :   2.924   Min.   : 1.000   Min.   : 1.00  
##  1st Qu.: 1362   1st Qu.:  45.751   1st Qu.: 1.000   1st Qu.:21.00  
##  Median : 2500   Median :  97.983   Median : 2.000   Median :34.00  
##  Mean   : 3729   Mean   : 200.696   Mean   : 2.267   Mean   :36.22  
##  3rd Qu.: 4713   3rd Qu.: 263.526   3rd Qu.: 3.000   3rd Qu.:50.00  
##  Max.   :46000   Max.   :2723.050   Max.   :14.000   Max.   :99.00  
##                                                                     
##     vl_ren_i        zona_esc         muniesc          co_esc_x     
##  Min.   :    0   Min.   :  0.0    Min.   : 1.00    Min.   :281677  
##  1st Qu.:    0   1st Qu.: 81.0    1st Qu.:36.00    1st Qu.:326520  
##  Median :  412   Median :197.0    Median :36.00    Median :332692  
##  Mean   : 1047   Mean   :209.1    Mean   :32.59    Mean   :334879  
##  3rd Qu.: 1200   3rd Qu.:325.0    3rd Qu.:36.00    3rd Qu.:340910  
##  Max.   :40000   Max.   :460.0    Max.   :99.00    Max.   :413944  
##  NA's   :54119   NA's   :140088   NA's   :140088   NA's   :140201  
##     co_esc_y          zonatra1        munitra1        co_tr1_x     
##  Min.   :7345675   Min.   :  0.0   Min.   : 1.0    Min.   :281743  
##  1st Qu.:7388271   1st Qu.: 62.0   1st Qu.:36.0    1st Qu.:327298  
##  Median :7394071   Median :135.0   Median :36.0    Median :331759  
##  Mean   :7392650   Mean   :178.2   Mean   :33.3    Mean   :333450  
##  3rd Qu.:7397252   3rd Qu.:296.0   3rd Qu.:36.0    3rd Qu.:337215  
##  Max.   :7429365   Max.   :460.0   Max.   :99.0    Max.   :414300  
##  NA's   :140201    NA's   :84330   NA's   :84330   NA's   :84771   
##     co_tr1_y           ocup1          zonatra2         co_tr2_x     
##  Min.   :7344733   Min.   :  1.0   Min.   :  0.0    Min.   :289390  
##  1st Qu.:7389059   1st Qu.:507.0   1st Qu.: 61.0    1st Qu.:328182  
##  Median :7393644   Median :706.0   Median :132.0    Median :332053  
##  Mean   :7392735   Mean   :659.8   Mean   :173.3    Mean   :333593  
##  3rd Qu.:7396817   3rd Qu.:903.0   3rd Qu.:283.0    3rd Qu.:337427  
##  Max.   :7429607   Max.   :925.0   Max.   :460.0    Max.   :394538  
##  NA's   :84771     NA's   :84330   NA's   :193095   NA's   :193121  
##     co_tr2_y           ocup2            n_viag           fe_via        
##  Min.   :7351611   Min.   :  1.0    Min.   : 1.000   Min.   :   2.743  
##  1st Qu.:7388468   1st Qu.:507.0    1st Qu.: 1.000   1st Qu.:  51.896  
##  Median :7393105   Median :513.0    Median : 2.000   Median : 111.211  
##  Mean   :7392278   Mean   :628.7    Mean   : 2.131   Mean   : 224.527  
##  3rd Qu.:7396076   3rd Qu.:707.0    3rd Qu.: 2.000   3rd Qu.: 291.584  
##  Max.   :7426840   Max.   :925.0    Max.   :18.000   Max.   :3164.922  
##  NA's   :193121    NA's   :193095   NA's   :27033    NA's   :27033     
##     dia_sem         tot_viag          zona_o          co_o_x      
##  Min.   :0.000   Min.   : 0.000   Min.   :  1.0   Min.   :281677  
##  1st Qu.:3.000   1st Qu.: 2.000   1st Qu.: 73.0   1st Qu.:326946  
##  Median :5.000   Median : 2.000   Median :178.0   Median :332258  
##  Mean   :4.501   Mean   : 2.813   Mean   :195.6   Mean   :334349  
##  3rd Qu.:6.000   3rd Qu.: 4.000   3rd Qu.:306.0   3rd Qu.:339602  
##  Max.   :6.000   Max.   :18.000   Max.   :460.0   Max.   :422922  
##  NA's   :27033                    NA's   :27033   NA's   :27032   
##      co_o_y            zona_d          co_d_x           co_d_y       
##  Min.   :7344733   Min.   :  1.0   Min.   :281677   Min.   :7344733  
##  1st Qu.:7388444   1st Qu.: 73.0   1st Qu.:326952   1st Qu.:7388447  
##  Median :7393612   Median :178.0   Median :332258   Median :7393612  
##  Mean   :7392608   Mean   :195.5   Mean   :334352   Mean   :7392605  
##  3rd Qu.:7397090   3rd Qu.:306.0   3rd Qu.:339600   3rd Qu.:7397088  
##  Max.   :7429607   Max.   :460.0   Max.   :422922   Max.   :7429607  
##  NA's   :27032     NA's   :27033   NA's   :27032    NA's   :27032    
##     zona_t1          co_t1_x          co_t1_y           zona_t2      
##  Min.   :  1.0    Min.   :294065   Min.   :7358038   Min.   :  1.0   
##  1st Qu.: 65.0    1st Qu.:328762   1st Qu.:7389141   1st Qu.: 43.0   
##  Median :151.0    Median :333248   Median :7395071   Median :127.0   
##  Mean   :166.4    Mean   :334928   Mean   :7392992   Mean   :154.1   
##  3rd Qu.:258.0    3rd Qu.:339072   3rd Qu.:7397110   3rd Qu.:257.0   
##  Max.   :459.0    Max.   :393750   Max.   :7424588   Max.   :458.0   
##  NA's   :179317   NA's   :179317   NA's   :179317    NA's   :193051  
##     co_t2_x          co_t2_y           zona_t3          co_t3_x      
##  Min.   :294065   Min.   :7360024   Min.   :  1.0    Min.   :302443  
##  1st Qu.:329939   1st Qu.:7389593   1st Qu.: 81.0    1st Qu.:327114  
##  Median :333273   Median :7395159   Median :193.0    Median :333248  
##  Mean   :335184   Mean   :7393068   Mean   :196.3    Mean   :335953  
##  3rd Qu.:339072   3rd Qu.:7396971   3rd Qu.:291.0    3rd Qu.:344150  
##  Max.   :379225   Max.   :7424588   Max.   :458.0    Max.   :379148  
##  NA's   :193051   NA's   :193051    NA's   :196333   NA's   :196333  
##     co_t3_y           h_saida        min_saida         anda_o      
##  Min.   :7363727   Min.   : 0.00   Min.   : 0.00   Min.   : 0.000  
##  1st Qu.:7388820   1st Qu.: 8.00   1st Qu.: 0.00   1st Qu.: 0.000  
##  Median :7395159   Median :13.00   Median :15.00   Median : 1.000  
##  Mean   :7393268   Mean   :12.98   Mean   :18.27   Mean   : 2.185  
##  3rd Qu.:7397397   3rd Qu.:17.00   3rd Qu.:30.00   3rd Qu.: 2.000  
##  Max.   :7424588   Max.   :23.00   Max.   :59.00   Max.   :60.000  
##  NA's   :196333    NA's   :27033   NA's   :27033   NA's   :27048   
##      h_cheg         min_cheg         anda_d          duracao      
##  Min.   : 0.00   Min.   : 0.00   Min.   : 0.000   Min.   :  1.00  
##  1st Qu.: 9.00   1st Qu.: 5.00   1st Qu.: 0.000   1st Qu.: 14.00  
##  Median :13.00   Median :20.00   Median : 1.000   Median : 25.00  
##  Mean   :13.37   Mean   :22.07   Mean   : 2.145   Mean   : 35.88  
##  3rd Qu.:18.00   3rd Qu.:40.00   3rd Qu.: 2.000   3rd Qu.: 50.00  
##  Max.   :23.00   Max.   :59.00   Max.   :50.000   Max.   :300.00  
##  NA's   :27033   NA's   :27033   NA's   :27048    NA's   :27033   
##      vl_est          id_ordem        distancia       
##  Min.   :  0.00   Min.   :     1   Min.   :    1.28  
##  1st Qu.:  6.00   1st Qu.: 49175   1st Qu.:  845.94  
##  Median : 50.00   Median : 98350   Median : 2590.43  
##  Mean   : 60.57   Mean   : 98350   Mean   : 5229.64  
##  3rd Qu.:100.00   3rd Qu.:147524   3rd Qu.: 6941.57  
##  Max.   :800.00   Max.   :196698   Max.   :84099.56  
##  NA's   :194025                    NA's   :27984

Não necessariamente uma variável numérica é uma variável quantitativa, ex.: a variável “zona” apesar de numérica é uma variável qualitativa, uma vez que cada número de 1 a 460 representa uma zona do domicílio.
Como exemplo de variável quantitativa temos a variável “distancia”, cujo valor mínimo foi 1,28m e máximo pouco mais de 84Km, sendo a média cerca de 5,2Km.
Qual o comportamento da distância percorrida diariamente pelos entrevistados?

ggplot(aes(x = distancia),
       data = OD_2007_v2d) +
       geom_histogram()+
  labs(title = "Fig. 1: Distância total percorrida por dia, em [m]")

A distância parece ser uma variável do tipo “cauda longa”, como em uma distribuição exponencial negativa.
Será que aplicando a função logarítmica poderíamos entender melhor essa variável?

ggplot(OD_2007_v2d, aes(x = distancia)) + 
      geom_histogram() +
      scale_x_log10() +
  labs(title = 
         "Fig. 2: Logaritmo da Distância total percorrida por dia, em [m]")

Com essa transformação, a variável distância parece ser uma distribuição assimétrica negativa, com o pico da ordem de 8Km.
Como é a distribuição das viagens?

ggplot(aes(x = n_viag),
       data = subset(OD_2007_v2d, !is.na(n_viag)))+
  geom_bar()+
  labs(title = "Fig. 3: Número de viagens realizadas por dia")

A grande maioria utiliza uma ou duas viagens diariamente.
Qual a classe social dos respondentes?

ggplot(aes(x = criterio_b),
       data= OD_2007_v2d)+
  geom_bar()+
  labs(title = "Fig. 4: Classe social dos respondentes")

Essa variável parece ter uma distribuição normal, sendo a Classe B2 a moda.
Quais seriam os motivos das viagens?

ggplot(aes(x = motivo_o),
       data = OD_2007_v2d)+
  geom_bar()+
  labs(title = "Fig. 5: Motivos da Viagem")+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.3))

O motivo Trabalho foi desmembrado pelo tipo de atividade econômica (Indústria, Comércio e Serviço), os valores comprovam a força do setor de serviços em São Paulo; um número considerável - da mesma ordem da Educação - não informou o motivo (NA).
Parece que Trabalho e Educação são os principais fatores geradores de demanda de transporte na RMSP.
Na Fig. 2 temos a distância percorrida, mas quanto será os gastos de tempo (duração) nestas viagens?

ggplot(OD_2007_v2d, aes(duracao))+
       geom_freqpoly()+
  scale_x_continuous(limits = c(0,max(OD_2007_v2d$duracao)))+
  labs(title = "Fig. 6: Duração da viagem, em [m]")

A curva é tem um pico (moda da duração) por volta de 20 minutos, depois sempre cai, mas também sempre com um repique (aproximadamente 35, 60, 90, 125, 160), muito interessante esse fenômeno, como explicá-lo?
Qual o modal de transporte utilizado para fazer as viagens?

ggplot(aes(x = modoprin),
       data = OD_2007_v2d)+
  geom_bar()+
  labs(title = "Fig. 7: Principal Modo de Viagem")+
  theme(axis.text.x = element_text(angle = 90, hjust = 0.3))

Os modos principais mais utilizados são: a pé; automóvel; ônibus em várias modalidades, com destaque para os municipais de SP; carona; Metrô e Trem. Também há um grande número que não informaram.
A quantidade de pessoas a pé chama a atenção, havia uma questão interessante no questionário: Por que viajou a pé ou de bike?

ggplot(aes(x = pe_bici),
       data = OD_2007_v2d)+
  geom_bar()+
  labs(title = "Fig. 8: Por que viajou a pé ou de bike")+
  theme(axis.text.x = element_text(angle = 90, hjust = 0.3))

A grande maioria não respondeu (NA), vamos exclui-los para melhorar a visualização.

ggplot(aes(x = pe_bici),
       data = subset(OD_2007_v2d, !is.na(pe_bici)))+
       geom_bar()+
  labs(title = "Fig. 9: Por que viajou a pé ou de bike, sem os NAs")+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.3))

A grande maioria optou por ir a pé devido a pequena distância da viagem.
Como a pesquisa foi distribuída na RMSP em relação as zonas do domicílio, do trabalho e da escola?
Todas as Zonas do domicílio e municípios podem ser acessados aqui.

p1 <- ggplot(OD_2007_v2d, aes(zona))+
       geom_freqpoly()+
  labs(title = "Zonas do Domicílio")

p2 <- ggplot(OD_2007_v2d, aes(zonatra1))+
       geom_freqpoly()+
  labs(title = "Zonas do Primeiro Trabalho")

p3 <- ggplot(OD_2007_v2d, aes(zonatra2))+
       geom_freqpoly()+
  labs(title = "Zonas do Segundo Trabalho")

p4 <- ggplot(OD_2007_v2d, aes(zona_esc))+
      geom_freqpoly()+
  labs(title = "Zonas da Escola")

grid.arrange(p1,p2,p3,p4, ncol = 2,
             top = textGrob("Fig. 10: Amostras por zonas",
                          gp = gpar(fontsize=15,font=8),
                          just = "right"))

As regiões com maior número de amostras por zona do domicílio ocorreu por volta da zona 80 (Jardim Paulistano, Jardim Europa e Pinheiros) e zona 300 (Paraisópolis, Vila Suzana e Parque Arariba), todas na Cidade de São Paulo; já as zonas com menores amostragem foram as imediações da 460 (cidades de: Santana de Parnaíba e Pirapora do Bom Jesus) e 350 (Arujazinho, Arujá e Fazenda Velha), no município de Arujá. Seria interessante ver essas amostras num mapa, seria possível?
A região que mais gera empregos (primeiro trabalho) fica no entorno da zona 80 (Jardim Paulistano, Jardim Europa e Pinheiros); do lado oposto a que gera menos oportunidades é a 350 (Arujazinho, Arujá e Fazenda Velha), no município de Arujá).
O gráfico do Segundo Trabalho é bem parecido com o do Primeiro, contudo, agora tem-se por volta da região 60 até 80 como as que mais geram empregos; do lado oposto continua a região 350.
Com relação a educação, o destaque positivo é para o entorno da região 30 (Masp, Higienópolis e Vila Buarque); já os destaques negativos são as zonas 350 (Arujá), e 450 a 460, envolvendo os municípios de Jandira, Cotia, Vargem Grande Paulista, Itapevi, Santana do Parnaíba e Pirapora do Bom Jesus. Especialmente com relação a geração de oportunidades de trabalho, é possível notar um grande desequilíbrio tendendo favoravelmente para as zonas entre 70 e 90; para a educação isso também acontece, contudo, a predominância não é tão grande. Conforme a Fig. 5, trabalho e educação são os principais motivos de viagens, assim, é de se esperar que as zonas no entorno da 80 (Clínicas, Oscar Freire, Trianon, Jardim Paulistano, Jardim Europa, Pinheiros, Vila Madalena, PUC, Cardoso de Almeida, Zequinha de Abreu) sejam as que mais demandam viagens.

Para entender melhor como os principais fatores geradores de demanda de viagens (trabalho e educação) se comportam nas 460 zonas do domicílio foram selecionadas inicialmente 9 variáveis, sendo elas:

OD_subset <- subset(OD_2007_v2d, select = c(zona, zona_esc, zonatra1,
                                            zonatra2, n_viag,
                                            duracao, modoprin,
                                            distancia, criterio_b))
names(OD_subset)
## [1] "zona"       "zona_esc"   "zonatra1"   "zonatra2"   "n_viag"    
## [6] "duracao"    "modoprin"   "distancia"  "criterio_b"

Lembrando que a descrição completa de todas as variáveis pode ser acessada aqui.
Com isto, podemos classificar as 9 variáveis selecionadas, sendo as qualitativas:

OD_subset_NMetrica <- subset(OD_2007_v2d, select = c(zona, zona_esc, zonatra1,
                                                     zonatra2, modoprin,
                                                     criterio_b))
names(OD_subset_NMetrica)
## [1] "zona"       "zona_esc"   "zonatra1"   "zonatra2"   "modoprin"  
## [6] "criterio_b"

E as quantitativas:

OD_subset_Metrica <- subset(OD_2007_v2d, select = c(n_viag,
                                                    duracao, distancia))
names(OD_subset_Metrica)
## [1] "n_viag"    "duracao"   "distancia"

Conforme abordado anteriormente, para as variáveis não métricas só é possível determinar a sua moda. Abaixo tem-se as frequências ordenadas na ordem decrescente - apresentando as 3 primeiras e as 3 últimas - sendo, a primeira - isto é, a maior de frequência a moda da variável.
Para a variável zona:

Freq_zona <- as.data.frame(table(OD_subset_NMetrica$zona))
names(Freq_zona) <- c("zona", "Freq")
moda_zona <- subset(Freq_zona$zona, Freq_zona$Freq == max(Freq_zona$Freq))
moda_zona <- arrange(Freq_zona, desc(Freq), zona)
head(moda_zona, 3)
##   zona Freq
## 1   95 1559
## 2   33 1336
## 3   63 1280
tail(moda_zona, 3)
##     zona Freq
## 421  413  220
## 422  278  192
## 423  450  187

Portando, para a variável “zona”, a moda é a zona de número 95 (Alto de Pinheiros) com 1559 registros; já a zona 450 (Ribeirão das Pombas) obteve o menor número de registros, sendo 187.
Para a variável zona escolar(zona_esc):

Freq_zona_esc <- as.data.frame(table(OD_subset_NMetrica$zona_esc))
names(Freq_zona_esc) <- c("zona_esc", "Freq")
moda_zona_esc <- subset(Freq_zona_esc$Zona_esc,
                        Freq_zona_esc$Freq == max(Freq_zona_esc$Freq))
moda_zona_esc <- arrange(Freq_zona_esc, desc(Freq), zona_esc)
head(moda_zona_esc, 3)
##   zona_esc Freq
## 1       31 1151
## 2      317 1128
## 3       92  727
tail(moda_zona_esc, 3)
##     zona_esc Freq
## 436      417    2
## 437      105    1
## 438      343    1

Portando, para a variável zona escolar, a moda é a zona de número 31 (Vila Buarque) com 1151 registros.
Para a variável zona de trabalho 1(zonatra1):

Freq_zonatra1 <- as.data.frame(table(OD_subset_NMetrica$zonatra1))
names(Freq_zonatra1) <- c("zonatra1", "Freq")
moda_zonatra1 <- subset(Freq_zonatra1$zonatra1,
                        Freq_zonatra1$Freq == max(Freq_zonatra1$Freq))
moda_zonatra1 <- arrange(Freq_zonatra1, desc(Freq), zonatra1)
head(moda_zonatra1,3)
##   zonatra1 Freq
## 1        5 1768
## 2        1 1714
## 3       67 1584
tail(moda_zonatra1,3)
##     zonatra1 Freq
## 447      321    2
## 448      323    2
## 449      422    2

Portando, para a variável zona de trabalho 1, a moda é a zona de número 5 (República) com 1768 registros.
Para a variável zona de trabalho 2 (zonatra2):

Freq_zonatra2 <- as.data.frame(table(OD_subset_NMetrica$zonatra2))
names(Freq_zonatra2) <- c("zonatra2", "Freq")
moda_zonatra2 <- subset(Freq_zonatra2$zonatra2,
                        Freq_zonatra2$Freq == max(Freq_zonatra2$Freq))
moda_zonatra2 <- arrange(Freq_zonatra2, desc(Freq), zonatra2)
head(moda_zonatra2,3)
##   zonatra2 Freq
## 1       76   54
## 2       54   52
## 3      383   51
tail(moda_zonatra2,3)
##     zonatra2 Freq
## 314      378    1
## 315      423    1
## 316      455    1

Portando, para a variável zona de trabalho 2, a moda é a zona de número 76 (Clínicas) com 54 registros.
Para a variável modo principal (modoprin):

Freq_modoprin <- as.data.frame(table(OD_subset_NMetrica$modoprin))
names(Freq_modoprin) <- c("modoprin", "Freq")
moda_modoprin <- subset(Freq_modoprin$modoprin,
                        Freq_modoprin$Freq == max(Freq_modoprin$Freq))
arrange(Freq_modoprin, desc(Freq), modoprin)
##                                     modoprin  Freq
## 1                                       A pé 49715
## 2                        Dirigindo Automóvel 44584
## 3           Ônibus do Municipio de São Paulo 21943
## 4                    Passageiro de Automóvel 16804
## 5                                      Metrô 12753
## 6                                    Escolar  5098
## 7                   Ônibus outros municípios  4730
## 8                       Ônibus Metropolitano  2645
## 9                                       Moto  2582
## 10                                      Trem  2471
## 11 Microônibus/van do Município de São Paulo  1865
## 12                            Ônibus Fretado  1484
## 13                                 Bicicleta  1354
## 14                                      Táxi  1149
## 15          Microônibus de outros municípios   207
## 16                                    Outros   196
## 17             Microônibus/van metropolitano    85

Portando, para a variável “modoprin”, a moda é o modal de transporte “A pé” com 49715 registros.
Para a variável Critério de Classificação Econômica Brasil (criterio_b):

Freq_criterio_b <- as.data.frame(table(OD_subset_NMetrica$criterio_b))
names(Freq_criterio_b) <- c("criterio_b", "Freq")
moda_criterio_b <- subset(Freq_criterio_b$mcriterio_b,
                          Freq_criterio_b$Freq == max(Freq_criterio_b$Freq))
arrange(Freq_criterio_b, desc(Freq), criterio_b)
##   criterio_b  Freq
## 1         B2 46313
## 2         C1 43647
## 3         B1 33217
## 4         C2 28110
## 5         A2 24475
## 6          D 12854
## 7         A1  7044
## 8          E  1038

Portando, para a variável criterio_b, a moda é a classe social B2 com 46313 registros.
Já para as variáveis métricas podemos calcular várias outras estatísticas, tais como:

describe(OD_subset_Metrica)
##           vars      n    mean      sd  median trimmed     mad  min
## n_viag       1 169665    2.13    1.40    2.00    1.88    1.48 1.00
## duracao      2 169665   35.88   33.33   25.00   29.95   22.24 1.00
## distancia    3 168714 5229.64 6740.01 2590.43 3834.11 3108.44 1.28
##                max    range skew kurtosis    se
## n_viag       18.00    17.00 2.27     8.44  0.00
## duracao     300.00   299.00 1.93     4.67  0.08
## distancia 84099.56 84098.28 2.54     9.19 16.41

E ainda verificar suas correlações, conforme abaixo:

corr.test(OD_subset_Metrica, use = "pairwise.complete.obs")
## Call:corr.test(x = OD_subset_Metrica, use = "pairwise.complete.obs")
## Correlation matrix 
##           n_viag duracao distancia
## n_viag      1.00   -0.12     -0.10
## duracao    -0.12    1.00      0.65
## distancia  -0.10    0.65      1.00
## Sample Size 
##           n_viag duracao distancia
## n_viag    169665  169665    168713
## duracao   169665  169665    168713
## distancia 168713  168713    168714
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##           n_viag duracao distancia
## n_viag         0       0         0
## duracao        0       0         0
## distancia      0       0         0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option

Conforme saída acima, a correlação mais significante é entre as variáveis “duração” e “distancia”, com valor de 0,65.

2.1 Análise Univariada

2.1.1 Qual é a estrutura do conjunto de dados?

A base possui 196.698 registros de 123 variáveis socioeconômicas de moradores da RMSP, sendo que uma descrição completa de todas elas pode ser acessada aqui.
Os principais motivos das viagens são o trabalho ou a educação, sendo os principais modais das viagens o a pé, automóvel, ônibus, metrô e trem, nesta ordem.
Notou-se um grande desequilíbrio na oferta de oportunidades de trabalho e educação, sendo a região no entorno da zona 80 o destaque positivo.

2.1.2 Quais são os principais atributos de interesse deste conjunto de dados?

Como trabalho e educação parecem ser os principais fatores geradores de demanda de viagens, quero entender melhor como essas variáveis se comportam nas 460 zonas do domicílio

2.1.3 Quais outros atributos você acha que podem lhe auxiliar na investigação destes atributos de interesse?

As distâncias, tempo e número de viagens realizadas, bem como a categorização social dos passageiros.

2.1.4 Você criou variáveis a partir dos atributos existentes no conjunto de dados?

Não.

2.1.5 Dos atributos investigados, distribuições incomuns foram encontradas? Você aplicou operações nos dados para limpá-los, ajustá-los ou mudar a forma dos dados? Se sim, por quê?

Sim, por exemplo, foi verificado que a variável “distancia” possuía cauda longa, com isso, foi realizado transformação logarítmica no eixo x para melhorar a sua visualização.

3 Seção de Gráficos Bivariados

Como as classes sociais estão distribuídas nas zonas tráfego?

ggplot(data = OD_2007_v2d, aes(x = zona))+
  geom_density(aes(fill = criterio_b), position = "stack")+
  labs(title = "Fig. 11: KDE zona de domicílio por classe social")

Conforme ilustrado no gráfico de KDE - kernel density estimate acima, as classes mais abastadas (A1 e A2) possuem picos bem caracterizados ao redor das zonas 75 e 290.
Como as classes sociais estão distribuídas nas zonas escolares?

ggplot(data = OD_2007_v2d, aes(x = zona_esc))+
  geom_density(aes(fill = criterio_b), position = "stack")+
  labs(title = "Fig. 12: KDE zona escolar por classe social")

Novamente nota-se o desequilíbrio do lado esquerdo do gráfico, com pico no entorno da zona 45; e ainda mais 3 picos menos nos entornos das zonas 175, 300 e 380.
Como as classes sociais estão distribuídas nas zonas de trabalho?

ggplot(data = OD_2007_v2d, aes(x = zonatra1))+
  geom_density(aes(fill = criterio_b), position = "stack")+
  labs(title = "Fig. 13: KDE zona de trabalho por classe social")

Gráfico bastante parecido com o da Fig. 11 - KDE da zona de domicílio por classe social.
Como é o deslocamento das pessoas para trabalhar?

ggplot(aes(x = zona, y = zonatra1), data = OD_2007_v2d) +
  geom_point()+
  labs(title =
         "Fig. 14: Diagramas de dispersão zona domicílio x zona de trabalho")

A visualização não está muito boa, vamos tentar melhorá-la aplicando um alpha = 1/10.

ggplot(aes(x = zona, y = zonatra1), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/10)+
  geom_smooth(method ='lm', color ='red')+
  geom_abline(xintercept = 460, yintercept = 460, color ='green',size = 1)+
  labs(title =
         "Fig. 15: Diag. disper. zonas do domicílio x de trabalho c/ filtro")

A curva verde seria o ideal, todos trabalhando na mesma zona de domicílio, minimizando a necessidade de transporte (viagens). A curva vermelha é um modelo linear que representa o fenômeno.
Como é o descolamento das pessoas para trabalhar, agora em função da classe social?

ggplot(aes(x = zona, y = zonatra1), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/5)+
  facet_wrap(~ criterio_b)+
  geom_abline(xintercept = 460, yintercept = 460, color ='green', size = 1)+
  geom_smooth(method ='lm', color ='red')+
  labs(title=
         "Fig. 16: Diagr. de dispersão zona x zona de trab. por classe social")

Observando o desalinhamento das curvas (verde e vermelha) quanto maior a classe social, estas estão mais desalinhadas, o que indica que as classes mais abastadas se deslocam mais de zonas para trabalhar. Isto parece ir contra ao senso comum, necessário mais investigações.
Como é o descolamento das pessoas para estudar?

ggplot(aes(x = zona, y = zona_esc), data = OD_2007_v2d) +
  geom_point()+
  labs(title = "Fig. 17: Diagramas de dispersão zona x zona de escolar")

É possível verificar neste gráfico uma concentração de pontos formando uma reta a 45º, seria a curva ideal. Vamos plotar a curva ideal, o modelo de regressão e incluir o grau de instrução (“estuda”) para tentar melhorar a visualização.

ggplot(aes(x = zona, y = zona_esc), data = OD_2007_v2d) +
  geom_jitter(aes(color = estuda))+
  geom_smooth(method ='lm', color ='red')+
  geom_abline(xintercept = 460, yintercept = 460, color ='pink', size = 1)+
  labs(title =
 "Fig. 18: Diag. de dispersão zona x zona de trab.por classe social com filtro")

Comparado com a Fig. 15, que trata da variável zona de trabalho, para estudar observa-se um desequilíbrio menor em relação aos deslocamentos necessários. Contudo, observa-se no entorno da curva ideal as escolaridades mais baixas, já o 3ºgrau/Superior está mais afastado do ideal, isto é, este grupo se desloca mais para estudar. Vamos observar as curvas de dispersão para trabalhar e para estudar lado a lado.

p1 <- ggplot(aes(x = zona, y = zonatra1), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/10)+
  geom_smooth(method ='lm', color ='red')+
  geom_abline(xintercept = 460, yintercept = 460, color ='green',size = 1)

p2 <- ggplot(aes(x = zona, y = zona_esc), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/10)+
  geom_smooth(method ='lm', color ='red')+
  geom_abline(xintercept = 460, yintercept = 460, color ='green',size = 1)

grid.arrange(p1, p2, ncol=2,
             top=textGrob("Fig. 19: Diag. de dispersão Zonas Trab. e Escola",
                          gp = gpar(fontsize = 15,font = 8), just = "center"))

Fica evidente o desalinhamento maior para a variável zona de trabalho “zonatra1”.
Como é o descolamento das pessoas para estudar, agora em função da classe social?

ggplot(aes(x = zona, y = zona_esc), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/5)+
  facet_wrap(~ criterio_b)+
  geom_abline(xintercept = 460, yintercept = 460, color ='green',size = 1)+
  geom_smooth(method ='lm', color ='red')+
  labs(title =
         "Fig. 20: Diag. de dispersão zona x zona de escolar por classe social")

Interessante, o desvio (curva vermelha) em relação ao ideal (curva verde) é menor para variável “zona_esc” do que para a variável “zonatra1” - Fig. 16, isto principalmente para as classes sociais mais baixas. Quer dizer, as classes sociais menos favorecidas se deslocam menos para estudar. Como explicar isso?
Apesar de não termos escolhido a variável “estuda” na fase de análise univariada, vamos observá-la agora para tentar entender o achado acima.
Como as classes sociais estudam?

ggplot(data = subset(OD_2007_v2d, OD_2007_v2d$estuda !="Não") , aes(estuda))+
  geom_bar()+
  facet_wrap(~ criterio_b, scales = "free")+
  theme(axis.text.x = element_text(angle = 15, hjust = 0.3))+
  labs(title = "Fig. 21: Histograma Estudo por classe social")

Para as classes mais altas (A1, A2 e B1) a moda é 3º grau/Superior; já para as demais a moda é 1º grau/Fundamental. Aparentemente isso explica na Fig. 20 que quanto menor a classe social menos os moradores precisam sair da sua zona de domicílio para estudar; acontece que nestas classes a escola é predominantemente (moda) o 1º grau/Fundamental que normalmente fica no próprio bairro; já as classes mais rica a moda da escola é 3º grau/Superior que costumam ser mais afastadas.
Com relação aos modais, como cada uma das zonas os utilizam?

ggplot(data = subset(OD_2007_v2d, !is.na(modoprin)), aes(x = zona))+
  geom_histogram()+
  facet_wrap(~ modoprin, scales = "free")+
  labs(title = "Fig. 22: zona por modal de transporte")+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.3))

Interessante notar: i) a utilização do Metrô mais distribuída na cidade de São Paulo e o Trem na Região Metropolitana; ii) O Táxi na região de maior poder aquisitivo, bem como o automóvel, contudo este tem outro pico por volta da zona 300; e iii) Os dois picos de Bicicleta.
Podemos ver isso em detalhes, por exemplo, para a zona 1?

detach("package:plyr", unload = TRUE) 
OD_2007_v2d %>% group_by(zona, modoprin) %>%
  summarise(total_zona = n())
## Source: local data frame [4,994 x 3]
## Groups: zona [?]
## 
##     zona                         modoprin total_zona
##    <dbl>                           <fctr>      <int>
## 1      1 Ônibus do Municipio de São Paulo         50
## 2      1         Ônibus outros municípios          1
## 3      1                   Ônibus Fretado          1
## 4      1                          Escolar          6
## 5      1              Dirigindo Automóvel         16
## 6      1          Passageiro de Automóvel         11
## 7      1                             Táxi          2
## 8      1                            Metrô         51
## 9      1                        Bicicleta          4
## 10     1                             A pé        117
## # ... with 4,984 more rows

Desconsiderando o modo “a p锓, a zona 1 utiliza predominantemente os modais Metrô (51) e Ônibus Mun. SP (50).
Quais os valores máximos e mínimos para os modais?

a <- table(OD_2007_v2d$zona, OD_2007_v2d$modoprin)
apply(a, 2, max)
##          Ônibus do Municipio de São Paulo 
##                                       169 
##                  Ônibus outros municípios 
##                                       172 
##                      Ônibus Metropolitano 
##                                        66 
##                            Ônibus Fretado 
##                                        24 
##                                   Escolar 
##                                       108 
##                       Dirigindo Automóvel 
##                                       797 
##                   Passageiro de Automóvel 
##                                       258 
##                                      Táxi 
##                                        43 
## Microônibus/van do Município de São Paulo 
##                                        39 
##          Microônibus de outros municípios 
##                                        22 
##             Microônibus/van metropolitano 
##                                        12 
##                                     Metrô 
##                                       148 
##                                      Trem 
##                                        58 
##                                      Moto 
##                                        31 
##                                 Bicicleta 
##                                        47 
##                                      A pé 
##                                       380 
##                                    Outros 
##                                        10

O valor máximo obtido para o modal Automóvel foi 797.

apply(a, 2, min)
##          Ônibus do Municipio de São Paulo 
##                                         0 
##                  Ônibus outros municípios 
##                                         0 
##                      Ônibus Metropolitano 
##                                         0 
##                            Ônibus Fretado 
##                                         0 
##                                   Escolar 
##                                         0 
##                       Dirigindo Automóvel 
##                                         5 
##                   Passageiro de Automóvel 
##                                         1 
##                                      Táxi 
##                                         0 
## Microônibus/van do Município de São Paulo 
##                                         0 
##          Microônibus de outros municípios 
##                                         0 
##             Microônibus/van metropolitano 
##                                         0 
##                                     Metrô 
##                                         0 
##                                      Trem 
##                                         0 
##                                      Moto 
##                                         0 
##                                 Bicicleta 
##                                         0 
##                                      A pé 
##                                         5 
##                                    Outros 
##                                         0

Já o mínimo foi 5.
A que zonas pertencem esses valores?

b.data <- data.frame(a)
Zmax_carro <- b.data$Var1[b.data$Freq == 797 & 
                            b.data$Var2 == "Dirigindo Automóvel"]
Zmax_carro
## [1] 95
## 423 Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 460

A zona 95(Alto de Pinheiros) foi a zona que mais utilizou automóvel.

Zmin_carro <- b.data$Var1[b.data$Freq == 5 & 
                            b.data$Var2 == "Dirigindo Automóvel"]
Zmin_carro
## [1] 3
## 423 Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 460

A Zona 3 (Praça João Mendes) foi a zona que menos utilizou automóvel.
Vamos agora explorar as variáveis métricas.

pairs.panels(OD_subset_Metrica, main = "Fig. 23: Variáveis métricas")

Conforme Fig. 23, das três variáveis quantitativas escolhidas, somente há correlação considerável entre as variáveis “duracao” e “distancia”, sendo esta igual a 0,65.
Como será as distâncias em cada uma das classes sociais?

ggplot(OD_2007_v2d) +
  geom_boxplot(aes(x = criterio_b, y = distancia, fill = criterio_b))+
  labs(title=
         "Fig. 24: Dist. total percorrida por dia, em [m], por classe social")

As classes C1 até E possuem outliers mais afastados; sendo que as classes C1 e D possuem os respondentes que percorrem mais de 80Km por dia.
As classes menos abastadas (C1 ~ E) possuem mediana menor que as mais afortunadas, isso parece ir de encontro com o senso comum!
Como a duração se relaciona com a distância?

ggplot(aes(x = duracao, y = log(distancia)), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/20)+
  geom_smooth(method = 'auto', color = 'red')+
  labs(title = "Fig. 25: Diagramas de dispersão duração x distância")

Foi aplicado transformação logarítmica no eixo y, com isto, a relação entre essas variáveis parece respeitar uma relação logarítmica.
Como seria está equação?
- Variável independente (explicativa) é a duração ;
- Variável dependente é a distância.
Aplicando um modelo de regressão linear:

modelo_dur_dis <- lm(duracao ~ log(distancia), data = OD_2007_v2d)
summary(modelo_dur_dis)
## 
## Call:
## lm(formula = duracao ~ log(distancia), data = OD_2007_v2d)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -78.727 -16.049  -3.943   9.528 246.174 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -78.47568    0.34915  -224.8   <2e-16 ***
## log(distancia)  14.76847    0.04431   333.3   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 25.89 on 168711 degrees of freedom
##   (27985 observations deleted due to missingness)
## Multiple R-squared:  0.3971, Adjusted R-squared:  0.3971 
## F-statistic: 1.111e+05 on 1 and 168711 DF,  p-value: < 2.2e-16

Conforme saída acima (Multiple R-squared: 0.3971), apenas 39,7% da variação da duração pode ser explicada pelo logarítmico da distância.

3.1 Análise Bivariada

3.1.1 Discuta sobre alguns dos relacionamentos observados nesta parte da investigação. Como os atributos de interesse variaram no conjunto de dados?

Para todas as 6 variáveis qualitativas de interesse foi determinado sua moda, sendo a zona do domicílio com maior número de amostras o Alto de Pinheiros (95); das amostras pesquisadas que estudam a maior parte o fez na Vila Buarque (31); dos que trabalham em um só emprego a maioria acontece na República (5); a classe social da maioria é a B2; sendo o automóvel o principal meio de transporte.
O diagrama de dispersão entre as zonas do domicílio (onde os entrevistados vivem) e as zonas de trabalho evidenciam um desequilíbrio, o que faz com que as pessoas tenham que deixar suas regiões para trabalharem em outras, gerando assim necessidade de viagens. O mesmo diagrama, mas agora em relação a zona de estudo, também evidencia um desiquilíbrio, mas em uma amplitude menor.
Foi possível identificar quais os modais de transporte cada uma das zonas utilizam, propiciando achados tais como os padrões de utilização do automóvel, táxi e bicicleta.
O modelo de regressão linear utilizado apresentou r² = 39,7% , isto é, 39,7% da variação duração pode ser explicada pelo logarítmico da variável distância.

3.1.2 Você observou algum relacionamento interessante entre os outros atributos (os que não são de interesse)?

Sim , a variável “estuda” foi utilizada para tentar entender porque as classes mais altas (A1, A2 e B1) se deslocam mais para estudas dos que as classes mais baixas. Para as classes mais altas a moda é 3º grau/Superior, enquanto para as demais a moda é 1º grau/Fundamental. Considerando que normalmente as escolas do 1º grau/Fundamental ficam no próprio bairro, isso pode explicar na Fig. 20: quanto menor a classe social menos os moradores precisam sair da sua zona para estudar.

3.1.3 Qual foi o relacionamento mais forte encontrado?

Para as 3 variáveis quantitativas estudas, as únicas que apresentaram correção considerável foram “duracao” e “distancia”, sendo essa correção classificada como moderada (0,65).

4 Seção de Gráficos Multivariados

Quero ver as variáveis duração x distância em função da classe social.

ggplot(aes(x = duracao, y = distancia), data = OD_2007_v2d) +
  geom_point(aes(color = criterio_b))+
  scale_color_brewer(type = 'qual')+
  scale_y_log10()+
  labs(title = "Fig. 26: Duração x Distância, por classe social")

Conforme já observado na Fig. 25, está relação parece com uma curva logarítmica.
Vamos tentar melhorar a visualização separando por classe social e modal de transporte.

ggplot(aes(x = duracao, y = distancia), data = OD_2007_v2d) +
  geom_point(aes(color = modoprin))+
  scale_fill_manual(values = getPalette(colourCount))+
  facet_wrap(~criterio_b)+
  scale_y_log10()+
  labs(title = "Fig. 27: Duração x Distância, por modal")

A forma da curva (logarítmica) parece ser similar para todas as classes sociais; contudo, é nítido a maior utilização do modal automóvel nas 3 classes mais altas.
E se invertermos a ordem, filtrando por modal e classe social?

ggplot(aes(x = duracao, y = distancia), data = OD_2007_v2d) +
  geom_point(aes(color = criterio_b))+
  scale_color_brewer(type = 'qual')+
  facet_wrap(~modoprin)+
  labs(title =
         "Fig. 28: Duração x Distância, por classe social e modal de transp.")

Estranho para o modal “a pé”, os dois pontos da classe D de 80Km.
Vamos verificar com relação a velocidade (distância/duração).

ggplot(aes(x = zona, y = (distancia/1000)/(duracao/60)), data = OD_2007_v2d) +
  geom_point(aes(color = criterio_b))+
  scale_y_continuous(limits = c(0,120), breaks = seq(0, 120, 25))+
  facet_wrap(~ modoprin)+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.1))+
  labs(title =
    "Fig. 29: Zona x velocidade[Km/h], por classe social e modal de transp.")

Como no eixo y temos a razão de duas variáveis “distancia” e “duracao”, essas foram transformadas para obtenção da velocidades em Km/h. Observa-se que para o automóvel, tanto dirigindo como passageiro, uma alta velocidade. O modo a pé também se destaca, mas lembrando que os próprios respondentes afirmaram que utilizam esse modal para pequenas distâncias. Estranho a velocidade do Táxi, esperaria algo parecido com o automóvel.
Aplicando um modelo regressão não linear para as variáveis quantitativas “duracao” e“distancia”.

modelo_dur_dis_nl <- nls(duracao ~ SSlogis(distancia,
                                           Asym, xmid, scal),
                         data = OD_2007_v2d)
summary(modelo_dur_dis_nl)
## 
## Formula: duracao ~ SSlogis(distancia, Asym, xmid, scal)
## 
## Parameters:
##       Estimate Std. Error t value Pr(>|t|)    
## Asym   89.3375     0.2478   360.6   <2e-16 ***
## xmid 6291.8580    34.5669   182.0   <2e-16 ***
## scal 4103.6530    23.6117   173.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 24.36 on 168710 degrees of freedom
## 
## Number of iterations to convergence: 5 
## Achieved convergence tolerance: 6.578e-06
##   (27985 observations deleted due to missingness)

Conforme saída, esse modelo apresentou um erro residual padrão (Residual standard error) de 24.36.

4.1 Análise Multivariada

4.1.1 Discuta sobre os relacionamentos observados nesta parte da investigação. Quais atributos que fortaleceram os demais na observação das variáveis de interesse?

Apesar da forma da curva das classes sociais serem parecidas no gráfico de “duracao” x “distancia” por modal (Fig. 27), fica evidente uma maciça utilização do automóvel nas 3 classes sociais mais altas.

4.1.2 Interações surpreendentes e/ou interessantes foram encontradas entre os atributos?

Sim, na Fig. 28, para o modal “a pé”, os pontos da ordem de 80Km, me pareceram estranhos.

4.1.3 OPCIONAL: Modelos foram criados usando este conjunto de dados? Discuta sobre os pontos fortes e as limitações do seu modelo.

Sim, foi proposto um modelo não linear utilizando a função logística, conforme Pérez, (2016).

5 Gráficos Finais e Sumário

5.1 Primeiro Gráfico

ClasseSocial <- OD_2007_v2d$criterio_b
ggplot(data = OD_2007_v2d, aes(x = zonatra1))+
  geom_density(aes(fill = ClasseSocial), position = "stack")+
  labs(y = "Densidade", x = "Zona de Trabalho")+
  ggtitle("KDE da Zona de Trabalho por Classe Social")+
  scale_y_continuous(breaks = seq(0, 0.04, 0.002))+
  scale_x_continuous(breaks = seq(0, 460, 20))+
  theme(plot.title = element_text(family = "calibri", color ="#346332",
                                  face = "bold", size = 14, hjust = 0.5)) +
  theme(axis.title = element_text(family = "calibri", color = "#346332",
                                  face = "bold", size = 16)) +
  theme(axis.title.y = element_text(angle = 90, hjust = 0.5))+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.5))+
  theme(axis.text.y = element_text(angle = 30, hjust = 0.5))

5.1.1 Descrição do Primeiro Gráfico

Esse gráfico explicita o desequilibrio na oferta de oportunidades de trabalho na RMSP, que está fortemente concentrado entre as zonas de trabalho de 20 a 100.
Vamos calcular o percentual de empregos nestas zonas:

library(plyr)
freq_zonatra1 <- data.frame(count(OD_2007_v2d$zonatra1))
freq_total_zonatra1 <- sum(freq_zonatra1$freq[2:449])
freq_zonatra1_20_100 <- sum(freq_zonatra1$freq[21:101])
Percent_zonatra1_20_100 = (freq_zonatra1_20_100 / freq_total_zonatra1) * 100
Percent_zonatra1_20_100
## [1] 34.10973

Isto é, as zonas de trabalho 20 a 100, que correspondem a 17,38% das 460 zonas de trabalho, concentram 34,11% das ofertas de emprego na RMSP.
Para uma análise mais apurada, seria intessante levantar qual a população total em cada uma das zonas e verificar quanto da população total representam essas zonas. Contudo, a concentração é evidente, agora quais os efeitos essa concentração provoca?

5.2 Segundo Gráfico

ggplot(aes(x = zona, y = zonatra1), data = OD_2007_v2d) +
  geom_jitter(alpha = 1/10)+
  labs(y = "Zona de Trabalho", x = "Zona do Domicílio")+
  scale_y_continuous(breaks = seq(0, 460, 20))+
  scale_x_continuous(breaks = seq(0, 460, 20))+
  geom_smooth(method = 'lm', color = 'red')+
  geom_smooth(method = "auto", se = TRUE, fullrange = FALSE, level = 0.95)+
  geom_abline(xintercept = 460,
              yintercept = 460,
              color = 'green',
              size = 1)+
  ggtitle(" Diagrama de dispersão Zonas do Domicílio x Trabalho")+
  theme(plot.title = element_text(family = "calibri", color = "#346332",
                                  face ="bold", size = 14, hjust = 0.5)) +
  theme(axis.title = element_text(family = "calibri", color="#346332",
                                  face="bold", size=16)) +
  theme(axis.title.y = element_text(angle = 90, hjust = 0.5))+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.5))+
  theme(axis.text.y = element_text(angle = 30, hjust = 0.5))

5.2.1 Descrição do Segundo Gráfico

Um dos efeitos provocados pela concentração das oportunidades de trabalho apresentadas no Primeiro Gráfico pode ser observado neste segundo. Num sistema ideal todos os pontos estariam sobre a curva verde, isto é, nenhum trabalhador teria que sair da sua zona de domicílio para trabalhar; isto simplificaria muito os sistemas de transporte e consequentemente o investimento do governamental, sem contar com as economias de combustível, tempo, número de acidentes, etc. A curva em vermelho é um modelo de regressão linear ajustando os pontos, ela nos ajuda a visualizar os desvios da situação ideal (verde). A curva azul é um outro modelo de ajuste de curva, somente mais elaborado, mas com a mesma finalidade da vermelha. Como essa necessidade de viagens provocada pelo desequilíbrio impacta as distância percorridas nas diversas classes sociais?

5.3 Terceiro Gráfico

ggplot(OD_2007_v2d) +
  geom_boxplot(aes(x = criterio_b, y = distancia, fill = ClasseSocial), 
               outlier.colour = NA)+
  labs(y = "Distância por viagem [m]", x = "Classe Social")+
  ggtitle("BoxPlot da Distância por Classe Social")+
  theme_economist()+
  scale_y_continuous(breaks = seq(0, 15000, 5000))+
  coord_cartesian(ylim = c(0,15000))+
  theme(plot.title = element_text(family = "calibri", color = "#346332",
                                  face ="bold", size = 14, hjust = 0.5)) +
  theme(axis.title = element_text(family = "calibri", color = "#346332",
                                  face = "bold", size = 16)) +
  theme(axis.title.y = element_text(angle = 90, hjust = 0.5))+
  theme(axis.text.x = element_text(angle = 30, hjust = 0.5))+
  theme(axis.text.y = element_text(angle = 30, hjust = 0.5))

5.3.1 Descrição do Terceiro Gráfico

Neste gráfico é apresentado a distância percorrida nas viagens segmentado nas diversas classes sociais. Observa-se que a mediana da distância para as classes A1 até B2 são muito próximas, bem como para as classes C1 até a E.
Vamos ver mais detalhes do comportamento da distância em função das classes sociais:

detach("package:plyr", unload = TRUE) 
distanciasyClasseSocial <- OD_2007_v2d %>% 
  group_by(criterio_b) %>% 
  summarise(mediana = median (as.numeric (distancia), na.rm = TRUE),
            media = mean (as.numeric (distancia), na.rm = TRUE),
            DesvPad = sd(distancia, na.rm = TRUE),
            CV = (DesvPad / media),
            min = min(as.numeric (distancia), na.rm = TRUE),
            max = max(as.numeric (distancia), na.rm = TRUE),
            n = n()) %>%
  arrange(-mediana)
head(distanciasyClasseSocial, n = 8)
## # A tibble: 8 × 8
##   criterio_b  mediana    media  DesvPad       CV       min      max     n
##       <fctr>    <dbl>    <dbl>    <dbl>    <dbl>     <dbl>    <dbl> <int>
## 1         A1 3245.490 4846.450 5399.300 1.114073  7.232379 58576.33  7044
## 2         A2 3199.099 4972.629 5596.401 1.125441  7.256032 65500.30 24475
## 3         B1 3118.785 5258.955 6178.149 1.174786  2.889239 60964.45 33217
## 4         B2 2788.177 5404.384 6735.399 1.246284  1.282264 66769.74 46313
## 5         C1 2198.575 5385.446 7283.095 1.352366  4.429503 84099.56 43647
## 6         C2 1727.882 5259.763 7520.252 1.429770  6.151829 73514.37 28110
## 7          E 1553.434 4974.937 7673.537 1.542439 22.415218 57589.59  1038
## 8          D 1368.958 4621.459 7351.207 1.590668 10.154211 82674.14 12854

Conforme dados acima, em média, a classe B2 (5,4Km) é a que mais se desloca, já no outro oposto a classe D (4,6Km) é a que menos se locomove; contudo, a distância mínima percorrida pela classe D é de 10,1Km e a máxima chega a 82,7Km; isto ilustra a grande quantidade de pontos fora da curva (outliers), em todas as classes sociais. Esses outliers impactam os valores dos coeficientes de variação - CV - todos são maiores que 1 - demonstrando grande variabilidade nos dados, isto porque para todas as classes sociais o desvio padrão é maior que as médias. Quando isso acontece, a mediana é uma medida de dispersão mais indicada que a média. Na Tabela acima, temos que a menor mediana foi obtida para a classe D (1,4Km) e a maior para a classe A1 (3,2Km).

6 Reflexão

Neste trabalho foi realizado a Análise Exploratória dos Dados da Pesquisa O/D com o software R.
Inicialmente buscou-se entender as variáveis da base de dados, verificando seus tipos e entendendo seus significados (dicionário dos dados).
Partiu-se de análises univaridas de forma a entender melhor as variáveis de forma isolada, na sequência foram selecionadas algumas variáveis da base (6 qualitativas e 3 quantitativas), com o intuito de entender melhor como as variáveis trabalho e educação se comportam nas 460 zonas do domicílio. O interesse por essas variáveis foi do achado que elas são os principais fatores geradores de demanda de transporte na RMSP. Depois foram realizados análises bivariadas e multivariadas, sempre buscando responder a questão inicial: entender melhor como as variáveis trabalho e educação se comportam nas 460 zonas do domicílio. Outros achados foram: a região que mais gera empregos fica no entorno da zona 80; com relação a educação, o destaque positivo é para o entorno da região 30; os principais modais das viagens são: a pé, automóvel, ônibus, metrô e trem; a zona 95 foi a zona que mais utilizou automóvel e a zona 3 foi a zona que menos utilizou; somente há correlação considerável entre as variáveis “duracao” e “distancia”, sendo esta igual a 0,65 com r² = 39,7%; a zona do domicílio com maior número de amostras foi a 95; das amostras pesquisadas que estudam a maior parte o fez na zona 31; a zona que mais gera empregos é a 5; a classe social da maioria dos respondentes é a B2; o automóvel é o principal meio de transporte utilizado.
A análise permitiu ainda formar uma ideia da complexidade e dos desafios de tentar corrigir os problemas de planejamento urbano na RMSP. A falta de políticas públicas de uso e ocupação do solo causou um grande desequilíbrio demandando altos investimentos em sistemas de transporte. A questão agora seria: gastar os recursos em sistemas de transporte; e/ou investi-los no estimulo da geração de oportunidades de empregos e escolas nas regiões mais carentes?
Do ponto de vista do software R, este se mostrou muito promissor respondendo a todas as necessidades de cruzamento de dados, e ainda fornecendo gráficos muito elegantes. Mesmo trabalhando com uma base de dados relativamente grande - como os da Pesquisa O/D - em um computador simples, o desempenho foi muito bom.
Como sugestão de trabalhos futuros, temos a utilização do pacote ggmap para visualização geográfica das coordenadas UTM empregadas na pesquisa para a localização do domicílio (variáveis co_dom_x e co_dom_y), trabalho (co_tr1_x e co_tr1_y) e escola (co_esc_x e co_esc_y).