Ferramentas do usuário

Ferramentas do site


03_apostila:06-modelos

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
03_apostila:06-modelos [2020/08/12 13:25]
adalardo
03_apostila:06-modelos [2020/08/20 16:10] (atual)
adalardo
Linha 33: Linha 33:
  
 A função utilizada para construir modelos lineares de regressão é a função '''​lm'''​ que tem os seguintes argumentos principais: A função utilizada para construir modelos lineares de regressão é a função '''​lm'''​ que tem os seguintes argumentos principais:
-<​code>​+<​code ​rsplus>
             lm( formula, data, weights, subset, na.action )             lm( formula, data, weights, subset, na.action )
 </​code>​ </​code>​
Linha 43: Linha 43:
  
 Vejamos um exemplo simples: Vejamos um exemplo simples:
-<​code>​+<​code ​rsplus>
 > egr = read.csv("​egrandis.csv",​header=T) > egr = read.csv("​egrandis.csv",​header=T)
 > egr[1,] > egr[1,]
Linha 114: Linha 114:
           - coeficiente de determinação e coef. de det. ajustado;           - coeficiente de determinação e coef. de det. ajustado;
           - teste //F// geral do modelo.           - teste //F// geral do modelo.
-<​code>​+<​code ​rsplus>
 > summary( hipso1 ) > summary( hipso1 )
  
Linha 137: Linha 137:
  
   * **anova:** a função '''​anova'''​ apresenta a Tabela de análise de variância, tendo as variáveis preditoras como fatores:   * **anova:** a função '''​anova'''​ apresenta a Tabela de análise de variância, tendo as variáveis preditoras como fatores:
-<​code>​+<​code ​rsplus>
 > anova( hipso1 ) > anova( hipso1 )
 Analysis of Variance Table Analysis of Variance Table
Linha 161: Linha 161:
  
 O valor default do argumento ''​which''​ é '''​which = c(1:3, 5)'''​. O valor default do argumento ''​which''​ é '''​which = c(1:3, 5)'''​.
-<​code>​+<​code ​rsplus>
 > plot( hipso1 ) > plot( hipso1 )
 Hit <​Return>​ to see next plot: Hit <​Return>​ to see next plot:
Linha 171: Linha 171:
  
   * **coef:​** ​ a função '''​coef'''​ retorna os coeficientes de regressão do modelo linear:   * **coef:​** ​ a função '''​coef'''​ retorna os coeficientes de regressão do modelo linear:
-<​code>​+<​code ​rsplus>
 > coef( hipso1 ) > coef( hipso1 )
 (Intercept) ​        dap (Intercept) ​        dap
Linha 180: Linha 180:
  * **residuals:​** a função '''​residuals'''​ (também pode ser evocada por '''​resid'''​) retorna os resíduos do modelo linear.  * **residuals:​** a função '''​residuals'''​ (também pode ser evocada por '''​resid'''​) retorna os resíduos do modelo linear.
  * **fitted:** a função '''​fitted'''​ (também pode ser evocada por '''​fitted.values'''​) retorna os //valores ajustados// do modelo linear.  * **fitted:** a função '''​fitted'''​ (também pode ser evocada por '''​fitted.values'''​) retorna os //valores ajustados// do modelo linear.
-<​code>​+<​code ​rsplus>
 > plot( resid( hipso1 ) ~ fitted( hipso1 ) ) > plot( resid( hipso1 ) ~ fitted( hipso1 ) )
 </​code>​ </​code>​
  
  * **predict:​** a função '''​predict'''​ retorna os valores //​preditos//​ para novas observações:​  * **predict:​** a função '''​predict'''​ retorna os valores //​preditos//​ para novas observações:​
-<​code>​+<​code ​rsplus>
 > predict( hipso1, data.frame( dap=c(10,​50,​100) ) ) > predict( hipso1, data.frame( dap=c(10,​50,​100) ) )
         1         ​2 ​        3         1         ​2 ​        3
