Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| — | 03_apostila:06-modelos [2020/08/20 19:10] (atual) – criada - edição externa 127.0.0.1 | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | <WRAP tabs> | ||
| + | * [[02_tutoriais: | ||
| + | * [[01_curso_atual: | ||
| + | * [[03_apostila: | ||
| + | </ | ||
| + | ====== 7. Modelos Lineares ====== | ||
| + | São chamados modelos lineares aqueles que apresentam uma relação entre variáveis que seja **linear nos parâmetros**. | ||
| + | **matematicamente** a variação de cada um dos parâmetros é independente dos demais parâmetros do modelo. | ||
| + | |||
| + | Em termos gerais, podemos reconhecer dois grandes grupos clássicos de modelos lineares: | ||
| + | * **Modelos de Regressão**. | ||
| + | * **Modelos de Análise de Variância**. | ||
| + | |||
| + | |||
| + | Nesse tópico utlizaremos os arquivos de dados: | ||
| + | * [[dados: | ||
| + | * [[dados: | ||
| + | * [[dados: | ||
| + | * [[dados: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Regressão Linear ===== | ||
| + | |||
| + | Os modelos lineares de regressão são utilizados para modelar a relação entre variáveis quantitativas: | ||
| + | * **Variável Resposta** (//y//): variável quantitativa (também chamada de variável dependente). | ||
| + | * **Variáveis Preditoras** (//x//): variáveis quantitativas (também chamadas de variáveis independentes). | ||
| + | |||
| + | ==== A função ' | ||
| + | |||
| + | A função utilizada para construir modelos lineares de regressão é a função ''' | ||
| + | <code rsplus> | ||
| + | lm( formula, data, weights, subset, na.action ) | ||
| + | </ | ||
| + | * ''' | ||
| + | * ''' | ||
| + | * ''' | ||
| + | * ''' | ||
| + | * ''' | ||
| + | |||
| + | Vejamos um exemplo simples: | ||
| + | <code rsplus> | ||
| + | > egr = read.csv(" | ||
| + | > egr[1,] | ||
| + | especie rot | ||
| + | 1 E.grandis | ||
| + | idade carac dap | ||
| + | 1 7.49315 | ||
| + | > | ||
| + | > hipso1 = lm( ht ~ dap, data=egr ) | ||
| + | > class(hipso1) | ||
| + | [1] " | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Uma Palavra sobre o Argumento ' | ||
| + | |||
| + | O argumento fórmula nos modelos lineares é bastante diverso das fórmulas matemáticas usuais. | ||
| + | |||
| + | Apresentaremos agora alguns aspectos básicos do argumento: | ||
| + | * ''' | ||
| + | * ''' | ||
| + | |||
| + | Se quisermos utilizar os símbolos matemáticos no sentido matemático usual **dentro** de uma fórmula estatística, | ||
| + | a função ''' | ||
| + | * ''' | ||
| + | * ''' | ||
| + | |||
| + | No caso de utilizarmos **funções matemáticas** específicas a função ''' | ||
| + | * ''' | ||
| + | * ''' | ||
| + | |||
| + | Mais detalhes sobre o argumento ''' | ||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Ajuste um modelo de regressão linear simples da altura ('' | ||
| + | ([[: | ||
| + | </ | ||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilizando o conjunto de dados de //E. Saligna// ([[: | ||
| + | $$b_i = \beta_0 + \beta_1 (d_i^2\, h_i) + \varepsilon_i$$ | ||
| + | |||
| + | e | ||
| + | |||
| + | $$\ln( b_i ) = \beta_0 + \beta_1 \ln(d_i) + \beta_2 \ln(h_i) + \varepsilon_i$$ | ||
| + | |||
| + | |||
| + | onde: | ||
| + | * b_i é biomassa do tronco; | ||
| + | * d_i é o DAP da árvore; | ||
| + | * h_i é a altura toral da árvore; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Funções que Atuam sobre Objetos ' | ||
| + | |||
| + | O objeto produzido pela função ''' | ||
| + | |||
| + | * **summary: | ||
| + | - estatísticas descritivas dos resíduos; | ||
| + | - teste //t// dos coeficientes de regressão; | ||
| + | - erro padrão da estimativa; | ||
| + | - coeficiente de determinação e coef. de det. ajustado; | ||
| + | - teste //F// geral do modelo. | ||
| + | <code rsplus> | ||
| + | > summary( hipso1 ) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = ht ~ dap, data = egr) | ||
| + | |||
| + | Residuals: | ||
| + | | ||
| + | -12.9306 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(>|t|) | ||
| + | (Intercept) | ||
| + | dap 1.27232 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 3.093 on 4800 degrees of freedom | ||
| + | Multiple R-Squared: 0.7691, | ||
| + | F-statistic: | ||
| + | </ | ||
| + | |||
| + | * **anova:** a função ''' | ||
| + | <code rsplus> | ||
| + | > anova( hipso1 ) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Response: ht | ||
| + | Df Sum Sq Mean Sq F value Pr(>F) | ||
| + | dap 1 153020 | ||
| + | Residuals 4800 45929 10 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | </ | ||
| + | |||
| + | * **plot:** a função ''' | ||
| + | |||
| + | ^ which ^ O que a função faz ^ Verificação do modelo ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | |||
| + | O valor default do argumento '' | ||
| + | <code rsplus> | ||
| + | > plot( hipso1 ) | ||
| + | Hit < | ||
| + | Hit < | ||
| + | Hit < | ||
| + | Hit < | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | * **coef: | ||
| + | <code rsplus> | ||
| + | > coef( hipso1 ) | ||
| + | (Intercept) | ||
| + | 0.7960402 | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | * **residuals: | ||
| + | * **fitted:** a função ''' | ||
| + | <code rsplus> | ||
| + | > plot( resid( hipso1 ) ~ fitted( hipso1 ) ) | ||
| + | </ | ||
| + | |||
| + | * **predict: | ||
| + | <code rsplus> | ||
| + | > predict( hipso1, data.frame( dap=c(10, | ||
| + | 1 | ||
| + | | ||
| + | > | ||
| + | > predict( hipso1, data.frame( dap=range(egr$dap) ) ) | ||
| + | 1 2 | ||
| + | | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilizando as funções apresentadas acima analise os modelos de regressão construídos nos exercícios anteriores com relação a: | ||
| + | - adequação das pressuposições dos modelos lineares; | ||
| + | - significância das estimativas dos coeficientes de regressão; | ||
| + | - qualidade dos modelos para uso em predições. | ||
| + | </ | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Considere as árvores da tabela abaixo: | ||
| + | |||
| + | ^ Árvore ^ DAP ^ Altura ^ | ||
| + | | 1 | 10 cm | 12 m | | ||
| + | | 2 | 20 cm | 25 m | | ||
| + | | 3 | 30 cm | 40 m | | ||
| + | |||
| + | Faça a predição da biomassa do tronco das árvores com base nos dois modelos de equação de biomassa ajustados. | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Regressão Ponderada ==== | ||
| + | |||
| + | A regressão ponderada é utilizada para corrigir o problema de heterogeneidade de variâncias. | ||
| + | |||
| + | Consideremos o exercício do modelo de equação de biomassa do tronco em função do diâmetro e altura. | ||
| + | problemas com a pressuposição de homogeneidade de variâncias: | ||
| + | <code rsplus> | ||
| + | > esa = read.csv(" | ||
| + | > plot( lm( tronco ~ I(dap^2 * ht), data=esa ) , which=c(1, | ||
| + | Hit < | ||
| + | Hit < | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Se o modelo for ponderado por uma potência do inverso da variável preditora ( '' | ||
| + | <code rsplus> | ||
| + | |||
| + | > plot( lm( tronco ~ I(dap^2*ht), | ||
| + | > plot( lm( tronco ~ I(dap^2*ht), | ||
| + | > plot( lm( tronco ~ I(dap^2*ht), | ||
| + | > plot( lm( tronco ~ I(dap^2*ht), | ||
| + | > plot( lm( tronco ~ I(dap^2*ht), | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Qual dos valores de potência (0.5; 0; 1; 2; 3) lhe parece mais adequado? | ||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | |||
| + | <box left red | // | ||
| + | Utilizando o mesmo modelo do exemplo acima, ajuste modelos de equação de biomassa para | ||
| + | - **biomassa total** ('' | ||
| + | - **biomassa de ramos** ('' | ||
| + | de modo que os modelos não possuam problema de heterogeneidade de variância. | ||
| + | </ | ||
| + | |||
| + | ==== Variável Factor como Variável Indicadora (dummy) ==== | ||
| + | |||
| + | Uma forma de incluirmos variáveis categóricas em modelos de regressão é através do uso de **variáveis indicadoras**. | ||
| + | |||
| + | A variável ''' | ||
| + | |||
| + | Esse tipo de variável existe no R para tornar mais fácil a modelagem estatística. | ||
| + | variável **alfa-numérica**, | ||
| + | |||
| + | Vejamos como exemplo os dados de inventário floresta em floresta plantada: | ||
| + | <code rsplus> | ||
| + | > egr = read.csv(" | ||
| + | > | ||
| + | > names(egr) | ||
| + | [1] " | ||
| + | [8] " | ||
| + | [15] " | ||
| + | > | ||
| + | > class( egr$regiao ) | ||
| + | [1] " | ||
| + | > class( egr$especie ) | ||
| + | [1] " | ||
| + | > class( egr$rot ) | ||
| + | [1] " | ||
| + | > class( egr$faz ) | ||
| + | [1] " | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Note que as variáveis ''' | ||
| + | |||
| + | Note também que as variáveis ''' | ||
| + | |||
| + | Nos **modelos lineares de regressão**, | ||
| + | <code rsplus> | ||
| + | > hipso2 = lm( ht ~ dap + regiao, data=egr ) | ||
| + | > summary( hipso2 ) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = ht ~ dap + regiao, data = egr) | ||
| + | |||
| + | Residuals: | ||
| + | | ||
| + | -10.6196 | ||
| + | |||
| + | Coefficients: | ||
| + | Estimate Std. Error t value Pr(>|t|) | ||
| + | (Intercept) | ||
| + | dap | ||
| + | regiaoBotucatu -3.627353 | ||
| + | regiaoItatinga -3.827592 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 2.647 on 4798 degrees of freedom | ||
| + | Multiple R-Squared: 0.831, | ||
| + | F-statistic: | ||
| + | </ | ||
| + | |||
| + | Nesse caso (''' | ||
| + | |||
| + | Note que além do coeficiente de inclinação para variável ''' | ||
| + | |||
| + | O modelo ajustado pela fórmula ''' | ||
| + | |||
| + | |||
| + | $$h_i = \beta_0 + \beta_1 d_i + \beta_2 I_{\textrm{Botucatu}} + \beta_3 I_{\text{Itatinga}} + \varepsilon_i$$ | ||
| + | |||
| + | |||
| + | onde: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | A variável região tem três níveis ('' | ||
| + | <code rsplus> | ||
| + | > levels(egr$regiao) | ||
| + | [1] " | ||
| + | > | ||
| + | </ | ||
| + | O R cria automaticamente 2 variáveis indicadoras, | ||
| + | |||
| + | Como se utiliza o modelo para predição? | ||
| + | * Para Bofete a predição é: '' | ||
| + | * Para Botucatu a predição é: '' | ||
| + | * Para Itatinga a predição é: '' | ||
| + | |||
| + | |||
| + | É possível ajustar um **modelo de interação completo** do diâmetro com a variável região, alterando o // | ||
| + | <code rsplus> | ||
| + | > | ||
| + | > hipso3 = lm( ht ~ dap * regiao, data=egr ) | ||
| + | > summary( hipso3 ) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = ht ~ dap * regiao, data = egr) | ||
| + | |||
| + | Residuals: | ||
| + | | ||
| + | -12.8439 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) | ||
| + | dap | ||
| + | regiaoBotucatu | ||
| + | regiaoItatinga | ||
| + | dap: | ||
| + | dap: | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 2.508 on 4796 degrees of freedom | ||
| + | Multiple R-Squared: 0.8484, | ||
| + | F-statistic: | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | 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 ''' | ||
| + | <code rsplus> | ||
| + | coef( lm( ht ~ dap * rot, data = egr ) ) | ||
| + | | ||
| + | | ||
| + | > | ||
| + | > | ||
| + | > coef( lm( ht ~ dap * as.factor(rot) , data = egr ) ) | ||
| + | (Intercept) | ||
| + | 2.234026394 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Considere o seguinte modelo (//modelo de Schumacher// | ||
| + | |||
| + | |||
| + | $$\ln( y_i ) = \beta_0 + \beta_1 (1/x_i) + \varepsilon_i$$ | ||
| + | |||
| + | |||
| + | Ajuste esse modelo de regressão à altura das árvores dominantes ('' | ||
| + | |||
| + | Compare um modelo geral (ajustado a todos os dados) com um modelo ajustado por região. | ||
| + | |||
| + | Compare os resíduos do modelo geral com os resíduos do modelo por região, analisando **a distribuição do resíduo por região**. | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | |||
| + | Ajuste modelos de regressão linear da altura (''' | ||
| + | |||
| + | Considere nessa tarefa os seguintes modelos: | ||
| + | |||
| + | * **Modelo A:** $ h_i = \beta_0 + \beta_1 d_i + \varepsilon_i$ | ||
| + | * **Modelo B:** $ \ln( h_i ) = \beta_0 + \beta_1 \ln(d_i) + \varepsilon_i$ | ||
| + | * **Modelo C:** $ h_i = \beta_0 + \beta_1 d_i + \beta_2 d_i^2 + \varepsilon_i$ | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Análise de Variância ===== | ||
| + | |||
| + | |||
| + | Os objetivos dos modelos lineares de análise de variância são bem diferentes dos modelos lineares de regressão. | ||
| + | |||
| + | Nos modelos de análise de variância a questão é comparar a importância de **fatores** sobre o comportamento da variável resposta. | ||
| + | |||
| + | ==== Experimento em Blocos Casualizados ==== | ||
| + | |||
| + | Tomemos como exemplo os dados do experimento de mudas no viveiro ([[dados: | ||
| + | * Espécie (''' | ||
| + | * Bloco (''' | ||
| + | * Substrato (''' | ||
| + | |||
| + | O experimento deseja saber se existe diferença entre os substratos no crescimento em altura (''' | ||
| + | |||
| + | Para visualizar esse experimento podemos ler os dados do arquivo {{: | ||
| + | <code rsplus> | ||
| + | > | ||
| + | > mudas = read.csv(" | ||
| + | > summary(mudas) | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | 3rd Qu.: | ||
| + | | ||
| + | > | ||
| + | > | ||
| + | > plot( altura ~ bloco + substrato , data=mudas , subset=especie==" | ||
| + | Hit < | ||
| + | Hit < | ||
| + | > | ||
| + | > plot( altura ~ bloco + substrato , data=mudas , subset=especie==" | ||
| + | Hit < | ||
| + | Hit < | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Para ajustar um modelo linear num experimento, | ||
| + | <code rsplus> | ||
| + | > muda.pai = lm( altura ~ as.factor(bloco) + as.factor(substrato), | ||
| + | > class(muda.pai) | ||
| + | [1] " | ||
| + | > | ||
| + | > muda.tam = lm( altura ~ as.factor(bloco) + as.factor(substrato), | ||
| + | > class(muda.tam) | ||
| + | [1] " | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Para analisar as pressuposições do modelo utilizamos a função ''' | ||
| + | |||
| + | Sendo um experimento, | ||
| + | <code rsplus> | ||
| + | > anova( muda.pai ) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Response: altura | ||
| + | | ||
| + | as.factor(bloco) | ||
| + | as.factor(substrato) | ||
| + | Residuals | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | > anova( muda.tam ) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Response: altura | ||
| + | Df Sum Sq Mean Sq F value Pr(>F) | ||
| + | as.factor(bloco) | ||
| + | as.factor(substrato) | ||
| + | Residuals | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Verifique se existe diferenças estatísticamente significativas na **altura média** dos caixetais ({{: | ||
| + | |||
| + | Será que os caixetais diferem em termos de **altura máxima** ou **área basal**? | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Outros Delineamentos Experimentais ==== | ||
| + | |||
| + | |||
| + | Considere o experimento de mudas de espécies arbóreas. | ||
| + | |||
| + | Nesse caso, o experimento se torna um **experimento fatorial 2 x 10**: | ||
| + | <code rsplus> | ||
| + | > | ||
| + | > muda.sp = lm( altura ~ as.factor(bloco) + especie * as.factor(substrato), | ||
| + | > anova(muda.sp) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Response: altura | ||
| + | Df Sum Sq Mean Sq F value Pr(>F) | ||
| + | as.factor(bloco) | ||
| + | especie | ||
| + | as.factor(substrato) | ||
| + | especie: | ||
| + | Residuals | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | No que a fórmula para o experimento é apresentada de modo diferente: | ||
| + | <code rsplus> | ||
| + | altura ~ as.factor(bloco) + especie * as.factor(substrato) | ||
| + | |||
| + | </ | ||
| + | |||
| + | O elemento ** especie * as.factor(substrato) ** inclui todos os efeitos ligados a interação entre espécie e substrato, e que aparecem na tabela de análise de variância: | ||
| + | * **especie** (com 1 grau de liberdade) se refere ao **efeito principal** da espécie; | ||
| + | * **as.factor(substrato)** (com 9 graus de liberdade) se refere ao **efeito principal** do substrato; | ||
| + | * **especie: | ||
| + | |||
| + | O elemento chave nessa fórmula é o asterisco (** * **) que representa todos os efeitos ligados a interação entre dois fatores. | ||
| + | |||
| + | <box 100% center orange | **Símbolos utilizados nas Fórmulas Estatísticas para definir diferentes Delineamentos Experimentais**> | ||
| + | ^ Expressão ^ Significado ^ | ||
| + | | //Y ~ X// | Modele //Y// como função estatística de //X// | | ||
| + | | //A + B// | inclui ambos os fatores //A// e //B// | | ||
| + | | //A - B// | inclui todos os efeitos em //A//, exceto os que estão em //B// | | ||
| + | | //A * B// | //A + B + A:B// | | ||
| + | | //A / B// | //A + B %in% (A)// modelos hierárquicos | | ||
| + | | //A:B// | efeito da interação entre os fatores //A// e //B// | | ||
| + | | //B %in% A// | efeitos de //B// dentro dos níveis de //A// | | ||
| + | | //A^m// | todos os termos de //A// cruzados até à ordem //m// | | ||
| + | </ | ||
| + | |||
| + | Aliadas a esses símbolos, o R possui uma série de funções que permitem a análise de virtualmente qualquer delineamento experimental. | ||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilizando os dados de árvores de floresta plantada ([[dados: | ||
| + | |||
| + | Para discussão: a relação entre esses fatores deve ser de **interação** ou **hierárquica**? | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilizando os dados de árvores de floresta plantada ([[dados: | ||
| + | |||
| + | Para discussão: a relação entre esses fatores deve ser de **interação** ou **hierárquica**? | ||
| + | </ | ||
| + | |||
| + | ==== Explorando a Interação entre Fatores ==== | ||
| + | |||
| + | Freqüentemente, | ||
| + | |||
| + | Existe no R a função ''' | ||
| + | <code rsplus> | ||
| + | | ||
| + | </ | ||
| + | * **x.factor** é o fator que ficará nas abscissas (eixo-x); | ||
| + | * **trace.factor** é o fator que será usado para distinguir diferentes linhas no gráfico; | ||
| + | * **response** é a variável resposta que será grafada nas ordenadas (eixo-y); | ||
| + | * **fun** é a função da estatística a ser utilizada. | ||
| + | |||
| + | Vejamos a interação entre espécies e substrato no experimento do crescimento de mudas de espécies arbóreas: | ||
| + | <code rsplus> | ||
| + | > interaction.plot( mudas$substrato, | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Tomando a altura média das árvores dominantes (média de ''' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Considere os dados do levantamento em três caixetais ([[dados: | ||
| + | |||
| + | Pergunta-se: | ||
| + | * diâmetro **médio**; | ||
| + | * diâmetro **mediano**; | ||
| + | * diâmetro **máximo**? | ||
| + | |||
| + | Responda com base numa análise gráfica. | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Comparação de Modelos ===== | ||
| + | |||
| + | |||
| + | ==== Função " | ||
| + | |||
| + | |||
| + | Um aspecto essencial à construção de modelos lineares é a comparação entre modelos. | ||
| + | |||
| + | A função **" | ||
| + | |||
| + | Vejamos o exemplo de construção de uma equação de biomassa com o seguinte forma: | ||
| + | |||
| + | <box 100% center green> | ||
| + | |||
| + | '' | ||
| + | |||
| + | </ | ||
| + | |||
| + | Embora esse seja um modelo muito problemático, | ||
| + | <code rsplus> | ||
| + | > biom = lm( total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * ht^2), data=esa ) | ||
| + | > summary(biom) | ||
| + | |||
| + | Call: | ||
| + | lm(formula = total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * | ||
| + | ht) + I(dap * ht^2), data = esa) | ||
| + | |||
| + | Residuals: | ||
| + | Min 1Q Median | ||
| + | -38.670 | ||
| + | |||
| + | Coefficients: | ||
| + | | ||
| + | (Intercept) | ||
| + | dap | ||
| + | I(dap^2) | ||
| + | ht 7.48430 | ||
| + | I(dap * ht) -1.42975 | ||
| + | I(dap^2 * ht) | ||
| + | I(dap * ht^2) | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | |||
| + | Residual standard error: 15.13 on 29 degrees of freedom | ||
| + | Multiple R-Squared: 0.9728, | ||
| + | F-statistic: | ||
| + | |||
| + | > | ||
| + | </ | ||
| + | |||
| + | Veja que nenhuma das variáveis preditoras se mostrou significativa (nível de probabilidade de 5%) para estimar a biomassa total das árvores. | ||
| + | |||
| + | Vejamos o que a função **" | ||
| + | <code rsplus> | ||
| + | > anova(biom) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Response: total | ||
| + | Df Sum Sq Mean Sq F value Pr(>F) | ||
| + | dap 1 218121 | ||
| + | I(dap^2) | ||
| + | ht | ||
| + | I(dap * ht) 1 312 | ||
| + | I(dap^2 * ht) 1 816 | ||
| + | I(dap * ht^2) 1 110 | ||
| + | Residuals | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Nesse caso parece que o diâmetro e o diâmetro ao quadrado são significativos, | ||
| + | |||
| + | As funções **" | ||
| + | * O teste //t// da função **summary** testa cada variável preditora assumindo que **todas as demais variáveis já estâo presentes no modelo**. | ||
| + | * O teste //F// da função **anova** testa as variáveis preditoras na seqüência apresentada no modelo, assumindo que as **variáveis anteriores** já estavam no modelo. | ||
| + | |||
| + | Desta forma, a função **anova** realiza teste de um modelo contra outro numa seqüência definida. | ||
| + | original numa série de modelos: | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | <box 100% green> | ||
| + | </ | ||
| + | |||
| + | <box 100% green> | ||
| + | |||
| + | Podemos ajustar esses modelos e utilizar a função **anova** para testá-los numa seqüência: | ||
| + | <code rsplus> | ||
| + | > m0 = lm( total ~ 1 , data=esa ) | ||
| + | > m1 = lm( total ~ dap , data=esa ) | ||
| + | > m2 = lm( total ~ dap + I(dap^2) , data=esa ) | ||
| + | > m3 = lm( total ~ dap + I(dap^2) + ht , data=esa ) | ||
| + | > m4 = lm( total ~ dap + I(dap^2) + ht + I(dap * ht), data=esa ) | ||
| + | > m5 = lm( total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht), data=esa ) | ||
| + | > m6 = lm( total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * ht^2), data=esa ) | ||
| + | > | ||
| + | > | ||
| + | > anova(m0, m1, m2, m3, m4, m5, m6) | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Model 1: total ~ 1 | ||
| + | Model 2: total ~ dap | ||
| + | Model 3: total ~ dap + I(dap^2) | ||
| + | Model 4: total ~ dap + I(dap^2) + ht | ||
| + | Model 5: total ~ dap + I(dap^2) + ht + I(dap * ht) | ||
| + | Model 6: total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) | ||
| + | Model 7: total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * | ||
| + | ht^2) | ||
| + | Res.Df | ||
| + | 1 35 244142 | ||
| + | 2 | ||
| + | 3 | ||
| + | 4 | ||
| + | 5 | ||
| + | 6 | ||
| + | 7 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | É importante lembrar que a função **anova** realiza o teste **na ordem que os modelos são apresentados**, | ||
| + | <code rsplus> | ||
| + | > anova( m0, lm(total ~ I(dap^2*ht), | ||
| + | Analysis of Variance Table | ||
| + | |||
| + | Model 1: total ~ 1 | ||
| + | Model 2: total ~ I(dap^2 * ht) | ||
| + | Model 3: total ~ I(dap^2 * ht) + dap | ||
| + | Res.Df | ||
| + | 1 35 244142 | ||
| + | 2 | ||
| + | 3 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Com base nos modelos apresentados acima, construa vários modelos para biomassa do tronco (''' | ||
| + | </ | ||
| + | |||
| + | <box 100% left red | // | ||
| + | Construa um modelo polinomial (até quarto grau) da altura (''' | ||
| + | </ | ||
| + | |||
| + | ==== Algumas Funções para Comparação de Modelos ==== | ||
| + | |||
| + | |||
| + | Existem várias outras funções para auxiliar na construção e comparação de modelos. | ||
| + | |||
| + | As funções ''' | ||
| + | |||
| + | <code rsplus> | ||
| + | > add1( object = m1, scope = . ~ dap + ht + I(dap*ht) + I(dap^2*ht) , test=" | ||
| + | Single term additions | ||
| + | |||
| + | Model: | ||
| + | total ~ dap | ||
| + | Df Sum of Sq | ||
| + | < | ||
| + | ht | ||
| + | I(dap * ht) 1 2507.0 23513.8 | ||
| + | I(dap^2 * ht) 1 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | <code rsplus> | ||
| + | > drop1( object = m6, scope = . ~ ., test=" | ||
| + | Single term deletions | ||
| + | |||
| + | Model: | ||
| + | total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * | ||
| + | ht^2) | ||
| + | Df Sum of Sq RSS AIC F value Pr(F) | ||
| + | < | ||
| + | dap 1 106.8 6746.1 | ||
| + | I(dap^2) | ||
| + | ht | ||
| + | I(dap * ht) 1 682.3 7321.5 | ||
| + | I(dap^2 * ht) 1 270.7 6910.0 | ||
| + | I(dap * ht^2) 1 110.2 6749.4 | ||
| + | --- | ||
| + | Signif. codes: | ||
| + | > | ||
| + | > | ||
| + | > drop1( object = m6, scope = . ~ dap + ht, test=" | ||
| + | Single term deletions | ||
| + | |||
| + | Model: | ||
| + | total ~ dap + I(dap^2) + ht + I(dap * ht) + I(dap^2 * ht) + I(dap * | ||
| + | ht^2) | ||
| + | Df Sum of Sq RSS AIC F value Pr(F) | ||
| + | < | ||
| + | dap | ||
| + | ht 1 415.0 7054.3 | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | Nessas duas funções, o ponto (**" | ||
| + | |||
| + | |||
| + | Outras funções úteis para construção e comparação de modelos são: | ||
| + | * **" | ||
| + | * **" | ||
| + | <code rsplus> | ||
| + | > aic.tab = AIC( m0, m1, m2, m3, m4, m5, m6 ) | ||
| + | > aic.tab$AIC.d = abs( c(0, diff(aic.tab$AIC)) ) | ||
| + | > aic.tab | ||
| + | | ||
| + | m0 2 423.7551 | ||
| + | m1 3 345.1563 78.5987781 | ||
| + | m2 4 305.7148 39.4414506 | ||
| + | m3 5 306.1411 | ||
| + | m4 6 306.6842 | ||
| + | m5 7 304.5765 | ||
| + | m6 8 305.9841 | ||
| + | > | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Exercícios === | ||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilizando os modelos para biomassa do tronco (''' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <box 100% left red | // | ||
| + | Utilize a função **AIC** para analisar a importância das variáveis indicadoras nos modelos de relação altura-diâmetro ajustados para florestas de //E. grandis//. | ||
| + | </ | ||