Dados e gráficos

Dados e gráficos

-
------------------------------------------------------------------
# dados de renda por município no ano de 2000 (.xls)
 
## lendo direto do arquivo excel
require(gdata) # contém a função read.xls() para importar planilhas
renda <- read.xls("http://www.leg.ufpr.br/~paulojus/mct/renda2000municipios.xls",
                  sheet=1, fileEncoding='latin1', encoding="latin1")
names(renda) <- tolower(names(renda))
names(renda)[4] <- "renda"
str(renda)
 
## lendo arquivo csv exportado do excel
renda <- read.csv("http://www.leg.ufpr.br/~paulojus/mct/renda2000municipios.csv", fileEnc="latin1",
                  sep="\t", dec=",")
renda
head(renda)
names(renda) <- tolower(names(renda))
names(renda)[4] <- "renda"
str(renda)
 
#------------------------------------------------------------------------------------------
# dados de alfabetizados por municÃípio no ano de 2000 (.xls)
 
## lendo direto do arquivo excel
alfab <- read.xls("http://www.leg.ufpr.br/~paulojus/mct/alfabetizados2000municipios.xls",
                  sheet=1, fileEncoding='latin1', encoding="latin1")
names(alfab) <- tolower(names(alfab))
names(alfab)[4] <- "alfabetizados"
str(alfab)
 
## lendo arquivo csv exportado do excel
 
## opcoes usuais para leitura/importaçao dos dados: read.csv(), read.csv2() e read.table()
## dados em: http://www.leg.ufpr.br/~paulojus/mct/alfabetizados2000municipios.csv
file.show("dados/alfabetizados2000municipios.csv")
alfab <- read.csv("http://www.leg.ufpr.br/~paulojus/mct/alfabetizados2000municipios.csv",
                   fileEncoding='latin1', sep="\t", dec=",")
alfab
names(alfab) <- tolower(names(alfab))
names(alfab)[4] <- "alfabetizados"
str(alfab)
 
#------------------------------------------------------------------------------------------
# como fazer a junção dos dados?
 
#------------------------------------------------------------------------------------------
# imagine se os dados não fossem de mesma dimensão e conteúdo?
 
teste <- merge(alfab[1:10,],  # conjunto menor
               renda[1:15,],  # conjunto maior
               by.x="codigo", by.y="codigo")
str(teste)
 
teste <- merge(alfab[sample(1:nrow(alfab), nrow(alfab)/2),], # metade aleatóriamente
               renda[sample(1:nrow(renda), nrow(renda)/2),], # metade aleatóriamente
               by.x="codigo", by.y="codigo")
str(teste)
 
#------------------------------------------------------------------------------------------
# juntando os dois conjuntos
 
ar <- merge(alfab, renda[,c("codigo","renda")],
            by.x="codigo", by.y="codigo")
str(ar)
ar <- ar[complete.cases(ar),]
str(ar)
 
#------------------------------------------------------------------------------------------
# distribuição de frequência das variáveis
 
hist(ar$alfabetizados, freq=FALSE)
hist(ar$renda)
hist(log(ar$renda))
 
par(mfrow=c(1,2))
with(ar, {hist(alfabetizados, prob=T); rug(alfabetizados), lines(density(alfabetizados))})
with(ar, {hist(log(renda), prob=T); rug(leg(renda)), lines(density(log(renda)))})
par(mfrow=c(1,1))
 
#------------------------------------------------------------------------------------------
# Boxplot por estado
boxplot(alfabetizados~sigla, data=ar)
 
A <- with(ar, tapply(alfabetizados, sigla, function(x){ max(x)-min(x) }))
A <- with(ar, tapply(alfabetizados, sigla, function(x){ diff(range(x)) }))
A[which.max(A)]
A[which.min(A)]
 
boxplot(log(renda)~sigla, data=ar)
 
#------------------------------------------------------------------------------------------
# criar uma nova coluna no arquivo
 
ar$logrenda <- log(ar$renda)
ar <- transform(ar, logrenda=log(renda))
str(ar)
 
#------------------------------------------------------------------------------------------
# como se relacionam as duas variáveis?
 
plot(alfabetizados~renda, data=ar)
plot(alfabetizados~log(renda), data=ar)
 
#------------------------------------------------------------------------------------------
# Destacar com cores/simbolos os pontos de SP?
 
plot(alfabetizados~log(renda), data=ar, col=ifelse(ar$sigla=="SP", 2, 1))
plot(alfabetizados~log(renda), data=ar,
     pch=ifelse(ar$sigla%in%c("PR","SC","RS"), 19, 1),
     col=ifelse(ar$sigla%in%c("PR","SC","RS"), 2, 1))
with(ar, identify(y=alfabetizados, x=log(renda), label=município))
 
#------------------------------------------------------------------------------------------
# Separando estados. 
# Opcao 1
 
sapply(levels(ar$sigla),
       function(s){
         da <- subset(ar, sigla==s)
         plot(alfabetizados~log(renda), data=da, main=s)
         Sys.sleep(3)
       })
 