Linha 228: Linha 228:
 Consideremos o exercício do modelo de equação de biomassa do tronco em função do diâmetro e altura. ​ O modelo original apresenta claramente Consideremos o exercício do modelo de equação de biomassa do tronco em função do diâmetro e altura. ​ O modelo original apresenta claramente
 problemas com a pressuposição de homogeneidade de variâncias:​ problemas com a pressuposição de homogeneidade de variâncias:​
-<​code>​+<​code ​rsplus>
 > esa = read.csv("​esaligna.csv",​header=T) > esa = read.csv("​esaligna.csv",​header=T)
 > plot( lm( tronco ~ I(dap^2 * ht), data=esa ) , which=c(1,​3) ) > plot( lm( tronco ~ I(dap^2 * ht), data=esa ) , which=c(1,​3) )
Linha 237: Linha 237:
  
 Se o modelo for ponderado por uma potência do inverso da variável preditora ( ''​1/​(dap^2 * ht)''​ ), talvez se torne um modelo com variância homogênea. Se o modelo for ponderado por uma potência do inverso da variável preditora ( ''​1/​(dap^2 * ht)''​ ), talvez se torne um modelo com variância homogênea.
-<​code>​+<​code ​rsplus>
  
 > plot( lm( tronco ~ I(dap^2*ht),​ data=esa, weights=1/​(dap^2*ht)^0.5 ), which=3 ) > plot( lm( tronco ~ I(dap^2*ht),​ data=esa, weights=1/​(dap^2*ht)^0.5 ), which=3 )
Linha 269: Linha 269:
  
 Vejamos como exemplo os dados de inventário floresta em floresta plantada: Vejamos como exemplo os dados de inventário floresta em floresta plantada:
-<​code>​+<​code ​rsplus>
 > egr = read.csv("​egrandis.csv",​header=T) > egr = read.csv("​egrandis.csv",​header=T)
 > >
Linha 293: Linha 293:
  
 Nos **modelos lineares de regressão**,​ as variáveis '''​factor'''​ podem ser assumidas automaticamente como variáveis indicadoras (variáveis dummy). Nos **modelos lineares de regressão**,​ as variáveis '''​factor'''​ podem ser assumidas automaticamente como variáveis indicadoras (variáveis dummy).
-<​code>​+<​code ​rsplus>
 > hipso2 = lm( ht ~ dap + regiao, data=egr ) > hipso2 = lm( ht ~ dap + regiao, data=egr )
 > summary( hipso2 ) > summary( hipso2 )
Linha 335: Linha 335:
  
 A variável região tem três níveis (''​levels''​) A variável região tem três níveis (''​levels''​)
-<​code>​+<​code ​rsplus>
 > levels(egr$regiao) > levels(egr$regiao)
 [1] "​Bofete" ​  "​Botucatu"​ "​Itatinga"​ [1] "​Bofete" ​  "​Botucatu"​ "​Itatinga"​
Linha 349: Linha 349:
  
 É possível ajustar um **modelo de interação completo** do diâmetro com a variável região, alterando o //​intercepto//​ **e** a //​inclinação//​ do modelo em cada regiões: É possível ajustar um **modelo de interação completo** do diâmetro com a variável região, alterando o //​intercepto//​ **e** a //​inclinação//​ do modelo em cada regiões:
-<​code>​+<​code ​rsplus>
  
 > hipso3 = lm( ht ~ dap * regiao, data=egr ) > hipso3 = lm( ht ~ dap * regiao, data=egr )
Linha 381: Linha 381:
 Note que se quisermos usar uma variável como indicadora, mas ela foi codificada como variável numérica, teremos que **forçar** sua transformação em Note que se quisermos usar uma variável como indicadora, mas ela foi codificada como variável numérica, teremos que **forçar** sua transformação em
 variável '''​factor''':​ variável '''​factor''':​
-<​code>​+<​code ​rsplus>
  coef( lm( ht ~ dap * rot, data = egr ) )  coef( lm( ht ~ dap * rot, data = egr ) )
  ​(Intercept) ​         dap          rot      dap:rot  ​(Intercept) ​         dap          rot      dap:rot
