Ferramentas do usuário

Ferramentas do site


cursos:ecor:05_curso_antigo:r2011:alunos:trabalho_final:luiz:start

Luiz Henrique Martins Fonseca

foto.jpg

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.

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

cursos/ecor/05_curso_antigo/r2011/alunos/trabalho_final/luiz/start.txt · Última modificação: 2020/07/27 18:48 (edição externa)