Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2018:alunos:trabalho_final:marcos.martins.silva:start

MARCOS MARTINS

maco2.jpg

Mestrando em Ecologia, Instituto de Biociências, USP.

Meu interesse principal está na interface das áreas de Ecologia e Evolução, e busco compreender como interações endossimbióticas estão em “corda-bamba”, ora desenvolvendo conflito, ora cooperação.

O título da minha dissertação é: “Prevalência da bactéria endossimbionte Wolbachia em assembléias de drosofilídeos neotropicais”, orientado pelo Prof. Dr. Rodrigo Cogni.

Meus Exercícios

Página com os meus exercícios resolvidos: Exercícios

Proposta de Trabalho Final

Plano A - Plantas Companheiras e Antagonistas

Contextualização

Cultivares apresentam crescimento e desempenho diferenciado quando cultivados com outros tipos de plantas capazes de interagir com elas. Na produção orgânica, um dos objetivos é maximizar a proximidade do cultivo de plantas capazes de trazer benefício para uma planta de interesse, seja pelo favorecimento ao crescimento, seja pelo repelimento de pragas; e, tentar reduzir a proximidade de plantas que podem interagir antagonisticamente. Dessa forma, faz necessário reconhecer a época do cultivo de cada planta e tentar associar a ela, plantas companheiras de mesmo período.

Descrição

A função irá ler uma matriz de correlação de benefício entre plantas, em que as linhas representam as plantas de interesse (cultivares) e as colunas as plantas com associação. Para cada linha é apresentado o valor da benefício que cada planta da coluna trás para esse planta, sendo que 1 apresenta a maior benefício, 0 neutralidade na associação e -1 o pior benefício (a interação é antagonística). Dois vetores de datas apresentando, respectivamente, o início e o fim do período de plantio dispostos na ordem dos objetos das linhas da matriz, serão lidos para encontrar o intervalo do período de plantio. Para cada cultivar a função encontra o intersecto de intervalo de plantio com as associações. A razão entre essa intersecção e o intervalo do cultivar de interesse da um valor de 0 a 1. A função constrói uma matriz com essas razões e ela é multiplicada pela matriz de associação de entrada na função. A função retorna essa matriz ou, se informado um cultivar de interesse (target), retorna as cinco melhores e as cinco piores associações a esse cultivar de interesse, mostrando o intervalo de plantio e os valores da associação de forma gráfica.

Plano B - Fronteira de Possibilidade de Produção

Contextualização

Um dos princípios mais básicos em Economia é que os recursos são escassos, e que existem trade-offs na produção de um bem em detrimento de outro. Para examinar esses trade-offs, os economistas muitas vezes usam o modelo conhecido como fronteira de possibilidade de produção. Nela simplificamos a nossa compreensão dos trade-offs ao considerar uma economia de apenas dois bens. Em Ecologia, esse mesmo princípio pode ser aplicado para o uso de dois recursos por um organismo, em que a escolha e obtenção de um recurso implica na não obtenção do outro.

Página de Ajuda - Plano A

Seguindo a proposta de trabalho com o Plano A - Plantas Companheiras e Antagonistas

consortia                 package:nenhum                        R Documentation

Uma função que encontra as cinco melhores e as cinco piores associações 
para um cultivar de interesse dada a associação e maior intervalo 
em que essas plantas podem ser cultivadas juntas no campo. Se não especificado, 
a função retorna a matriz final de associação com peso pelo período de plantio conjunto. 

Usage

consortia(target, data, start, end)

Arguments

target = um cultivar de interesse, que é um objeto das linhas (rownames) dentro 
da matriz de associação (data). 

data = Uma matriz com as linhas sendo os elementos de interesse e as colunas os
elementos que irão interagir (associação).

start = Vetor de datas de início de plantio. Deve possuir a mesma ordem dos objetos
(rownames) da matriz (data).

end = Vetor de datas do final de plantio. Deve possuir a mesma ordem dos objetos 
(rownames) da matriz (data).

Value

Para cada cultivar a função encontra o intersecto de intervalo de plantio com as associações. A razão 
entre essa intersecção e o intervalo do cultivar de interesse da um valor de 0 a 1. A função constrói 
uma matriz com essas razões e ela é multiplicada pela matriz de associação de entrada na função. 
Se não especificado o target da função, ela retorna por default a matriz resultante dessa multiplicação.
Se especificado, a função retorna uma lista contendo dois data frame com cinco melhores e as cinco 
piores associações, mostrando o intervalo de plantio que elas podem ser cultivadas juntas e 
graficamente mostrando o valor das associações. 

Author

Marcos Aurélio Martins Oliveira da Silva

Examples

No final da pagina do Wiki há um arquivo (script_function_consortia.r) 
que consiste na matriz e nos vetores de entrada na função. 
Lá os exemplos abaixo já estão inseridos no arquivo. 

consortia(target = "alface", data=matq, start=datas.inicio, end=datas.fim)
consortia(target = "beterraba",data=matq, start=datas.inicio, end=datas.fim)
consortia(data=matq, start=datas.inicio, end=datas.fim)

Código da Função - Plano A

