-
------------------------------------------------------------------
# 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),]
#------------------------------------------------------------------------------------------