====== explor.an ====== explor.an <- function (x, y, tabela=TRUE, graph=TRUE, glm=TRUE, family=poisson) { # abrindo a funcao com os # argumentos necessarios x <- data.matrix(x) # transformando em matriz y <- data.matrix(y) # transformando em matriz lapply(x,class) # conferindo a classe das colunas da matriz if(any(x < 0)) { # se algum numero menor que 0 a funcao nao e executada stop("vetor nao numerico ou menor que 0 em x") # para a funcao exibe a mensagem } lapply(y,class) # conferindo a classe das colunas da matriz if(!is.numeric(y)) { # se o dado da matriz nao e numerico a funcao nao e executada e aparece a mensagem stop("vetor nao numerico em y. Categorias de numeros nao sao permitidas") # para a funcao exibe a mensagem } sum.ind.psg <- round(rowSums(x),digits=0) # soma dos individuos por paisagem num.ind.tot <- sum(sum.ind.psg) # numero total de individuos prop.ind <- round((sum.ind.psg)/(num.ind.tot),digits=3) # porporcao de individuos por paisagem bin <- x # transformar em dados binarios para somar o numero de especies bin[bin > 0] <- 1 # transformar em dados binarios para somar o numero de especies sum.spp.psg <- round(rowSums(bin),digits=0) # soma do numero de especies por paisagem num.spp.tot <- ncol(bin) # numero total de especies prop.spp <- round((sum.spp.psg)/(num.spp.tot),digits=3) # proporcao de especies por paisagem resumo <- data.frame(sum.ind.psg,prop.ind,sum.spp.psg,prop.spp) # colocando as informacoes do numero de # individuos e especies por pisagem, bem como as porporcoes colnames(resumo) <- c("Individuals number","Ind proportion","Species number","Spp proportion") # nomeando # as colunas do objeto 'resumo' if(glm) { # se @ usuari@ desejar rodar o glm: mod.ind <- glm(sum.ind.psg~y,family) # modelo linear generalizado do numero de individuos por paisagem summary(mod.ind) # sumario do modelo mod.sp <- glm(sum.spp.psg~y,family) # modelo linear generalizado do numero de especies por paisagem summary(mod.sp) #sumario do modelo } if(tabela) { # se @ usuari@ quiser que uma tabela com as informacoes seja criada no diretorio a # funcao seguira esses passos (tabela=TRUE) # install.packages("MASS") # instala o pacote necessario para usar a funcao 'write.matrix' library(MASS) # ativa o pacote na area de trabalho atual write.matrix(resumo,file="tabela.csv",sep="\t") # cria uma tabela csv no diretorio com as informacoes do # objeto 'resumo' (se tabela=TRUE) } if (graph) { # se @ usuari@ quiser um grafico com a distribuicao das especies nas # paisagens(se graph=TRUE) spp <- as.matrix(x) # transformando o dado x (data.frame) em matriz grad.var <- data.matrix(y) # transformando em matriz numerica (as.matrix nao funcionou aqui) y.ord <- spp[order(grad.var[,1]),] # ordenando as paisagens pelo gradiente da variavel sum.p <- colSums(spp*grad.var[,1]/colSums(spp)) # calculando abundancia ponderada das spp nas paisagens spp.ord <- y.ord[,order(sum.p,decreasing=T)] # ordenando as especies por essa abundancia ponderada NAS # PAISAGENS num.col <- as.matrix(spp.ord) # numero de colunas desta tabela serao as linha do grafico de distribuicao # de spp par(mfrow=c(ncol(num.col)+2,1),mar=c(0.2,3,0.2,8),oma=c(3,2,3,6),font=1) # configura a janela onde sera # plotado o grafico layout(matrix(1:(ncol(num.col)+1)),heights=c(3,rep(1,ncol(num.col)))) # configura na janela do grafico a # linha onde sera plotado gradiente da variavel ambiental plot(sort(grad.var[,1]),axes=F,mfg=c(21,1),lwd=10,las=2,lend="butt",xaxt="n",type="h", ylim=c(min(grad.var),max(grad.var))) # plotando o gradiente da variavel ambiental axis(side=2,at=c(min(grad.var[,1]),max(grad.var[,1])),las=2) # plota o eixo vertical com os valores # maximo e minimo da variavel ambiental axis(side=3,at=c(1:nrow(num.col)),rownames(num.col),las=1,cex.axis=0.8) # plota o eixo com o nomes dos # sitios for(i in 1:ncol(num.col)) { # inicia o ciclo que plota a informacao da abundancia ponderada das # especies por paisagem barplot(num.col[,i],bty="l",axisnames=F,axes=FALSE) # plota os eixos horizontais com a abundancia ponderada # das especies mtext(colnames(num.col)[i],side=3,line=-1,adj=1.3,cex=0.9) # nomeia os eixos horizontais com as # especies } mtext("Species abundance",2,outer=T,line=-2) # nomeia o eixo da abundancia das especies } if(glm) { # se @ usuri@ quiser rodar o glm a funcao retorna: return(list(resumo,mod.ind,mod.sp)) # uma lista com o objeto 'resumo' e os sumarios dos glm feitos } else { # dos modelos. Caso glm=F, a funcao retorna apenas: return(resumo) # o objeto resumo, com numero e proporcoes de individuos e especies } } **Arquivo função explor.an:** {{:bie5782:01_curso_atual:alunos:trabalho_final:pvfriedemann:explor_an_functionn.r|explor.an}} **Arquivo de exemplos:** {{:bie5782:01_curso_atual:alunos:trabalho_final:pvfriedemann:pf_exemplos.r|Exemplos}}