3
Medidas de Centralidade
A média é a maneira mais óbvia, direta e prética de resumir dados. Basicamente a maioria das análises se utiliza da média para obtenção de resultados.
Vamos inicialmente criar uma lista de dados para extrair informações referentes à mesma:
library(ggplot2)
library(foreign)
acidentes = read.dbf("data/acidentes.dbf")
head(acidentes)
## ID LONGITUDE LATITUDE LOG1 LOG2 PREDIAL1
## 1 660953 0 0 AV ASSIS BRASIL <NA> 6699
## 2 660956 0 0 R DR BARROS CASSAL <NA> 411
## 3 660959 0 0 AV FABIO ARAUJO SANTOS <NA> 1500
## 4 660962 0 0 AV IPIRANGA <NA> 8799
## 5 660963 0 0 AV ASSIS BRASIL <NA> 164
## 6 661175 0 0 AV IPIRANGA R SAO MANOEL 0
## LOCAL TIPO_ACID LOCAL_VIA QUEDA_ARR DATA
## 1 Logradouro ABALROAMENTO 6699 AV ASSIS BRASIL 0 2019-01-01
## 2 Logradouro ABALROAMENTO 411 R DR BARROS CASSAL 0 2019-01-01
## 3 Logradouro CHOQUE 1500 AV FABIO ARAUJO SANTOS 0 2019-01-01
## 4 Logradouro COLISAO 8799 AV IPIRANGA 0 2019-01-01
## 5 Logradouro ABALROAMENTO 164 AV ASSIS BRASIL 0 2019-01-01
## 6 Cruzamento ABALROAMENTO AV IPIRANGA & R SAO MANOEL 0 2019-01-01
## DIA_SEM HORA FERIDOS FERIDOS_GR MORTES MORTE_POST FATAIS AUTO TAXI
## 1 TERCA-FEIRA 02:45 1 0 0 0 0 3 0
## 2 TERCA-FEIRA 07:36 1 0 0 0 0 2 0
## 3 TERCA-FEIRA 16:50 4 0 0 0 0 1 0
## 4 TERCA-FEIRA 19:00 5 0 0 0 0 3 0
## 5 TERCA-FEIRA 22:15 1 0 0 0 0 1 0
## 6 TERCA-FEIRA 04:10 0 0 0 0 0 2 0
## LOTACAO ONIBUS_URB ONIBUS_MET ONIBUS_INT CAMINHAO MOTO CARROCA BICICLETA
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 1 0 0
## 6 0 0 0 0 0 0 0 0
## OUTRO TEMPO NOITE_DIA FONTE BOLETIM REGIAO DIA MES ANO FX_HORA CONT_ACID
## 1 0 BOM NOITE DEPTRAN 000219 NORTE 1 1 2019 2 1
## 2 0 BOM DIA DEPTRAN 000519 CENTRO 1 1 2019 7 1
## 3 0 BOM DIA DEPTRAN 000919 SUL 1 1 2019 16 1
## 4 0 BOM NOITE DEPTRAN 001119 LESTE 1 1 2019 19 1
## 5 0 BOM NOITE DEPTRAN 001219 NORTE 1 1 2019 22 1
## 6 0 BOM NOITE EPTC 230995 LESTE 1 1 2019 4 1
## CONT_VIT UPS CONSORCIO CORREDOR
## 1 1 5 <NA> 0
## 2 1 5 <NA> 0
## 3 1 5 <NA> 0
## 4 1 5 <NA> 0
## 5 1 5 <NA> 0
## 6 0 1 <NA> 0
dim(acidentes)
## [1] 7878 43
A obtenção da média meículos envolvidos em acidentes pode ser obtido pela soma de veículos envolvidos, dividido pelo numero de ocorrências:
sum(acidentes$AUTO)/length(acidentes$AUTO)
## [1] 1.462554
Ou por meio da função mean():
mean(acidentes$AUTO)
## [1] 1.462554
Também podemos obter a média de um subconjunto de dados, tais como por exemplo acidentes em cruzamentos:
mean(acidentes[acidentes$LOCAL=="Cruzamento",]$AUTO)
## [1] 1.676241
O mesmo podendo ser feito para logradouros
mean(acidentes[acidentes$LOCAL=="Logradouro",]$AUTO)
## [1] 1.387191
Agora filtrando por abalroamento
mean(acidentes[acidentes$TIPO_ACID=="ABALROAMENTO",]$AUTO)
## [1] 1.459652
Agora filtrando por atropelamento, note que o valor é de menor um automóvel por atropelamento, por que existem atropelamento por outras categorias de veículos.
mean(acidentes[acidentes$TIPO_ACID=="ATROPELAMENTO",]$AUTO)
## [1] 0.5665399
Verificando se a media de automóveis envolvidos varia entre logradouro e cruzamento:
mean(acidentes[acidentes$TIPO_ACID=="ATROPELAMENTO" & acidentes$LOCAL =="Logradouro",]$AUTO)
## [1] 0.5661479
mean(acidentes[acidentes$TIPO_ACID=="ATROPELAMENTO" & acidentes$LOCAL =="Cruzamento",]$AUTO)
## [1] 0.5833333
library(MASS)
ggplot(Cars93, aes(x=Horsepower)) +
geom_histogram(color="black", fill="white",binwidth = 10)+
facet_wrap(~Origin)
ggplot(acidentes[acidentes$FATAIS > 0, ], aes(x=FATAIS, )) +
geom_histogram(color="black", fill="white",binwidth = 10)+
facet_wrap(~LOCAL)
Uma solução para discrepâncias de médias é utilizar a média aparada, uma solução utilizada é eliminar valores nas pontas. Uma aplicação bastante comum é eliminar dados acima de dois desvios padrão ou também obter a média dos 95%, eliminando 2,5% nas extremidades:
mean(Cars93$Horsepower)
## [1] 143.828
mean(Cars93$Horsepower, trim = 0.05)
## [1] 140.4941
mean(acidentes$AUTO)
## [1] 1.462554
mean(acidentes$AUTO, trim = 0.025)
## [1] 1.451509
O R não fornece uma função direta para a média geométrica, mas conhecendo o fórmula da mesma é fácil de implementá-la:
dados = c(1.10, 1.15, 1.10, 1.20, 1.05)
res = prod(dados)^(1/length(dados))
res
## [1] 1.118847
Se demanhã você sai de carro para o trabalho e não tem a menor pressa de chegar, a média de velocidade de percurso é relativamente baixa, no entando ao final da tarde pode acontecer de você querer chegar o mais breve possível me casa. Qual a taxa média de seu tempo total de percurso?
velocidades = c(35, 60)
1/velocidades
## [1] 0.02857143 0.01666667
media_harmonica = 1/mean(1/velocidades)
media_harmonica
## [1] 44.21053
Como a média é sensível a valores extremos, uma outra medida de centralidade por vezes útil é a mediana; a mediana nos retorna o valor central de todos os números, ou seja, se ordenarmos as unidades observacionais pelo seu valor, a mediana será a unidade ao centro, ou a média das duas medidas ao centro. Para este fim iremos analisar a mediana do número de veículos envolvidos em acidentes fatais, envolvendo a classe automóvel
autos = acidentes[acidentes$FATAIS > 0 & acidentes$AUTO > 0, ]$AUTO
median(autos)
## [1] 1
autos = acidentes[acidentes$FX_HORA > 0 & acidentes$AUTO > 0, ]$FX_HORA
autos = na.exclude(autos)
median(autos)
## [1] 13
moto = acidentes[acidentes$FX_HORA > 0 & acidentes$MOTO > 0, ]$FX_HORA
moto = na.exclude(moto)
median(moto)
## [1] 15
autos = acidentes[acidentes$FERIDOS > 0 & acidentes$MOTO > 0, ]$FERIDOS
autos = na.exclude(autos)
median(autos)
## [1] 1
A moda é a medida de centralidade que nos aprasenta o valor que gera o vértice da nossa distribuição:
library(modeest)
#most frequente value
fx = acidentes$FX_HORA
fx = na.exclude(fx)
mfv(fx)
## [1] 8
Tal estatística fica demonstrada por meio da função table:
table(acidentes$FX_HORA)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
## 110 86 44 34 52 73 179 432 570 490 506 518 536 551 527 567 535 409 499 365
## 20 21 22 23
## 265 212 191 122