Universidade Federal do Paraná
Curso de Estatística
CE 083 -
Estatística Computacional I - 2014/2
Prof. Dr. Walmes Marques Zeviani
Tabela de conteúdo
##-----------------------------------------------------------------------------
## Medidas descritivas.
## Posição: média, mediana, moda.
## Separação: extremos, quartis, quantis.
## Dispersão: amplitude, variância/desvio-padrão, desvio absoluto da
## mediana, amplitude interquartílica, coeficiente de variação.
## Forma: coeficiente de assimetria e coeficiente de curtose.
##-----------------------------------------------------------------------------
## Pacotes com funções úteis para obter medidas descritivas.
require(plyr) ## ddply(), colwise(), each().
require(reshape) ## melt(), cast().
require(doBy) ## summaryBy().
##-----------------------------------------------------------------------------
## Lendo dados de veículos Renault Duster à venda no
## `http://www.webmotors.com.br/` em 26/03/2014.
dus <-
read.table("http://www.leg.ufpr.br/~walmes/data/duster_venda_260314.txt",
header=TRUE, sep="\t", encoding="utf-8")
str(dus, vec.len=1)
## 'data.frame': 699 obs. of 10 variables:
## $ modelo: Factor w/ 11 levels "RENAULT DUSTER 1.6 4X2 16V FLEX 4P MANUAL",..: 3 1 ...
## $ cor : Factor w/ 9 levels "Azul","Branco",..: 5 1 ...
## $ km : int 31442 40800 ...
## $ ano : Factor w/ 7 levels "2011/2011","2011/2012",..: 2 2 ...
## $ valor : num 41990 ...
## $ cambio: Factor w/ 2 levels "AUTOMÁTICO","MANUAL": 2 2 ...
## $ poten : num 1.6 1.6 ...
## $ trac : Factor w/ 2 levels "4X2","4X4": 1 1 ...
## $ cat : Factor w/ 5 levels " "," DYNAMIQUE ",..: 3 1 ...
## $ novo : Factor w/ 2 levels "novo","usado": 2 2 ...
##-----------------------------------------------------------------------------
## Quantos NA tem em cada coluna?
sumNA <- function(x) sum(is.na(x))
colwise(.fun=sumNA)(dus)
## modelo cor km ano valor cambio poten trac cat novo
## 1 0 0 132 0 0 0 0 0 0 0
## Pode se usar apply também.
apply(dus, MARGIN=2, sumNA)
## modelo cor km ano valor cambio poten trac cat novo
## 0 0 132 0 0 0 0 0 0 0
## Se fizer na.omit() será jogado fora veículos com informações para as
## demais variáveis.
## dus <- na.omit(dus)
## str(dus)
##-----------------------------------------------------------------------------
## Questões.
## Qual o total de veículos?
nrow(dus)
## [1] 699
## Quantos custam mais que 50 mil?
sum(dus$valor>50000)
## [1] 443
## Qual a proporção que custa mais que 50 mil?
sum(dus$valor>50000)/nrow(dus)
## [1] 0.6338
prop.table(table(dus$valor>50000))
##
## FALSE TRUE
## 0.3662 0.6338
## Qual o custo médio dos carros da amostra?
mean(dus$valor)
## [1] 53742
## Qual o custo mediano dos carros da amostra?
median(dus$valor)
## [1] 52900
## Qual o desvio-padrão do custo dos carros da amostra?
sd(dus$valor)
## [1] 6101
sqrt(var(dus$valor))
## [1] 6101
## Qual a amplitude do custo dos carros da amostra?
with(dus, max(valor)-min(valor))
## [1] 34500
diff(range(dus$valor))
## [1] 34500
## Quartis?
fivenum(dus$valor) ## Cinco números de Tukey: extremos e quartis.
## [1] 38000 49000 52900 58000 72500
quantile(dus$valor, prob=0.65) ## Qualquer percentil.
## 65%
## 55900
quantile(dus$valor, prob=(1:3)/4) ## 1Q = 25%, 2Q=50% e 3Q=75%.
## 25% 50% 75%
## 49000 52900 58000
## Desvio médio absoluto da mediana.
dmam <- function(x){
sum(abs(median(x)-x))/length(x)
}
## Desvio mediano absoluto da mediana.
dmdam <- function(x){
median(abs(median(x)-x))
}
## help(mad, help_type="html")
dmam(dus$valor)
## [1] 5025
dmdam(dus$valor)
## [1] 4100
mad(dus$valor, constant=1)
## [1] 4100
## Coeficiente de variação?
## cv <- function(x, ...){
## 100*sd(x, ...)/mean(x, ...)
## }
cv <- function(x, na.rm=FALSE, ...){
100*sd(x, na.rm=na.rm)/mean(x, na.rm=na.rm, ...)
}
cv(dus$valor, na.rm=TRUE)
## [1] 11.35
cv(dus$valor, na.rm=TRUE, trim=0.1)
## [1] 11.4
## Como obter todas as medidas descritivas de uma vez?
## Função que retorna mais de uma estatística.
mystats <- function(x){
f <- fivenum(x)
c(media=mean(x), mediana=f[3],
"desv pad"=sd(x), ampli=f[5]-f[1],
cv=cv(x), "1Q"=f[2], "3Q"=f[4])
}
sts <- mystats(dus$valor)
## sts
cbind(sts)
## sts
## media 53742.32
## mediana 52900.00
## desv pad 6101.09
## ampli 34500.00
## cv 11.35
## 1Q 49000.00
## 3Q 58000.00
##-----------------------------------------------------------------------------
## Perguntas.
## Qual a frequência para cada tipo de tração?
table(dus$trac)
##
## 4X2 4X4
## 642 57
xtabs(~trac, data=dus)
## trac
## 4X2 4X4
## 642 57
## Qual a frequência para cada tipo de cambio?
xtabs(~cambio, data=dus)
## cambio
## AUTOMÁTICO MANUAL
## 195 504
## Qual a frequência para cada tipo de cambio x tipo de tração?
xtabs(~trac+cambio, data=dus)
## cambio
## trac AUTOMÁTICO MANUAL
## 4X2 195 447
## 4X4 0 57
## Qual o preço médio para cada tipo de tração?
with(dus, tapply(valor, trac, mean))
## 4X2 4X4
## 53406 57534
aggregate(valor~trac, data=dus, FUN=mean)
## trac valor
## 1 4X2 53406
## 2 4X4 57534
with(dus, by(valor, trac, FUN=mean))
## trac: 4X2
## [1] 53406
## -------------------------------------------------------------------
## trac: 4X4
## [1] 57534
## Qual o preço médio e o desvio padrão para cada tipo de tração?
myfun <- function(x) c(m=mean(x), s=sd(x))
with(dus, tapply(valor, trac, myfun))
## $`4X2`
## m s
## 53406 6023
##
## $`4X4`
## m s
## 57534 5731
aggregate(valor~trac, data=dus, FUN=myfun)
## trac valor.m valor.s
## 1 4X2 53406 6023
## 2 4X4 57534 5731
with(dus, by(valor, trac, FUN=myfun))
## trac: 4X2
## m s
## 53406 6023
## -------------------------------------------------------------------
## trac: 4X4
## m s
## 57534 5731
aggregate(valor~trac, data=dus, FUN=each(mean, sd))
## trac valor.mean valor.sd
## 1 4X2 53406 6023
## 2 4X4 57534 5731
## Qual o preço médio para cada tipo de tração x tipo de cambio?
with(dus, tapply(valor, list(trac, cambio), mean))
## AUTOMÁTICO MANUAL
## 4X2 58085 51364
## 4X4 NA 57534
aggregate(valor~trac+cambio, data=dus, FUN=myfun)
## trac cambio valor.m valor.s
## 1 4X2 AUTOMÁTICO 58085 5333
## 2 4X2 MANUAL 51364 5100
## 3 4X4 MANUAL 57534 5731
with(dus, by(valor, list(trac, cambio), FUN=myfun))
## : 4X2
## : AUTOMÁTICO
## m s
## 58085 5333
## -------------------------------------------------------------------
## : 4X4
## : AUTOMÁTICO
## NULL
## -------------------------------------------------------------------
## : 4X2
## : MANUAL
## m s
## 51364 5100
## -------------------------------------------------------------------
## : 4X4
## : MANUAL
## m s
## 57534 5731