Linha 445: Linha 445:
  
 Para visualizar esse experimento podemos ler os dados do arquivo {{:​dados:​altura-mudas.csv.pdf|altura-mudas.csv (apagar extensão .pdf)}}, através da função '''​plot''':​ Para visualizar esse experimento podemos ler os dados do arquivo {{:​dados:​altura-mudas.csv.pdf|altura-mudas.csv (apagar extensão .pdf)}}, através da função '''​plot''':​
-<​code>​+<​code ​rsplus>
  
 > mudas = read.csv("​dados/​altura-mudas.csv",​header=T) > mudas = read.csv("​dados/​altura-mudas.csv",​header=T)
Linha 475: Linha 475:
  
 Para ajustar um modelo linear num experimento,​ podemos utilizar a função '''​lm'''​ como no caso da regressão linear: Para ajustar um modelo linear num experimento,​ podemos utilizar a função '''​lm'''​ como no caso da regressão linear:
-<​code>​+<​code ​rsplus>
 > muda.pai = lm( altura ~ as.factor(bloco) + as.factor(substrato),​ data=mudas, subset= especie=="​paineira"​ ) > muda.pai = lm( altura ~ as.factor(bloco) + as.factor(substrato),​ data=mudas, subset= especie=="​paineira"​ )
 > class(muda.pai) > class(muda.pai)
Linha 489: Linha 489:
  
 Sendo um experimento,​ o interesse principal é verificar a importância dos **fatores**:​ os tratamentos ('''​substrato'''​) e os blocos ('''​bloco'''​). ​ Para isso utilizamos a função '''​anova''':​ Sendo um experimento,​ o interesse principal é verificar a importância dos **fatores**:​ os tratamentos ('''​substrato'''​) e os blocos ('''​bloco'''​). ​ Para isso utilizamos a função '''​anova''':​
-<​code>​+<​code ​rsplus>
 > anova( muda.pai ) > anova( muda.pai )
 Analysis of Variance Table Analysis of Variance Table
Linha 532: Linha 532:
  
 Nesse caso, o experimento se torna um **experimento fatorial 2 x 10**: Nesse caso, o experimento se torna um **experimento fatorial 2 x 10**:
-<​code>​+<​code ​rsplus>
  
 > muda.sp = lm( altura ~ as.factor(bloco) + especie * as.factor(substrato),​ data=mudas ) > muda.sp = lm( altura ~ as.factor(bloco) + especie * as.factor(substrato),​ data=mudas )
Linha 552: Linha 552:
  
 No que a fórmula para o experimento é apresentada de modo diferente: No que a fórmula para o experimento é apresentada de modo diferente:
-<​code>​+<​code ​rsplus>
           altura ~ as.factor(bloco) + especie * as.factor(substrato)           altura ~ as.factor(bloco) + especie * as.factor(substrato)
  
Linha 601: Linha 601:
  
 Existe no R a função '''​interaction.plot'''​ que permite construir gráficos de interação entre fatores que facilitam a interpretação dos resultados estatístico. ​ Seus argumentos principais são: Existe no R a função '''​interaction.plot'''​ que permite construir gráficos de interação entre fatores que facilitam a interpretação dos resultados estatístico. ​ Seus argumentos principais são:
-<​code>​+<​code ​rsplus>
                      ​function (x.factor, trace.factor,​ response, fun = mean )                      ​function (x.factor, trace.factor,​ response, fun = mean )
 </​code>​ </​code>​
Linha 610: Linha 610:
  
 Vejamos a interação entre espécies e substrato no experimento do crescimento de mudas de espécies arbóreas: Vejamos a interação entre espécies e substrato no experimento do crescimento de mudas de espécies arbóreas:
-<​code>​+<​code ​rsplus>
 > interaction.plot( mudas$substrato,​ mudas$especie,​ mudas$altura , col=c("​red","​blue"​)) ​   > interaction.plot( mudas$substrato,​ mudas$especie,​ mudas$altura , col=c("​red","​blue"​)) ​  
  
