Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2019:alunos:trabalho_final:pvfriedemann:explor.an

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: explor.an

Arquivo de exemplos: Exemplos

05_curso_antigo/r2019/alunos/trabalho_final/pvfriedemann/explor.an.txt · Última modificação: 2020/08/12 06:04 (edição externa)