Departamento de Ecologia IB-USP
ilhas <- read.csv2("../data/ilhas.csv",header=T,row.names = 1) ilhas<-as.matrix(ilhas) ilhas
## ilha1 ilha2 ilha3 ilha4 ilha5 ilha6 ilha7 ilha8 ## sp1 19 0 13 19 12 0 0 11 ## sp2 7 4 0 1 2 6 3 1 ## sp3 1 0 0 3 5 0 0 0 ## sp4 8 17 8 22 14 7 9 7 ## sp5 2 1 0 1 7 12 7 0 ## sp6 2 5 18 15 10 0 0 0 ## sp7 5 0 8 14 5 7 12 5 ## sp8 20 0 0 0 3 5 1 0 ## sp9 11 7 0 5 0 9 7 0 ## sp10 15 12 0 1 6 8 0 0
Abundância por espécie
rowSums(ilhas)
## sp1 sp2 sp3 sp4 sp5 sp6 sp7 sp8 sp9 sp10 ## 74 24 9 92 30 50 56 29 39 42
Abundância por ilha
colSums(ilhas)
## ilha1 ilha2 ilha3 ilha4 ilha5 ilha6 ilha7 ilha8 ## 90 46 47 81 64 54 39 24
Abundância média por espécie
apply(X=ilhas, MARGIN=1, FUN=mean)
## sp1 sp2 sp3 sp4 sp5 sp6 sp7 sp8 sp9 sp10 ## 9.250 3.000 1.125 11.500 3.750 6.250 7.000 3.625 4.875 5.250
Número de espécies por ilha
ilhas.ocor <- ilhas > 0 apply(ilhas.ocor, 2, sum)
## ilha1 ilha2 ilha3 ilha4 ilha5 ilha6 ilha7 ilha8 ## 10 6 4 9 9 7 6 4
sps <- read.csv2("../data/sps.csv",header=T, dec=".") sps
## sp cor peso dieta compr.asa compr.corpo ## 1 sp1 verde 20 frutos 5.7 17.1 ## 2 sp2 verde 110 insetos 31.0 93.0 ## 3 sp3 marrom 40 insetos 11.0 33.0 ## 4 sp4 marrom 15 insetos 4.0 12.0 ## 5 sp5 marrom 20 frutos 6.5 19.5 ## 6 sp6 azul 200 frutos 29.8 89.4 ## 7 sp7 amarelo 30 nectar 8.5 25.5 ## 8 sp8 amarelo 10 insetos 2.8 8.4 ## 9 sp9 amarelo 25 fruto 7.3 21.9 ## 10 sp10 amarelo 15 insetos 3.2 9.6
str(sps)
## 'data.frame': 10 obs. of 6 variables: ## $ sp : Factor w/ 10 levels "sp1","sp10","sp2",..: 1 3 4 5 6 7 8 9 10 2 ## $ cor : Factor w/ 4 levels "amarelo","azul",..: 4 4 3 3 3 2 1 1 1 1 ## $ peso : int 20 110 40 15 20 200 30 10 25 15 ## $ dieta : Factor w/ 4 levels "fruto","frutos",..: 2 3 3 3 2 2 4 3 1 3 ## $ compr.asa : num 5.7 31 11 4 6.5 29.8 8.5 2.8 7.3 3.2 ## $ compr.corpo: num 17.1 93 33 12 19.5 89.4 25.5 8.4 21.9 9.6
summary(sps)
## sp cor peso dieta compr.asa ## sp1 :1 amarelo:4 Min. : 10.00 fruto :1 Min. : 2.800 ## sp10 :1 azul :1 1st Qu.: 16.25 frutos :3 1st Qu.: 4.425 ## sp2 :1 marrom :3 Median : 22.50 insetos:5 Median : 6.900 ## sp3 :1 verde :2 Mean : 48.50 nectar :1 Mean :10.980 ## sp4 :1 3rd Qu.: 37.50 3rd Qu.:10.375 ## sp5 :1 Max. :200.00 Max. :31.000 ## (Other):4 ## compr.corpo ## Min. : 8.40 ## 1st Qu.:13.28 ## Median :20.70 ## Mean :32.94 ## 3rd Qu.:31.12 ## Max. :93.00 ##
mostrar que o summary é bom para encontrar erros nas tabelas
sps[ sps$dieta=="fruto" , ]
## sp cor peso dieta compr.asa compr.corpo ## 9 sp9 amarelo 25 fruto 7.3 21.9
sps[9,4] <- "frutos" sps[9,]
## sp cor peso dieta compr.asa compr.corpo ## 9 sp9 amarelo 25 frutos 7.3 21.9
Mas a variável continua tendo 4 níveis…
sps$dieta
## [1] frutos insetos insetos insetos frutos frutos nectar insetos ## [9] frutos insetos ## Levels: fruto frutos insetos nectar
sps$dieta<- as.character(sps$dieta) sps$dieta<- as.factor(sps$dieta) sps$dieta
## [1] frutos insetos insetos insetos frutos frutos nectar insetos ## [9] frutos insetos ## Levels: frutos insetos nectar
#ou sps$dieta <- factor(sps$dieta, levels=c("frutos", "insetos", "nectar" ))
Abundância total das espécies da planilha ilhas:
rowSums(ilhas)
## sp1 sp2 sp3 sp4 sp5 sp6 sp7 sp8 sp9 sp10 ## 74 24 9 92 30 50 56 29 39 42
sps$abund.tot <- rowSums(ilhas) head(sps)
## sp cor peso dieta compr.asa compr.corpo abund.tot ## 1 sp1 verde 20 frutos 5.7 17.1 74 ## 2 sp2 verde 110 insetos 31.0 93.0 24 ## 3 sp3 marrom 40 insetos 11.0 33.0 9 ## 4 sp4 marrom 15 insetos 4.0 12.0 92 ## 5 sp5 marrom 20 frutos 6.5 19.5 30 ## 6 sp6 azul 200 frutos 29.8 89.4 50
head(sps, n=3L)
## sp cor peso dieta compr.asa compr.corpo abund.tot ## 1 sp1 verde 20 frutos 5.7 17.1 74 ## 2 sp2 verde 110 insetos 31.0 93.0 24 ## 3 sp3 marrom 40 insetos 11.0 33.0 9
Ordenando sps
por peso:
sps[ order(sps$peso) , ]
## sp cor peso dieta compr.asa compr.corpo abund.tot ## 8 sp8 amarelo 10 insetos 2.8 8.4 29 ## 4 sp4 marrom 15 insetos 4.0 12.0 92 ## 10 sp10 amarelo 15 insetos 3.2 9.6 42 ## 1 sp1 verde 20 frutos 5.7 17.1 74 ## 5 sp5 marrom 20 frutos 6.5 19.5 30 ## 9 sp9 amarelo 25 frutos 7.3 21.9 39 ## 7 sp7 amarelo 30 nectar 8.5 25.5 56 ## 3 sp3 marrom 40 insetos 11.0 33.0 9 ## 2 sp2 verde 110 insetos 31.0 93.0 24 ## 6 sp6 azul 200 frutos 29.8 89.4 50
max(sps$compr.asa)
## [1] 31
min(sps$compr.corpo)
## [1] 8.4
range(sps$peso)
## [1] 10 200
mean(sps$peso)
## [1] 48.5
sd(sps$peso)
## [1] 60.60116
var(sps$peso)
## [1] 3672.5
median(sps$peso)
## [1] 22.5
quantile(sps$peso)
## 0% 25% 50% 75% 100% ## 10.00 16.25 22.50 37.50 200.00
valores <- c(15,5,3,8,10,2,7,11,12)
valores.ord<- valores[order(valores)] valores.ord
## [1] 2 3 5 7 8 10 11 12 15
valores.ord[5]
## [1] 8
median(valores)
## [1] 8
quantile(valores)
## 0% 25% 50% 75% 100% ## 2 5 8 11 15
table(sps$cor)
## ## amarelo azul marrom verde ## 4 1 3 2
table(sps$dieta)
## ## frutos insetos nectar ## 4 5 1
table(sps$cor, sps$dieta)
## ## frutos insetos nectar ## amarelo 1 2 1 ## azul 1 0 0 ## marrom 1 2 0 ## verde 1 1 0
tapply
Comprimento médio do corpo por dieta
tapply(X = sps$compr.corpo, INDEX = sps$dieta, FUN = mean)
## frutos insetos nectar ## 36.975 31.200 25.500
Peso máximo por cor e dieta
tapply(sps$peso, list(sps$cor, sps$dieta), max)
## frutos insetos nectar ## amarelo 25 15 30 ## azul 200 NA NA ## marrom 20 40 NA ## verde 20 110 NA
aggregate
em data framesabundância média por dieta e cor
aggregate(formula = abund.tot ~ cor + dieta, data = sps, FUN = mean)
## cor dieta abund.tot ## 1 amarelo frutos 39.0 ## 2 azul frutos 50.0 ## 3 marrom frutos 30.0 ## 4 verde frutos 74.0 ## 5 amarelo insetos 35.5 ## 6 marrom insetos 50.5 ## 7 verde insetos 24.0 ## 8 amarelo nectar 56.0
abundância e peso médio por cor e dieta
aggregate(cbind(abund.tot, peso) ~ cor + dieta, sps, mean)
## cor dieta abund.tot peso ## 1 amarelo frutos 39.0 25.0 ## 2 azul frutos 50.0 200.0 ## 3 marrom frutos 30.0 20.0 ## 4 verde frutos 74.0 20.0 ## 5 amarelo insetos 35.5 12.5 ## 6 marrom insetos 50.5 27.5 ## 7 verde insetos 24.0 110.0 ## 8 amarelo nectar 56.0 30.0
## x1 x2 x3 x4 y1 y2 y3 y4 ## 1 10.00 10.00 10.00 8.00 8.04 9.14 7.46 6.58 ## 2 8.00 8.00 8.00 8.00 6.95 8.14 6.77 5.76 ## 3 13.00 13.00 13.00 8.00 7.58 8.74 12.74 7.71 ## 4 9.00 9.00 9.00 8.00 8.81 8.77 7.11 8.84 ## 5 11.00 11.00 11.00 8.00 8.33 9.26 7.81 8.47 ## 6 14.00 14.00 14.00 8.00 9.96 8.10 8.84 7.04 ## 7 6.00 6.00 6.00 8.00 7.24 6.13 6.08 5.25 ## 8 4.00 4.00 4.00 19.00 4.26 3.10 5.39 12.50 ## 9 12.00 12.00 12.00 8.00 10.84 9.13 8.15 5.56 ## 10 7.00 7.00 7.00 8.00 4.82 7.26 6.42 7.91 ## 11 5.00 5.00 5.00 8.00 5.68 4.74 5.73 6.89 ## media 9.00 9.00 9.00 9.00 7.50 7.50 7.50 7.50 ## sd 3.16 3.16 3.16 3.16 1.94 1.94 1.94 1.94
Todos os quatro conjunto de dados são idênticos quando examinado usando estatística básica, mas variam consideravelmente quando graficados
t.dieta <- table(sps$dieta) barplot(t.dieta, ylab="número de espécies", main="Dieta das espécies")
barplot(t.dieta2, legend=T, col=cores)
barplot(t.dieta2, beside = T, legend=T, col=cores)
ver a abrangência dos dados de acordo com a ordem com que foram coletados. numero da linha de uma observação é plotado contra o valor da observação. É útil para encontrar outliers em uma variável:
head(pardais)
## Species Sex Wingcrd Tarsus Head Culmen Nalospi Wt Observer Age ## 1 SSTS Male 58.0 21.7 32.7 13.9 10.2 20.3 2 0 ## 2 SSTS Female 56.5 21.1 31.4 12.2 10.1 17.4 2 0 ## 3 SSTS Male 59.0 21.0 33.3 13.8 10.0 21.0 2 0 ## 4 SSTS Male 59.0 21.3 32.5 13.2 9.9 21.0 2 0 ## 5 SSTS Male 57.0 21.0 32.5 13.8 9.9 19.8 2 0 ## 6 SSTS Female 57.0 20.7 32.5 13.3 9.9 17.5 2 0
dotchart(pardais$Wt)
dotchart(pardais$Wt, groups =pardais$Sex, gcolor=c("black","red"))
Os histogramas são gráficos que representam a distribuição de frequências dos valores de uma variável quantitativa, servem para vermos a forma da distribuição dos dados.
hist(pardais$Wt)
histogram(~Wt|Sex, data= pardais)
visualiza o centro e o espalhamento dos dados distribuição minimo, os quartis 25%, 50% (mediana), 75% e o máximo. outliers
boxplot(pardais$Wingcrd)
boxplot(pardais$Tarsus)
boxplot(Wt~Sex, data=pardais)
qqnorm(pardais$Culmen) qqline(pardais$Culmen)
#simulando dados normais normais <- rnorm(n=101,mean = 50, sd = 2) qqnorm(normais) qqline(normais)
observar a relação entre duas variáveis contínuas. Ou seja serve para inspecionar visualmente se duas variáveis são associadas.
plot(pardais$Tarsus, pardais$Wingcrd)
xyplot(Wt~Head|as.factor(Observer), data=pardais)
Cores diferentes para cada sexo
plot(Wt~Head, data=pardais, col=cores, pch=16)
pairs(pardais[ ,3:5], upper.panel = panel.cor, diag.panel = panel.hist)
par( )
plot(riqueza~area)
Argumento de par
par(cex=1.5) plot(riqueza~area)
par(cex=1) # para voltar ao tamanho padrão
Argumento de plot
plot(riqueza~area, cex=1.5)
Para "limpar" os parâmetros de par
, ou volta com o valor inicial de par ou fecha o dispositivo gráfico (dev,off
)
plot(riqueza~area, pch=4, col="orangered2")
par(cex=1.5) plot(riqueza~area, pch=16, col="deeppink")
plot(riqueza~area, xlab = "Área", ylab="Número de Espécies", main= "relação espécies-área")
# área em metros quadrados plot(riqueza~area, xlab = expression("Área (m"^2*")"), ylab="Número de Espécies", main= "Borboletas do Parque")
par(mfrow=c(1,2)) plot(riqueza~area, col=cores, pch=16) boxplot(riqueza~local)
Funções de nivel inferior (low-level plotting commands)
lines
axis
points
segments
text
legend
rect
lines()
plot(riqueza~area) lines(area, riqueza) lines(lowess(area,riqueza), col="red")
abline()
model <-lm(riqueza~area) plot(riqueza~area) abline(model) # reta da regressão
abline()
plot(riqueza~area) abline(v=mean(area), lty=2, col="darkgreen") # linha vertical abline(h=mean(riqueza), lty=4, col="purple") # linha
text()
e mtext()
plot(riqueza~area) text(x=10,y=43, "texto aqui")
plot(riqueza~area, xlab="") mtext(side=1, "área do lago", line=3, cex=2)
axis()
plot(riqueza~area, xaxt="n") axis(1, at=seq(0,80,20), labels=c("zero", "vinte", "quarenta", "sessenta", "oitenta"))
plot(riqueza~area) par(new=T) # para permitir sobrescrever o gráfico #plotando a nova variável Y2, mas sem desenhar o eixo plot(umidade~area, yaxt="n", ylab="",type="l") # desenhando o eixo de Y2 axis(4) mtext("Umidade (%)",4, line = 2)
points
plot(riqueza~area, pch=16, cex=2, col="orange") points(riq.lago2~area.lago2, pch=16, col="purple", cex=2)
legend("topleft", legend= c("lago 1", "lago 2"), pch=16, col=c("orange", "purple"), bty="n")
Extensões mais comuns:
Help em grDevice
jpeg(filename = "figurinha.jpg", width = 480, height = 480) plot(riqueza~area) dev.off()
…
Geralmente usado em gráficos muito grandes
# abrindo uma janela para fazer o gráfico, à parte do Rstudio x11() # fazendo o plot plot(riqueza~area) # o plot será enviado diretamente para a janela aberta.