#################### CONSORTIA FUNCTION ####################
consortia <- function(target = "final.matrix", data, start, end){
      #################### IMPORTANDO PACOTES #####################
      library(lubridate)
      library(lattice)
      #################### VETOR DE DATAS ####################
      period <- data.frame(as.character(start),as.character(end)) #cria um data frame com os vetores de datas
      colnames(period) <- c("start", "end") # nomeia início e fim do período de plantio
      rownames(period) <- rownames(data) # da o mesmo nome das linhas do data (uma matriz) para as linhas do data frame de periodo
      period[,1] <- as.Date.character(period[,1]) #Vetor de datas do início do plantio
      period[,2] <- as.Date.character(period[,2]) #Vetor de datas do final do plantio
      
      diff <- period$end - period$start  # diferença entre os vetores de inicio e fim de plantio
      period$interval <- as.interval(x = diff, start = period$start) # intervalo da classe lubridate entre inicio e fim
      
      if (length(start) == length(end)){
            ratio.date = matrix(NA, nrow = length(start), ncol = length(start))
            intersect.interval = matrix(NA, nrow = length(start), ncol = length(start)) 
            rownames(intersect.interval) <- rownames(data) 
            colnames(intersect.interval) <- rownames(data) 
      }else{
            print("Os vetores de datas NÃO são compatíveis")
      }
      
      for (j in 1:length(start)) {
            nomin = period$interval[j]
            x = as.numeric(nomin)
            for (i in 1:length(start)) {
                  associate = intersect(nomin, period$interval[i])
                  intersect.interval[i,j] <- as.character(associate) 
                  y = as.numeric(associate)
                  ratio.date[i,j] = y/x
            }
      }
      
      final.matrix <- data*ratio.date
      fmatrix <- final.matrix
      #################### TARGET COMO DEFAULT - MATRIZ COMPLETA ####################
      if(target == "final.matrix"){
            resultado <- t(final.matrix) 
      }else{
            #################### TARGET COMO CULTIVAR ESCOLHIDO ####################
            # Encontrando as 5 melhores associações para o cultivar escolhido
            cons <- fmatrix[, target]
            cons.rank <- rank(x = cons, na.last = NA, ties.method = "first")
            best.consortia <- cons[names(cons.rank[cons.rank >= length(cons.rank) - 4])]
            dates.best.consortia <-  intersect.interval[names(best.consortia),target]
            # Encontrando as 5 piores associações para o cultivar escolhido
            conf <- fmatrix[, target]
            conf.rank <- rank(x = conf, na.last = NA, ties.method = "first")
            worst.consortia <- conf[names(conf.rank[conf.rank <= 5])]
            dates.worst.consortia <-  intersect.interval[names(worst.consortia),target]
            #################### RESUMO E APRESENTAÇÃO GRÁFICA####################
            rgb.palette <- colorRampPalette(c("orchid4","white", "lightseagreen"), space = "rgb")
            
            bassoc <- rbind(best.consortia,rep(0,5))
            
            plot1 <- levelplot(bassoc, par.settings = list(axis.line = list(col = "transparent"), xaxt = "n"),
                               scales = list(x = list(labels = NULL), tck = c(0,0)),
                               main="",xlab="Companheiras", ylab="", col.regions=rgb.palette(200),
                               cuts=0, at=seq(-1,1,0.05))  
            
            wassoc <- rbind(rep(0,5), worst.consortia)
            
            plot2 <- levelplot(wassoc, par.settings = list(axis.line = list(col = "transparent")),
                               scales = list(x = list(labels = NULL), y = list(alternating = 2), tck = c(0,0)), colorkey = FALSE,
                               main="",xlab="Antagonistas", ylab= "", col.regions=rgb.palette(200),
                               cuts=0, at=seq(-1,1,0.05))  
            
            best.consortia.df <- cbind(best.consortia, as.character(dates.best.consortia))
            colnames(best.consortia.df) <- c("Companheiras", "Plantio Conjunto no Campo")
            worst.consortia.df <- cbind(worst.consortia,dates.worst.consortia)
            colnames(worst.consortia.df) <- c("Antagonicas", "Plantio Conjunto no Campo")
            
            
            title <- cat("\n\n\n\t ***Companheiras e Antagônicas*** \n\n\t")
            subtitle <- cat("\n\t Os melhores e piores cultivares para se plantar com", target, "são:\n")
            con <- list(title, subtitle, best.consortia.df, worst.consortia.df)
            
            resultado = con
            list(print(plot1, position = c(0.0, 0, 0.65, 1), more = TRUE),
                 print(plot2, position = c(0.45, 0, 1, 1)))
      }
      return(resultado)
}

Arquivo da Função - Plano A

Arquivo da função

consortia.r

Arquivo de exemplo de uso da função consortia

script_function_consortia.r

Vitor Rios

Marcos, suas propostas estão fora do padrão requisitado, e principalmente, a ausência do pseudocódigo ou uma descrição do que a função vai fazer não permite entender o como elas devem funcionar. Sua proposta B, principalmente, precisa ser mais elaborada. Por favor, formate as duas corretamente, e me envie um email para eu avaliar novamente Vitor Rios

Alexandre Adalardo de Oliveira 2018/05/17 17:07 Caro Marcos, realmente a falta de um pseudocódigo dificulta o entendimento do que a função fará e a dificuldade de implementação de código associada. Sugiro fortemente que comece por isso. Poste aqui para podermos avaliar, vai ajudar o desenvolvimento da função. Há necessidade tb de esclarecer melhor a terminologia utilizada. A descrição que faz dos argumentos não facilita tb o entendimento. Por exemplo, o que são “elementos de interesse”… eu conversei contigo pessoalmente e por isso estou entendendo melhor. Aguardamos o seu retorno, principalmente com relação ao pseudocódigo da proposta A, que me parece mais promissora.

05_curso_antigo/r2018/alunos/trabalho_final/marcos.martins.silva/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)