Linha 667: Linha 667:
  
 Embora esse seja um modelo muito problemático,​ ele serve para ilustrar o problema de seleção de modelos. ​ Vejamos o que acontece utilizando os dados de árvores de //E. saligna// ([[dados:​dados-esaligna]]):​ Embora esse seja um modelo muito problemático,​ ele serve para ilustrar o problema de seleção de modelos. ​ Vejamos o que acontece utilizando os dados de árvores de //E. saligna// ([[dados:​dados-esaligna]]):​
-<​code>​+<​code ​rsplus>
 > biom = lm( total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * ht^2), data=esa ) > biom = lm( total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * ht^2), data=esa )
 > summary(biom) > summary(biom)
Linha 701: Linha 701:
  
 Vejamos o que a função **"​anova"​** nos mostra: Vejamos o que a função **"​anova"​** nos mostra:
-<​code>​+<​code ​rsplus>
 > anova(biom) > anova(biom)
 Analysis of Variance Table Analysis of Variance Table
Linha 744: Linha 744:
  
 Podemos ajustar esses modelos e utilizar a função **anova** para testá-los numa seqüência:​ Podemos ajustar esses modelos e utilizar a função **anova** para testá-los numa seqüência:​
-<​code>​+<​code ​rsplus>
 > m0 = lm( total ~ 1 , data=esa ) > m0 = lm( total ~ 1 , data=esa )
 > m1 = lm( total ~ dap , data=esa ) > m1 = lm( total ~ dap , data=esa )
Linha 779: Linha 779:
  
 É importante lembrar que a função **anova** realiza o teste **na ordem que os modelos são apresentados**,​ e que isso pode ter forte influência nos resultados obtidos. É importante lembrar que a função **anova** realiza o teste **na ordem que os modelos são apresentados**,​ e que isso pode ter forte influência nos resultados obtidos.
-<​code>​+<​code ​rsplus>
 > anova( m0, lm(total ~ I(dap^2*ht),​data=esa),​ lm( total ~ I(dap^2*ht) + dap, data=esa) ) > anova( m0, lm(total ~ I(dap^2*ht),​data=esa),​ lm( total ~ I(dap^2*ht) + dap, data=esa) )
 Analysis of Variance Table Analysis of Variance Table
Linha 813: Linha 813:
 As funções '''​add1'''​ e '''​drop1'''​ permitem adicionar ou retirar **um-a-um** os termos dos modelos lineares: As funções '''​add1'''​ e '''​drop1'''​ permitem adicionar ou retirar **um-a-um** os termos dos modelos lineares:
  
-<​code>​+<​code ​rsplus>
 > add1( object = m1, scope = . ~ dap + ht + I(dap*ht) + I(dap^2*ht) , test="​F"​ ) > add1( object = m1, scope = . ~ dap + ht + I(dap*ht) + I(dap^2*ht) , test="​F"​ )
 Single term additions Single term additions
Linha 829: Linha 829:
 </​code>​ </​code>​
  
-<​code>​+<​code ​rsplus>
 > drop1( object = m6, scope = . ~ .,  test="​F"​ ) > drop1( object = m6, scope = . ~ .,  test="​F"​ )
 Single term deletions Single term deletions
Linha 867: Linha 867:
   * **"​step"​** que realiza //​regressão stepwise//; e   * **"​step"​** que realiza //​regressão stepwise//; e
   *  **"​AIC"​** que calcula o //Akaike Information Criterion//​.   *  **"​AIC"​** que calcula o //Akaike Information Criterion//​.
-<​code>​+<​code ​rsplus>
 > aic.tab = AIC( m0, m1, m2, m3, m4, m5, m6 ) > aic.tab = AIC( m0, m1, m2, m3, m4, m5, m6 )
 > aic.tab$AIC.d = abs( c(0, diff(aic.tab$AIC)) ) > aic.tab$AIC.d = abs( c(0, diff(aic.tab$AIC)) )
03_apostila/06-modelos.1597249504.txt.gz · Última modificação: 2020/08/12 13:25 por adalardo