Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:solylluvias:start

SOLIMARY GARCÍA HERNÁNDEZ

pequenha.jpg

Sou Colombiana e recentemente ingresse no Mestrado de Ecologia no Instituto de Biociências USP. Durante algum tempo estudei o comportamento de arácnidos (opiliões e escorpioões), acho eles bem interesantes. Atualmente, meu trabalho de mestrado é sobre macro-ecologia da seleção sexual, focado em caracteres morfológicos sexualmente selecionados. O modelo escolhido para realizar ese trabajo são as tesourinhas, ums pequenos insetos que moram nas praias brasileiras.

exec

====== PROPOSTAS DE TRABALHO =====

✔ **Plano A**

Cria en lab

desenvolvimneto.png

Diferentes tipos de pesquisa que envolvem experimentos de laboratório, requerem da criação de animais em condições de laboratório, já sejam eles diretamente os objetos de estudos ou sejam os animais que que eventualmente serão proporcionados aos primeiros como alimento. Para o desenvolvimento de um bom método de criação, e necessário fazer estudos prévios, que possam indicar as melhores condições para sua manutenção. A influência de diferentes tipos de dieta sobre a sobrevivência e a mortalidade são frequentemente estudados, assim como também a duração media de cada estagio do ciclo de vida.

Minha proposta é analisar uma tabela com dados presencia/ausencia (vivo/muerto), registrados diariamente para grupos numerosos de animais sujeitos a diferentes condiçoes alimentares. A tabela, também incluirá o estagio no qual o individuo se encontra no dia de cada observação. A função que vou criar permitirá calcular para a porcentagem de sobrevivência e de mortalidade para cada condição alimentar e calculará a media de duração para cada estagio. Este última função se complementará com os cálculos do intervalo de confiança realizados a partir de re-amostragens a partir dos dados originais da tabela.

✔ **Plano C**

Dimorfismo intrasexual

dimorfismo2.png

As alometrias não lineares são aqueles diagramas de dispersão log-log, do tamanho de uma caraterística morfológica contra o tamanho do corpo, que se desviam de uma linearidade simples. Este tipo de alometria é encontrado em vários grupos de artrópodes, como por exemplo, chifres em besouros, comprimento de pernas em opiliões e cercos em tesourinhas (Knell, 2009). Este tipo de distribuições onde os pontos de dados podem ser divididos em mas do que um grupo, são frequentemente associadas com polifenismo, que está diretamente relacionado ao comportamento. Por exemplo, dimorfismos no tamanho do chifre são ampliamente associadas com as tácticas alternativas de acasalamento exibidas por machos de varias espécies de besouros (Eberhard & Gutierrez, 1991; Emlen & Nijhout, 2000).

Os modelos para discriminar os dos morfos e determinar o swichtpoint (limiar) que os separa, já existem (Knell, 2009 ; Buzatto et al. 2011). No entanto, prévio ao uso da função original fornecida por Rob Knell, é preciso realizar uma análise exploratória dos dados morfométricos, para determinar se realmente um modelo linear simples não se adeque a esses dados. Esta é um procedimento repetitivo, pois deve ser feita para varias características morfológicas do mismo organismo, pois muitas vezes a característica que identifica os morfos es críptica.

A partir da entrada de um conjunto de dados com só duas variáveis (tamanho do corpo e o tamanho de outra característica morfológica), e cargando a função para determinar os morfos e o limiar, minha função vai a permitir uma análise exploratória dessa característica morfológica, e em caso de se identificar que uma regressão linear simples não se ajusta, vai implementar a função de separação de morfos proposta por Knell (2009). A função gerará como resultado os gráficos exploratórios e a seguinte informação: - Se a população é monomórfica o dimórfica e só quando for identificado dimorfismo: -Proporção de machos grandes e pequenos e o valor do limiar. É uma função que agilizaria bastante a análise de dados quando devem ser revisadas as relações entre o tamanho do corpo e mais do que varias outras características morfológicas, e também cuando más do que uma população deve ser comparada.

