====== Luiz Henrique Martins Fonseca ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:luiz:foto.jpg?200|}} Mestrando em botânica pela USP, sou aluno da Prof. Dra. Lúcia Lohmann. O título do meu projeto é Filogenia Molecular do Gênero Dolichandra s.l. (Bignoniaceae). [[.:exec]] ===== Proposta de Trabalho Final A ===== Seleção de modelo que descreva a área foliar de uma espécie A área foliar é um dos parâmetros mais utilizados para se entender diversos aspectos da performance das plantas, como utilização de água e luz, entre varias outras características. Atualmente existem diversos métodos que permitem a estimativa da área foliar por equipamentos, contudo são destrutivos e pouco práticos em campo. Uma alternativa à eles é o método não-destrutivos que utiliza análises de regressão baseadas nas dimensões das folhas, o que possibilita uma estimativa barata, fácil e que permite diversas tomadas de medidas do mesmo indivíduo durante seu desenvolvimento. Para tanto minha função pretende selecionar modelos teóricos que melhor descrevam a área foliar de uma determinada espécie. Para isso utilizarei os parâmetros comprimento (C), largura (L) e C*L das folhas e pré-selecionei como modelos default: eliptico, linear e potencial. O teste será feito pelo método de regressão e para a avaliação utilizarei estimativas baseadas nos parâmetros usados nos modelos e estimativas da área foliar de outra natureza, como pelos métodos por massa ou digitalização. **Comentários** Bem interessante! Mas a ideia é apenas testar a adequação do modelo, ou estimar a area para dados que não tem estimativas por massa ou digitalização? A função poderia fazer ambos, inclusive, recebendo dados de folha com área estimada, e folhas à estimar, mas acho que apenas testar os diversos modelos já seria bem interessante. --- //[[macfabio@gmail.com|Fabio de A. Machado]] 2011/04/06 19:09// **Resposta** A idéia é fazer uma função que teste a adequeção dos dados (um subconjunto de folhas que eu tenho tanto as medidas de comprimento e largura, quanto a área estimada por técnicas mais dispendiosas) a um modelo. Uma vez o modelo escolhido, poderei estimar a área do restante dos dados em que apenas as medidas de largura e comprimento foram tomadas. ** Após a entrega** Função muito legal, e demonstra que você entende muito o modelo de regressão linear gaussiana. Só não ficou claro o propósito da randomização. Seria uma simulação da hipótese nula de ausência de efeito? ===== Página de ajuda ===== leaf package:unknown R Documentation Estima a área foliar Description: Função que estima a área foliar de uma espécie com base em medidas da folha. Primeiramente a função escolha a variável que melhor descreve a área com base no ajuste a uma reta de regressão pelo critério de menor valor da somatória de resíduos quadrados - RSS. Uma vez obtidos os coeficientes, a função estima a área foliar de uma segunda matriz. Com leaf também é possível simular valores de área com o mesmo n amostral utilizado e verificar a variação apresentada. Usage: leaf(area, matriz1, matriz2, reps=0) Arguments: area Um vetor com medidas da área foliar. matriz1 Uma matriz com medidas foliares dos mesmos indivíduos do argumento area onde os indivíduos são as linhas e as variáveis são as colunas. matriz2 Uma matriz com um novo conjunto de medidas foliares para as quais a área é desconhecida onde os indivíduos as linhas e as variáveis são as colunas. reps Número de repetições da simulação. Como defeault a simulação não é feita. Details: O critério escolhido para selecionar a variável é o de menor valor de somatório dos resíduos quadrados. A ordem dos valores de área no vetor deve ser a mesma dos indivíduos mensurados na matriz1. As colunas em matriz1 e matriz2 devem conter as mesmas variáveis. Value: Um objeto da classe list. comp1 : coluna com menor valor de RSS. comp2 : RSS e coeficientes da regressão. comp3 : Vetor com as áreas estimadas. comp4 : Intervalo da distribuição dos valores simulados entre 2.5% e 97.5%. Note: Cabe ao usuário definir quais são as medidas foliares que melhor poderiam descrever a área das folhas na espécie em estudo. Author(s): Luiz Henrique Martins Fonseca References: Kemp, C.D. 1960. Methods of Estimating the Leaf Area of Grasses from Linear Measurements. Annals of Botany 24(4): 491-499. Examples: area <- c(63.00, 71.30, 72.85, 83.74, 95.40, 95.40, 104.32, 114.24, 116.61, 122.83) matriz1 <- matrix(c(14.0, 15.5, 15.5, 15.8, 15.9, 15.9, 16.3, 16.8, 16.9, 17.3, 4.5, 4.6, 4.7, 5.3, 6.0, 6.0, 6.4, 6.8, 6.9, 7.1), nrow = 10) matriz2 <- matrix(c(14.4, 14.8, 14.9, 15.0, 15.1, 15.6, 15.6, 15.6, 16.3, 16.8, 5.4, 5.4, 5.7, 5.7, 6.3, 6.3, 6.6, 6.6, 7.2, 8.1), nrow = 10) leaf(area, matriz1, matriz2, reps=500) ===== Função ===== Resolvi mudar um pouco a proposta inicial e não mais buscar modelos, mas sim variáveis que estejam mais relacionadas com a área foliar. O modelo amplamente utilizado na literatura é o linear, em detrimento de modelos quadráticos ou cúbicos. leaf - linear estimation of area leaf <- function(area, matriz1, matriz2, reps=0) ########## Busca da funcao que descreve a area foliar em funcao da uma variavel que tenha o menor valor de RSS ############ { result <- matrix(ncol=3,nrow=dim(matriz1)[2]) ### cria uma matriz para armazenar resultados for(i in 1:dim(matriz1)[2]) { lm <- lm(area~matriz1[,i]) result[i,1] <- sum(lm$residuals^2) ##coloca na primeira coluna o valor da sum(residuos^2) result[i,2:3] <- lm$coefficients ##coloca na segunda e terceira colunas os coeficients col <- which.min(result[,1]) ret <- result[result[,1]==min(result[,1]),] names(ret) <- c("RSS", "Intercepto", "inclinacao") } ########## Estimativa de área ########## area.est <- ret[2]+matriz2[,which.min(result[,1])]*ret[3] ########## Simulacao ########## if(reps>0) { sim <- matrix(ncol=3, nrow = reps) for(i in 1:reps) { ran <- rnorm(length(area), mean(area), sd(area)) lm <- lm(ran~matriz1[, which.min(result[,1])]) ## ajusta o modelo para cada repeticao sim[i,1] <- sum(lm$residuals^2) #guarda a somatoria dos residuos quadrados na primeira coluna sim[i,2:3] <- as.numeric(coef(lm)) # guarda os coefs na segunda e terceira colunas ret1 <- qnorm(c(0.025, 0.975), mean(sim[,1]), sd(sim[,1])) ## valores entre 2.5% e 97.5% ret2 <- qnorm(c(0.025, 0.975), mean(sim[,2]), sd(sim[,2])) ## valores entre 2.5% e 97.5% ret3 <- qnorm(c(0.025, 0.975), mean(sim[,3]), sd(sim[,3])) ## valores entre 2.5% e 97.5% } ########## Retorno da analise com simulacao ############ simula <- matrix(c(ret1, ret2, ret3), ncol = 3, nrow = 2) dimnames(simula) <- list(c("2.5%", "97.5%"), c("RSS", "Intercepto", "inclinacao")) a <- list(col, ret, area.est, simula) names(a) <- c("variavel", "coeficientes", "area.estimada", "simulacao") return(a) } if(reps==0) { ########## Retorno da analise sem simulacao ############ a <- list(col, ret, area.est) names(a) <- c("variavel", "coeficintes", "area.estimada") return(a) } } ===== Código da função ===== {{:bie5782:01_curso_atual:alunos:trabalho_final:luiz:leaf.r|codigo-leaf}}