====== 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}}