Comentários

Oi Soli,

Suas propostas, todas, estão muito voltadas para um dado particular. Tanto que em algum momento fala que “uma função que em conjunto proporcione dados para varias populações”. A proposta C é que me parece mais útil e factível, mas tente se desapegar de um dado específico ou sua função só servirá para analisar aqueles dados e nada mais. Essa não é a ideia, vc. pode até usar um dado específico para testá-la, mas ela deve ser mais geral em sua aplicação. Uma forma boa de colocar é: “minha função vai implementar o modelo e limiar de separação entre morfos em populações de artrópodes (se e que pode!) apresentado por Buzato 2011 etc…”. Apresente melhor o metodo (modelo e limiar) para podermos avaliar a viabilidade, quando fizer me informe por email. — Alexandre Adalardo de Oliveira 2013/03/25 10:35

Ale, obrigada pelo comentario. Acho que não me consegue explicar bem, vou dar uma arrumada nisso.

====== Função alometria =====

A função final, alometria, foi criada de forma mais abrangente do que tinha proposto incialmente com o fim de poder ser aplicada também por outros pesquisadores. A função pode ser utilizada por pesquisadores que estiveram procurando relações alómetricas entre características morfólogicas de qualquer organísmo. A fase de exploração de dados é um processo rápido, do qual pode se obter informação que permite prever o tipo de relação alometrica entre as variáveis, e se for o caso, pode até ajudar identificar a presencia de diferentes morfotipos(importante quando os pesquisadores estão procurando por dimorfismo intrasexual, por exemplo). A função ajusta os dados a modelos de alometría contínua linear e no linear. Modelos de alometrias discontinuas são más complexos, e requerem de ajustes dependentes dos dados de entrada, mas, embora estes modelos não tenhan sido aplicados, a informação obtida na fase exploratoria dos datos ajudará ao pesquisador a ajustar melhor esses modelos mais complexos. Finalmente, gracias ao parámetro LOG, fica em mãos do usuario a escolha da opção de sua preferência em medio da polémica atual sobre se usar ou não os dados transformados neste tipo de análise.

====== Página de ayuda =====

alometria                package: Cérebro               R Documentation

  Ajuda a identificar o tipo de relação alométrica entre dados morfométricos
  

Description:
  
A função realiza uma análise exploratória das variáveis, que permite ao usuário explorar visualmente os dados e se questionar sobre a possibilidade de que alometrias não lineares expliquem melhor a relação entre suas variáveis do que uma relação alométrica linear.  A função também ajusta aos dados outros dois modelos para alometrias contínuas no lineares.    



Usage:
  
alometria (x, y, LOG = FALSE, save.graf = FALSE) 
  


Arguments:
  
  
x  		vector numérico de uma medida do tamanho do corpo dos organísmos	

y		vector numérico de uma medida do tamanho da estrutura corporal de interese

LOG		se é TRUE, faz todos os análises e os gráficos com os dados logaritmizados

save.graf	se é TRUE, grava os gráficos de ajuste aos modelos em um arquivo pdf
  

  
Details:
 
A função realiza os seguintes processos:

1. A análise exploratória inclui histogramas de frequência de distribuição com estimação de densidade de Kernel, tanto para as variáveis quanto para a razão entre as duas variáveis (em caso de existir dimorfismo, os valores mínimos da densidade de Kernel são usados para descriminação de morfos, ver Munguía-Steyer, et. al., 2012). Anexam-se também um scatterplot com ajuste a um modelo de regressão linear e os respetivos plots diagnósticos desse modelo. Os oito gráficos desta primeira parte são guardados num archivo pdf.      
2. Os dados são ajustados a outros dois modelos, Weibull Growth Curve Model e Richards Growth Model, usados para identificar alométrias contínuas no lineares.  Para cada um desses dos modelos e também o modelo linear, se cria  um “scatterhist” (ou seja “scatterplots” com histogramas de cada variável nas margens) com a linha de ajuste.  Estes gráficos são visualizados em dispositivos independentes na tela, mas o usuário tem a opção de guardá-los em um único arquivo pdf .  O valor de AIC para cada modelo é calculado, e os resumos de cada modelo fazem parte do objeto de saída da função, permitindo ao usuário conhecer os parâmetros e os coeficientes.
3. Os dos processos anteriores podem ser realizados usando tanto os dados originais quanto os dados transformados, permitindo ao usuário escolher entre essas duas opções, ou incluso, permitindo-lhe comparar os resultados obtidos das duas formas (Ver Packard, 2012).

  

