Modelação Geográfica, Cidades e Ordenamento do Território

Grupo integrado no e-GEO – Centro de Estudos de Geografia e Planeamento Regional

Análise gráfica de distribuições empíricas em R

2 Comments

Screen Shot 2013-03-02 at 21.56.18

Uma das muitas virtudes do R é a versatilidade dos seus gráficos. É recorrente em formações de R os alunos ficarem impressionados com este facto mas ao mesmo tempo “assustados” com o código.

O exemplo que se segue utiliza dados dos Censos 2001 agregados ao nível da freguesia (os metadados podem ser encontrados aqui). O ficheiro de dados está aqui.

De forma a conseguir informação detalhada sobre os parâmetros de formatação dos gráficos, basta correr o comando:


?par

O primeiro passo é carregar o ficheiro de dados e selecionar as freguesias de uma região NUT3 (neste caso o Médio Tejo). É feita também uma seleção prévia de um número limitado de variáveis:


#Os dados têm que estar na "working directory". Usar getwd() e setwd("\a pasta onde estão os dados")
data1 <- read.table("data1_censos2001.csv", header=TRUE, sep=",", encoding="latin1")

names(data1) #Listagem das variáveis

unique(data1$NUTS3.1) #Listagem das regiões NUTS3
table(data1$NUTS3.1) #Tabela de frequências

mtejo <- data1[data1$NUTS3.1 == "Médio Tejo ",c(4:6,38:46)] #Todas as linhas cuja região NUT3 é a desejada
head(mtejo, n=3) #As primeiras 3 linhas
names(mtejo)

De seguida calcula-se a variável de interesse. Escolhi o número de residentes por edifício construído entre 1995 e 2001:


x <- mtejo$TTR/mtejo$E2001

Cria-se uma janela gráfica com 1 linha e 2 colunas:


par(mfrow=c(1,2))

e desenha-se o primeiro histograma onde é sobre-posta a função densidade:


#Função "hist": calcula e desenha um histograma
hist(x, freq=FALSE, lty=0, breaks=20, xlab="População residente", ylab="Densidade", col="gray", main="Histograma + Função densidade empírica", cex.axis=0.8, cex.lab=0.8, cex.main=0.8)

dx <- density(x) # Função densidade empírica (kernel density function)
lines(dx, lty=2, col="red")

Finalmente, repete-se o mesmo histograma, mas desenha-se uma curva normal com média e desvio padrão calculados a partir da variável observada:


#Cria-se um objeto tipo "histograma ao mesmo tempo que é representado graficamente
h<-hist(x, breaks=20, lty=0, col="gray", xlab="Residentes por edifício", ylab="Frequências", main="Comparação com uma distribuição normal", cex.main=1.2, cex.sub=0.1, col.axis="red", family="mono", fg="gray", las=1, cex.axis=0.8, cex.lab=0.8, cex.main=0.8) 

h #aceder aos vários "slots" do objecto "h".

#cálculo de um vector aleatório retirado de uma distribuição normal de média "mean(x)" e desvio padrão "sd(x)".
xfit<-seq(min(x),max(x),length=40)
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x)) 
yfit <- yfit*diff(h$mids[1:2])*length(x) 
lines(xfit, yfit, col="blue", lwd=2)

Teria sido possível outras configurações. Os parâmetros dos gráficos podem ser alterados, outros podem ser adicionados, etc. Exemplo: para alterar a cor das barras, basta alterar o parâmetro “col”; a dimensão da font das etiquetas dos eixos altera-se o cex.axis (a dimensão aqui é dada através de um factor de escala, onde “1” é a referência).

É importante salientar que a curva de aprendizagem do R é realmente bastante mais suave do que aparenta. E as suas potencialidades valem bem a pena.

2 thoughts on “Análise gráfica de distribuições empíricas em R

  1. Pingback: Sextante e R | Modelação Geográfica, Cidades e Ordenamento do Território

  2. No segundo gráfico é criado um objecto de classe “histogram”. A exploração deste objecto permite aceder a uma série de informação sobre a distribuição da variável.

Deixe uma resposta

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s