#------------------------------------------------------------------------------------------
# Opção 2: 
 
## graficos de dispsersao
 
require(lattice)
xyplot(alfabetizados~log(renda)|sigla, data=ar)
 
##
xyplot(alfabetizados~renda, data=ar)
xyplot(alfabetizados~log10(renda), data=ar)
xyplot(alfabetizados~renda, data=ar, scales=list(x=list(log=TRUE)))
 
xyplot(alfabetizados~log10(renda)|sigla, data=ar)
xyplot(alfabetizados~log10(renda)|sigla, data=ar, type=c("p","r"))
xyplot(alfabetizados~log10(renda)|sigla, data=ar,
       type=c("p","r"), cex=0.2)
 
 
#------------------------------------------------------------------------------------------
# box plot
bwplot(alfabetizados~sigla, data=ar)
bwplot(alfabetizados~sigla, data=ar, pch="|")
bwplot(alfabetizados~sigla, data=ar, pch="|",
       scales=list(x=list(rot=90)))
bwplot(alfabetizados~sigla, data=ar, pch="|",
       fill="red", scales=list(x=list(rot=90)))
 
#------------------------------------------------------------------------------------------
# histogramas separados por categoria
 
histogram(~log(renda)|sigla, data=ar)
histogram(~alfabetizados|sigla, data=ar)
 
#------------------------------------------------------------------------------------------
# gráficos de densidade suavizada separados por categoria
 
densityplot(~log(renda)|sigla, data=ar)
densityplot(~alfabetizados|sigla, data=ar)
 
# criando 5 categorias de renda
 
ar$r.cat <- equal.count(log(ar$renda), number=5, overlap=0.1)
str(ar)
 
bwplot(alfabetizados~sigla|r.cat, data=ar, pch="|")
bwplot(alfabetizados~r.cat|sigla, data=ar, pch="|", fill="gray70")
 
histogram(~alfabetizados|r.cat, data=ar)
densityplot(~alfabetizados|r.cat, data=ar)
 
#------------------------------------------------------------------------------------------
# criar categorias 9 de log(renda)
 
range(log(ar$renda))
ar$r.cat <- cut(log(ar$renda), seq(3.9, 15.70, length=9))
str(ar)
table(ar$r.cat)
 
#------------------------------------------------------------------------------------------
# média/mediana/variância de alfabetizados por categoria?
 
with(ar, tapply(alfabetizados, r.cat, mean))
with(ar, tapply(alfabetizados, r.cat, median))
with(ar, tapply(alfabetizados, r.cat, var))
 
#------------------------------------------------------------------------------------------
# fazer o gráfico de box plot em função dos estados separados por categoria de renda
 
bwplot(alfabetizados~sigla|r.cat, data=ar)
 
#------------------------------------------------------------------------------------------
# como fazer categorias que tenham o mesmo número (aproximadamente) de elementos? 
## opção 1
 
lev <- floor(seq(1, nrow(ar), length=9+1))
cuts <- sort(log(ar$renda))[lev]
cuts
 
ar$r.cat <- cut(log(ar$renda), cuts)
str(ar)
table(ar$r.cat)
 
bwplot(alfabetizados~sigla|r.cat, data=ar, pch="|",
       scales=list(x=list(rot=90)), # rotaciona os níveis no eixo x
       layout=c(3,3))               # define a disposição dos gráficos
 
#------------------------------------------------------------------------------------------
# opçao 2
 
help(equal.count, help_type="html")
 
ar$r.cat <- equal.count(log(ar$renda), number=9, overlap=0.1)
str(ar)
summary(ar$r.cat)
 
bwplot(alfabetizados~sigla|r.cat, data=ar)
 
#------------------------------------------------------------------------------------------
# média, variância e correlação separado por estado
 
with(ar, tapply(log(renda), sigla, mean))
with(ar, tapply(alfabetizados, sigla, mean))
with(ar, tapply(log(renda), sigla, var))
with(ar, tapply(alfabetizados, sigla, var))
with(ar, tapply(?, sigla, cor)) # ??? envolve duas variáveis
 
#------------------------------------------------------------------------------------------
# correlação por estado
 
sapply(levels(ar$sigla),
       function(s){
         da <- subset(ar, sigla==s)
         with(da, cor(log(renda), alfabetizados))
       })
 
#------------------------------------------------------------------------------------------
# tudo com uma única função
x <- 
sapply(levels(ar$sigla),
       function(s){
         da <- subset(ar, sigla==s)
         mr <- mean(log(ar$renda))
         ma <- mean(ar$alfabetizados)
         vr <- var(log(ar$renda))
         va <- var(ar$alfabetizados)
         co <- with(da, cor(log(renda), alfabetizados))
         c(m.renda=mr, m.alfab=ma, v.renda=vr, v.alfab=va, cor=co)
       })
 
str(x)
 
x <- t(x)
str(x)
x <- as.data.frame(x)
x[order(x$cor),]
 
#------------------------------------------------------------------------------------------