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