Value:
  
Uma “lista” é exibida na tela com os seguintes componentes: 

comp1 : Resumo do Modelo Linear

comp2 :  Resumo do Modelo de curva de crescimento Weibull (Weibull Growth Curve Model)

comp3 : Resumo do Modelo de crescimento Richards (Richards Growth Model)

comp4 : "Data.frame" com os valores de AIC (Akaike's information criterion) de cada um dos modelos (modelo Linear, modelo de curva de crescimento Weibull, modelo de crescimento Richards)


Warning:
  
As vectores x e y devem ter comprimentos iguais, e não devem ter NAs. Valores cero são aceitados pois representam valores informativos.

Se tiver algum problema no momento de salvar os arquivos pdf, é recomendado limpar a área de trabalho antes e executar a função novamente. 

O pacote NRAIA depende de lattice, mas NRAIA não pode instalá-o en versões R anteriores à v2.15.3  (ex. v2.15.1).

É recomendado que os objetos de entrada tenham mas do que 100 observações , pois as vezes longitudes menores não são suficientes para convergir o algoritmo dos modelos usados, e torna erro.

Note:  
  
De ser preciso os pacotes "NRAIA" e "stats" serão instalados durante a execução da função.

Os dados usados no exemplo correspondem a medidas morfométricas de machos de Serracutisma proximum. Dados originais proporcionados por Roberto Munguía-Steyer.


Modelos de alometria no contínua não foram incorporados à função devido ao grado de complexidade. No entanto, é importante que o usuario tenha em conta que otros modelos de alometrías no lineares podem ter um melhor ajuste a os dados.
  


Author(s):
  
Solimary García Hernández
solimarygh@usp.br

  


References:

Buzatto, et. al. 2011. Conditional male dimorphism and alternative reproductive tactics in a Neotropical arachnid (Opiliones). Evolutionary Ecology, 25:331-349

Knell, R.J. 2009. On the analysis of non-linear allometries. Ecological Entomology, 34:1-11.  

Munguía-Steyer, et. al. 2012. Male dimorphism of a neotropical arachnid: harem size, sneaker opportunities, and gonadal investment. Behavioural Ecology, 23:827-835

Packard, G.C. 2012. Is non-loglinear allometry a statistical artifact?. Biological Journal of teh Linnean Society, 107:764-773

A função scatterhist que aqui usada está disponível na página http://www.r-bloggers.com/example-10-3-enhanced-scatterplot-with-marginal-histograms/


  
See Also:
  
  
selfStart {stats} 	Construct Self-starting Nonlinear Models	 http://stat.ethz.ch/R-manual/R-patched/library/stats/html/selfStart.html Autores José Pinheiro and Douglas Bates
  
SSweibull {stats}	Self-Starting Nls Weibull Growth Curve Model	 http://stat.ethz.ch/R-manual/R-patched/library/stats/html/SSweibull.html Autor Douglas Bates

SSRichard {NRAIA}  	Richards Growth Model				 http://cran.r-project.org/web/packages/NRAIA/NRAIA.pdf                   Autor  Douglas Bates

  
Examples:
Para rodar o exemplo, é necessário baixar na área de trabalho o arquivo anexo na parte final da página, nomeado "exercicio alometria.csv". 

morfos<-read.csv(file="exercicio_alometria.csv", header=T, sep=",")
x<-morfos[,1] 
y<-morfos[,2]
alometria (x,y, LOG = FALSE, save.graf =  FALSE)
alometria (x,y, LOG = TRUE, save.graf =  TRUE)

====== Código da função =====

 alometria <-function(x,y, LOG=FALSE, save.graf=FALSE)
  
{
  #Classe dos objetos
  if(class(x)!="numeric") stop("\t", "Erro: O objeto x não é da classe numeric!\n")
  if(class(y)!="numeric") stop("\t", "Erro: O objeto y não é da classe numeric!\n")
  
  #presença de NA
  if(any(is.na(x)==TRUE)) stop("\t", "Erro: O Objeto x presenta NAs! Elimine os NAs tendo en conta que tem que liminar também o valor correspondente no objeto y\n")
  if(any(is.na(y)==TRUE)) stop("\t", "Erro: O objeto y presenta NAs! Elimine os NAs tendo en conta que tem que liminar também o valor correspondente no objeto x\n")
  
  #longitude dos objetos
  if(length(x)!=length(y)) stop("\t", "Erro: O número de observações das duas variáveis deve ser igual!\n")
  
  if(length(x)<100) {cat("\t", length (x),"Advertência: O número mínimo de observações para as duas variáveis é pequeno, é recomendado ter mas do que 100 observações, pois as vezes longitude menores não são suficientes para convergir o algoritmo dos modelos usados!\n")}
  cat("\t", "Advertência: As unidades de medida  x e y, devem ser as mesmas!\n")
 
  
  
  ###################################MODELOS############################################
  # verificando se os pacotes NRAIA, stats já estão instaladOs, de não ser assim,  os pacotes necessarios serão instalados
  install <- function(pacote)
  {is.element(pacote, installed.packages()[,1])}
  
  if(install("NRAIA")==FALSE)
  {install.packages("NRAIA")
   cat("\t", "O pacote NRAIA foi instalado!\n")}
  if(install("NRAIA")==TRUE)
  {require ("NRAIA", quietly=TRUE)} #require foi creada para usar dentro de funções
  
  # instalando o pacote stats
  if(install("stats")==FALSE)
  {install.packages("stats")
   cat("\t", "O pacote stats foi instalado!\n")}
  if(install ("stats")==TRUE)
  {require  ("stats", quietly=TRUE)}
  

  ##########################Cargando a função Scatterhist######################################
  #combina um scatterplot com histogramas de cada variável, mais permite plotar linhas sobre o gráfico. 
  
  scatterhist <- function(x, y, xlab= "",ylab= "", plottitle="", 
                          xsize=1, cleanup=TRUE,...){
    
    def.par <- par(no.readonly = TRUE)
    zones <- matrix(c(1,1,1, 0,5,0, 2,6,4, 0,3,0), ncol = 3, byrow = TRUE)
    layout(zones, widths=c(0.3,4,1), heights = c(1,3,10,.75))
    xhist <- hist(x, plot = FALSE)
    yhist <- hist(y, plot = FALSE)
    top <- max(c(xhist$counts, yhist$counts))
    par(xaxt="n", yaxt="n",bty="n",  mar = c(.3,2,.3,0) +.05)
    plot(x=1,y=1,type="n",ylim=c(-1,1), xlim=c(-1,1))
    text(0,0,paste(plottitle), cex=2)
    plot(x=1,y=1,type="n",ylim=c(-1,1), xlim=c(-1,1))
    text(0,0,paste(ylab), cex=1.5, srt=90)
    plot(x=1,y=1,type="n",ylim=c(-1,1), xlim=c(-1,1))
    text(0,0,paste(xlab), cex=1.5)
    par(mar = c(2,0,1,1))
    barplot(yhist$counts, axes = FALSE, xlim = c(0, top),
            space = 0, horiz = TRUE)
    par(mar = c(0,2,1,1))
    barplot(xhist$counts, axes = FALSE, ylim = c(0, top), space = 0)
    # scatterplot
    par(mar = c(2,2,.5,.5), xaxt="s", yaxt="s", bty="n")
    plot(x, y , pch=19, col="#00000022", cex=xsize, ...)
    if(cleanup) {par(def.par)}
  }
  
    
  if(LOG==TRUE) 
    {
    
    ########################Análise exploratorio#####################################
    
    LnX<-log(x)
    LnY<-log(y)
    
    par(las=1)
    pdf("Análise exploratorio dados log-log.pdf")
    
    hist(LnX, probability=T, xlab="Log(tamanho do corpo)",
         ylab="Densidade de frecuencia relativa", main="Ocorre bimodalidade no tamanho do corpo?")
    denLnX<-density(LnX) #estima densidad de Kernel
    lines(denLnX, lwd=2, col="red")
    
    hist(LnY, probability=T, xlab="Log(tamanho da estrutura)",
         ylab="Densidade de frecuencia relativa", main="Ocorre bimodalidade no tamanho da estrutura?")
    denLnY<-density(LnY)
    lines(denLnY, lwd=2, col="red")
    
    Lnratio<-LnY/LnX
    hist(Lnratio,probability=T, xlab="Log (tamanho da estrutura)/ Log (tamanho do corpo) ",
         ylab="Densidade de frecuencia relativa", main="Ocorre bimodalidade na razão tamanho estrutura / tamanho corpo?")
    denLnratio<-density(Lnratio)
    lines(denLnratio, lwd=2, col="red")
    
    #calculando rangos e limites para o Scatterplot
    rangeLnX<-max(LnX)-min(LnX)
    rangeLnY <-max(LnY)-min(LnY)
    
    Xlim1<-median(LnX)-(rangeLnY/2)
    Xlim2<-median(LnX)+(rangeLnY/2)
    
    plot(LnX,
         LnY, 
         xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)",
         xlim=c(Xlim1, Xlim2), 
         ylim=c(min(LnY), max(LnY)), main="Os dados tem uma alometria linear?", pch=19, col="#00000022",bty="l") 
    abline(lm(LnY~ LnX),col="red")
    
    #Adicionando plots de diagnóstico para o modelo linear
    plot(lm(LnY~ LnX))    
        
        
    dev.off()
    cat("\t", "Os gráficos para a análise exploratoria de dados foram guardados no arquivo: Análise exploratorio dados log-log.pdf \n")
  
  ############################## Medida de bondad e ajuste: AIC DOS MODELOS####################################
    
    ##### Ajustando os dados a um modelo linear simples#####
        
    summ.linear.log<-summary (Mod.Linear.log <- lm(LnY ~ LnX))
    AIC.linear.log<-AIC(Mod.Linear.log)
   
    
    ######### Modelos de Allometria no linear###########
    
    #Usando a função SSweibull do pacote "stats" para alometria no lineares
    summ.SSWeibull.log<-summary(Mod.SSWeibull.log <- nls(LnY ~ SSweibull(LnX, Asym, Drop, lrc, pwr))) 
    AIC.SSWeibull.log<-AIC (Mod.SSWeibull.log)
     
    # Usando a função SSRichards do pacote "NRAIA" para alometria no lineares
    summ.SSRichards.log<-summary(Mod.SSRichards.log <- nls(LnY ~ SSRichards(LnX, Asym, xmid, scal, lpow)))
    AIC.SSRichards.log<-AIC (Mod.SSRichards.log)
    
    
    
  ################################RESULTADOS########################################
  #####GRAFICOS####### 
    x<-LnX
    y<-LnY
    
    x11()
    scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste modelo linear", xsize =2, cleanup=FALSE)
    abline(lm(y~x), col="red")
   
    x11()
    scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste Weibull Growth Curve Model", xsize =2, cleanup=FALSE)
    #Asym-Drop*exp(-exp(lrc)*x^pwr)
    curve ((coef (Mod.SSWeibull.log)[1])-coef (Mod.SSWeibull.log)[2]*exp(-exp(coef (Mod.SSWeibull.log)[3])*x^coef (Mod.SSWeibull.log)[4]), add=TRUE, col="red")
    
    x11()   
    scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste Richards Growth Model", xsize =2, cleanup=FALSE)
    #Asym*(1+exp((xmid-input)/scal))^(-exp(-lpow))
    curve(coef(Mod.SSRichards.log)[1]*(1+exp((coef(Mod.SSRichards.log)[2]-x)/coef(Mod.SSRichards.log)[3]))^(-exp(-coef(Mod.SSRichards.log)[4])),add=TRUE, col="red")
    
    
    if(save.graf==TRUE) 
    {
      par(las=1)
      pdf("Gráficos com ajuste aos modelos (dados logaritmizados).pdf")
      scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste modelo linear", xsize =2, cleanup=FALSE)
      abline(lm(y~x), col="red")
      scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste Weibull Growth Curve Model", xsize =2, cleanup=FALSE)
      curve ((coef (Mod.SSWeibull.log)[1])-coef (Mod.SSWeibull.log)[2]*exp(-exp(coef (Mod.SSWeibull.log)[3])*x^coef (Mod.SSWeibull.log)[4]), add=TRUE, col="red")
      scatterhist(x, y, xlab= "Log (tamanho do corpo)",ylab= "Log (tamanho da estrutura)", plottitle="Ajuste Richards Growth Model", xsize =2, cleanup=FALSE)
      curve(coef(Mod.SSRichards.log)[1]*(1+exp((coef(Mod.SSRichards.log)[2]-x)/coef(Mod.SSRichards.log)[3]))^(-exp(-coef(Mod.SSRichards.log)[4])),add=TRUE, col="red")
      dev.off()
      cat("\t", "Os gráficos com ajuste aos modelos foram guardados no archivo: Gráficos com ajuste aos modelos (dados logaritmizados).pdf\n")
    
    }
      
    AIC<-c(AIC.linear.log, AIC.SSWeibull.log, AIC.SSRichards.log)
    resultadoAIC<-data.frame(AIC) 
    rownames(resultadoAIC)<-c("Modelo Linear", "Weibull Growth Curve Model", "Richards Growth Model")
    cat("\t", "Lembre-se que valores mínimos do criterio de informção de Akaike identifican os modelos com melhor ajuste a seus dados\n")
    
    return(list("Summary:  Modelo Linear"=summ.linear.log,"Summary:  Weibull Growth Curve Model"=summ.SSWeibull.log,"Summary:  Richards Growth Model"=summ.SSRichards.log, "Criterio de informação de Akaike"=resultadoAIC))
    
                 
  }
  else
  {
    
    ########################Análise exploratorio#####################################
    par(las=1)
    pdf("Análise exploratorio dos dados originais.pdf")
    
    #Dimor fismo em tamanho de corpo?
    hist(x, probability=T, xlab="Tamanho do corpo",
    ylab="Densidade de frecuencia relativa", main="Ocorre dimorfismo no tamanho do corpo?")
    denX<-density(x)
    lines(denX, lwd=2, col="red")
   
    
    #Bimodalidade em tamanho do orgão?
    hist(y, probability=T, xlab="Tamanho da estrutura",
    ylab="Densidade de frecuencia relativa", main="Ocorre bimodalidade no tamanho da estrutura?")
    denY<-density(y)
    lines(denY, lwd=2, col="red")
   
    
    #Bimodalidade na razão orgão / tamanho corpo? 
    ratio<-x/y
    hist(ratio,probability=T, xlab="Tamanho da estrutura/ Tamanho do corpo",
     ylab="Densidade de frecuencia relativa", main="Ocorre bimodalidade na razão tamanho estrutura / tamanho corpo? ")
    denRatio<-density(ratio)
    lines(denRatio, lwd=2, col="red")
    
        
    ##Scatterplot####
    plot(x, y, 
    xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", main="Os dados tem uma alometria linear?", pch=19, col="#00000022",bty="l") 
    abline (lm(y~x), col="red")
    
    #Adicionando plots de diagnóstico
    plot(lm(y~ x)) 
    
    dev.off()
    
    cat("\t", "Os gráficos para a análise exploratoria de dados foram guardados no archivo: Análise exploratorio com dados originais.pdf. \n")
 
    ##############################AJUSTE A MODELOS####################################
    

    # Testando um modelo linear simples:
    summ.linear <-summary (linear.model <- lm(y ~ x))
    AIClinear<-AIC(linear.model)
    
    #Analisando si há alometria no linear com as funções SSRichards, SSweibull
    
    # Usando a função SSweibull# do pacote "stats" para ajuste de alometrias no lineares
    summ.SSWeibull<-summary(Mod.SSWeibull <- nls(y ~ SSweibull(x, Asym, Drop, lrc, pwr))) 
    AICSSWeibull<-AIC (Mod.SSWeibull)
    
    # Usando a função SSRichards# do pacote "NRAIA" para ajuste de alometrias no lineares
    summ.SSRichards<-(summary(Mod.SSRichards <- nls(y ~ SSRichards(x, Asym, xmid, scal, lpow))))
    AICSSRichards<-AIC (Mod.SSRichards)
    
   
    ################################RESULTADOS########################################
    #####GRAFICOS#######
    x11()
    scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste modelos", xsize =2, cleanup=FALSE)
    abline(lm(y~x), col="red")
    x11()
    scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste Weibull Growth Curve Model", xsize =2, cleanup=FALSE)
    curve (coef (Mod.SSWeibull)[1]-coef (Mod.SSWeibull)[2]*exp(-exp(coef (Mod.SSWeibull)[3])*x^coef (Mod.SSWeibull)[4]), add=TRUE, col="red")
    x11()
    scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste Richards Growth Model", xsize =2, cleanup=FALSE)
    curve(coef(Mod.SSRichards)[1]*(1+exp((coef(Mod.SSRichards)[2]-x)/coef(Mod.SSRichards)[3]))^(-exp(-coef(Mod.SSRichards)[4])), add=TRUE, col="red")
    
    
    if(save.graf==TRUE) 
      {
      par(las=1)
      pdf("Gráficos com ajuste aos modelos.pdf")
      
      scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste modelos", xsize =2, cleanup=FALSE)
      abline(lm(y~x), col="red")
      scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste Weibull Growth Curve Model", xsize =2, cleanup=FALSE)
      curve (coef (Mod.SSWeibull)[1]-coef (Mod.SSWeibull)[2]*exp(-exp(coef (Mod.SSWeibull)[3])*x^coef (Mod.SSWeibull)[4]), add=TRUE, col="red")
      scatterhist(x, y, xlab= "Tamanho do corpo",ylab= "Tamanho da estrutura", plottitle="Ajuste Richards Growth Model", xsize =2, cleanup=FALSE)
      curve(coef(Mod.SSRichards)[1]*(1+exp((coef(Mod.SSRichards)[2]-x)/coef(Mod.SSRichards)[3]))^(-exp(-coef(Mod.SSRichards)[4])), add=TRUE, col="red")
      dev.off()
      cat("\t", "Os gráficos com ajuste aos modelos foram guardados no archivo: Gráficos com ajuste aos modelos.pdf\n")
    }
   
    AIC<-c(AIClinear, AICSSWeibull, AICSSRichards)
    resultadoAIC<-data.frame(AIC) 
    rownames(resultadoAIC)<-c("Modelo Linear", "Weibull Growth Curve Model", "Richards Growth Model")
    cat("\t", "Lembre-se que valores mínimos do criterio de informção de Akaike identifican os modelos com melhor ajuste a seus dados\n")
      
    return(list("Summary:  Modelo Linear"=summ.linear,"Summary:  Weibull Growth Curve Model"=summ.SSWeibull,"Summary:  Richards Growth Model"=summ.SSRichards, "Criterio de informação de Akaike"=resultadoAIC))
     }
  
  }

====== Exercício alometria =====

exercicio_alometria.csv Click direito, guardar arquivo.

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