O R é um programa livre multiplataforma para análises estatísticas que pode ser baixado em seu site ou adicionado na lista de repositórios de máquinas linux. Suas possibilidades de aplicação em diversas áreas são praticamente ilimitadas.
Neste blog postarei o resultado de minha experiência em sua utilização nas áreas de dinâmica de populações de peixes, ciência pesqueira e ecologia.
As postagens deste blog se destina, além de mim mesmo, a iniciantes no R e alunos da minha área de atuação.
Aprendi muito em livros e nas listas de discussão R-help e a R_STAT, mas ainda tenho muito pela frente. Agradeço desde já qualquer contribuição.

quarta-feira, 4 de abril de 2012

Gráfico de barras com erro padrão

São muitas as opções para se fazer um gráfico de barras com a indicação do erro padrão (ou outra medida de dispersão) no R. Com uma rápida busca na rede pode-se ter dezenas de sugestões. Eu resolvi contribuir com mais uma.
Meu objetivo era representar a variação da densidade de algumas espécies medida em períodos noturnos e diurnos.
A partir de três tabelas, uma contendo as médias, outra o erro padrão e uma terceira com o número de observações, utilizo os comandos barplot, points, arrows e text para gerar o gráfico desejado.
Os dados das tabelas são copiados para o R pelo comando read.delim (clique aqui para mais detalhes) e transformados em matrizes pelo comando as.matriz.

Médias


SP1 SP2 SP3 SP4
D 10 12 15 20
N 20 15 12 10

Erros padrões


SP1 SP2 SP3 SP4
D 1 2 3 4
N 3 2 1 5

Número de observações


SP1 SP2 SP3 SP4
D 30 40 35 10
N 20 50 20 27

# copia os dados das tabelas para o R
means <- as.matrix(read.delim("clipboard",row.names=1))
se <- as.matrix(read.delim("clipboard",row.names=1))
n <- as.matrix(read.delim("clipboard",row.names=1))
 

# calcula a amplitude da variação do erro
se.sup<-means+se
se.inf<-means-se


# desenha o gráfico

bp<-barplot(means,beside=T,ylim=c(0,max(se.sup*1.15)),
ylab="densidade",legend.text=c("Diurno","Noturno"),
args.legend=list(x = "topleft", bty="n"))
points(bp,means,pch=19)
arrows(bp,se.sup,bp,se.inf, code=3,angle=90,length=0.05)
text(bp,se.sup+1,n)


 




3 comentários: