06-gaussiana:06-gaussiana
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
06-gaussiana:06-gaussiana [2022/10/14 21:09] – [Exercícios] paulo | 06-gaussiana:06-gaussiana [2024/11/13 02:34] (atual) – [Questões motivadoras] paulo | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== 6. Modelos da Distribuição Gaussiana ====== | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Os modelos Gaussianos são modelos baseados na distribuição Normal, que designaremos por **distribuição Gaussiana** em homenagem ao grande astrônomo e matemático //Johann Carl Friedrich Gauss// (1777 – 1855). | ||
+ | |||
+ | Uma ampla gama de modelos cabe sob essa designação: | ||
+ | |||
+ | Geralmente, esses modelos são apresentados em classes diferentes, mas nesse tópico procuraremos unificar a sua apresentação sob a abordagem de verossimilhança. | ||
+ | |||
+ | |||
+ | |||
+ | ====== Conceitos ====== | ||
+ | |||
+ | * Distribuição gaussiana: propriedades e parâmetros | ||
+ | * Variáveis-resposta gaussianas | ||
+ | * Modelos gaussianos de resposta linear da média | ||
+ | * Regressão linear | ||
+ | * Análise de variância | ||
+ | * Modelos gaussianos de resposta não-linear da média | ||
+ | * Regressão não-linear | ||
+ | * Modelos gaussianos com resposta da variância | ||
+ | |||
+ | |||
+ | ====== Tutoriais ====== | ||
+ | |||
+ | Utilizaremos nesse tutorial dados de biomassa de árvores de // | ||
+ | {{: | ||
+ | |||
+ | ===== Modelo com a média constante ===== | ||
+ | |||
+ | Para ajustar os modelos utilizaremos a função " | ||
+ | <code rsplus> | ||
+ | library(bbmle) | ||
+ | help(mle2) | ||
+ | </ | ||
+ | |||
+ | |||
+ | O modelo Gaussiano mais simples é aquele em que pretendemos apenas estimar os parâmetros média e variância, que consideramos contantes. | ||
+ | |||
+ | $$ B \sim N( \mu = \beta , \ \sigma = \alpha) $$ | ||
+ | |||
+ | Que lemos: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "a variável $B$ segue uma distribuição normal com parâmetros $\mu$ e $\sigma$ constantes com valores $\beta$ e $\alpha$, respectivamente" | ||
+ | </ | ||
+ | |||
+ | OU | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "A variável gaussiana $B$ tem parâmetros constantes $\mu = \beta $ e $\sigma = \alpha$ ." | ||
+ | </ | ||
+ | |||
+ | |||
+ | Vamos ajustar este modelo a dados de //biomassa total// de uma amostra de árvores de //E. saligna// (variável " | ||
+ | |||
+ | <code rsplus> | ||
+ | ## Leitura dos dados | ||
+ | esa <- read.csv(" | ||
+ | mean(esa$total) | ||
+ | [1] 93.20056 | ||
+ | sd(esa$total) | ||
+ | [1] 83.51936 | ||
+ | ## Log-Verossimilhança negativa | ||
+ | -sum( dnorm( esa$total, mean = mean(esa$total), | ||
+ | [1] 209.8846 | ||
+ | </ | ||
+ | |||
+ | Portanto esse modelo tem como estimativas (MLEs) dos parâmetros: | ||
+ | |||
+ | ==== Objetos da Classe MLE ==== | ||
+ | |||
+ | Mesmo sendo um modelo simples, podemos ajustá-lo com otimização computacional utilizando a função '' | ||
+ | |||
+ | Para isso é criamos uma função em R que calcula a log-verossimilhança negativa da distribuição Gaussiana (Normal) | ||
+ | sobre os dados que possuímos: | ||
+ | |||
+ | <code rsplus> | ||
+ | nllikGauss <- function(m=90, | ||
+ | </ | ||
+ | |||
+ | Para ajustar o modelo com média e desvio padrão constante entregamos esta função ao otimizador executado pela '' | ||
+ | |||
+ | <code rsplus> | ||
+ | gauss01 <- mle2( nllikGauss ) | ||
+ | |||
+ | class( gauss01 ) | ||
+ | [1] " | ||
+ | attr(," | ||
+ | [1] " | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | O objeto gerado pela função '' | ||
+ | <code rsplus> | ||
+ | summary(gauss01) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | m 93.1309 | ||
+ | s 82.4172 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 419.7551 | ||
+ | </ | ||
+ | |||
+ | Note que a função '' | ||
+ | |||
+ | |||
+ | ==== Verossimilhança Perfilhada ==== | ||
+ | |||
+ | A função '' | ||
+ | |||
+ | <code rsplus> | ||
+ | > par(mfrow=c(1, | ||
+ | > plot( profile(gauss01)) | ||
+ | </ | ||
+ | |||
+ | Intervalos de confiança são um conceito de inferência de testes de significância. Na abordagem de inferência por verossimilhança a incerteza sobre a estimativa é expressa por intervalos de plausibilidade. Estes intervalos devem convergir para os intervalos de confiança descritos acima, quando a amostra for grande o suficiente. Mas os intervalos de plausibilidade são mais gerais, pois valem mesmo quando a aproximação normal dos intervalos de confiança ainda não funciona. | ||
+ | |||
+ | A função '' | ||
+ | |||
+ | <code rsplus> | ||
+ | > library(sads) # primeiro instale o pacote se não o tiver | ||
+ | > par(mfrow=c(1, | ||
+ | > plotprofmle( profile(gauss01) ) | ||
+ | </ | ||
+ | |||
+ | Os gráficos apresentam a log-verossimilhança negativa relativa para os dois parâmetros ajustados: média e desivo padrão. | ||
+ | |||
+ | |||
+ | ===== Modelo com Média como Função Linear ===== | ||
+ | |||
+ | |||
+ | Nesse caso da //biomassa total// das árvores de //E. saligna// (variável '' | ||
+ | $$ E[ b_i ] = \beta_0 + \beta_1 (d_i^2\ h_i)$$. | ||
+ | |||
+ | |||
+ | Assim, a média deixa de ser modelada como // | ||
+ | |||
+ | $$ B \sim N( \mu = \beta_0 + \beta_1 (d_i^2\ h_i), \ \sigma = \alpha) $$ | ||
+ | |||
+ | Que lemos: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "a variável $B$ segue distribuição normal com parâmetro $\mu$ que é uma função linear da preditora $(d_i^2\ h_i)$ e parâmetro $\sigma$ constante. | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Função de Log-Verossimilhança Negativa | ||
+ | |||
+ | Para podermos ajustar um modelo onde a média é uma função linear, precisamos definir uma nova função de Log-Verossimilhança Negativa: | ||
+ | <code rsplus> | ||
+ | |||
+ | nllikGauss2 <- function(b0=0, | ||
+ | { | ||
+ | m <- b0+b1*(esa$dap^2*esa$ht) | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Note que temos agora três parâmetros: | ||
+ | |||
+ | |||
+ | |||
+ | ==== Ajuste e Análise do Modelo | ||
+ | |||
+ | O ajuste do modelo é realizado da mesma forma pela função "'' | ||
+ | <code rsplus> | ||
+ | gauss02 <- mle2( nllikGauss2 ) | ||
+ | Warning message: | ||
+ | NaNs produced in: dnorm(x, mean, sd, log) | ||
+ | |||
+ | </ | ||
+ | |||
+ | Podemos agora analisar o modelo: | ||
+ | <code rsplus> | ||
+ | summary( gauss02 ) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss2) | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | b0 11.4859246 | ||
+ | b1 0.0263826 | ||
+ | s 24.8058770 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 333.3746 | ||
+ | |||
+ | logLik(gauss02) | ||
+ | 'log Lik.' -166.6873 (df=3) | ||
+ | |||
+ | </ | ||
+ | |||
+ | E analisar as curvas de verossimilhança perfilhada: | ||
+ | <code rsplus> | ||
+ | par(mfrow=c(2, | ||
+ | plotprofmle( profile(gauss02) ) | ||
+ | </ | ||
+ | |||
+ | Note que quando a média é modelada como uma função linear, o valor do desvio padrão se torna bem menor. | ||
+ | |||
+ | ==== Comparação com o Modelo Anterior | ||
+ | |||
+ | Note que ao assumir a média como função linear do //tamanho das árvores// houve clara melhora na qualidade do modelo, conforme o valor de Log-Verossimilhança mostra: | ||
+ | <code rsplus> | ||
+ | logLik(gauss01) | ||
+ | 'log Lik.' -209.8776 (df=2) | ||
+ | |||
+ | logLik(gauss02) | ||
+ | 'log Lik.' -166.6873 (df=3) | ||
+ | |||
+ | AICtab( gauss01, gauss02, base=TRUE, logLik=TRUE ) | ||
+ | |||
+ | logLik AIC dLogLik dAIC df | ||
+ | gauss02 -166.7 | ||
+ | gauss01 -209.9 | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Comparação com a Forma Clássica de Ajuste | ||
+ | |||
+ | |||
+ | As estimativas dos coeficientes de regressão que obtivemos acima são semelhantes aos obtidos pelo forma clássica de ajuste de modelos lineares de regressão: | ||
+ | |||
+ | <code rsplus> | ||
+ | > | ||
+ | > summary( gauss02 ) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss2) | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | b0 11.4859246 | ||
+ | b1 0.0263826 | ||
+ | s 24.8058770 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 333.3746 | ||
+ | |||
+ | |||
+ | > summary( lm( total ~ I(dap^2*ht), | ||
+ | | ||
+ | (Intercept) | ||
+ | I(dap^2 * ht) 0.02637721 0.001429276 18.454952 2.736869e-19 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | **Questões: | ||
+ | |||
+ | * Quanto aos erros-padrão da estimativa ('' | ||
+ | |||
+ | * Os Intervalos de Confiança de 95% (use valor de t=2) são semelhantes aos **Intervalos de Verossimilhança** para razão 8 ? (Veja os gráficos da verossimilhança perfilhada) | ||
+ | |||
+ | * Por que a abordagem tradicional não apresenta uma estimativa de erro-padrão para o parâmetro de escala do modelo (desvio padrão)? | ||
+ | |||
+ | |||
+ | ===== Modelo com Média e Desvio Padrão como Função Linear ===== | ||
+ | |||
+ | Se observarmos a relação entre //biomassa total// e o diâmetro ('' | ||
+ | não só a média mas também o desvio padrão cresce com o aumento do tamanho da árvore: | ||
+ | |||
+ | <code rsplus> | ||
+ | par(mfrow=c(1, | ||
+ | plot( total ~ I(dap^2*ht) , data = esa ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Função de Log-Verossimilhança Negativa e Ajuste | ||
+ | |||
+ | Assim podemos ajustar um modelo onde média e desvio padrão são funções do tamanho da árvore. Uma possibilidade é: | ||
+ | |||
+ | $$ B \sim N( \mu = \beta_0 + \beta_1 (d_i^2\ h_i), \ \sigma = \alpha_0 (d_i^2\ h_i)^{\alpha_1}) $$ | ||
+ | |||
+ | Ou seja: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "B é uma variável Gaussiana com parâmetro $\mu$ que é uma função linear da preditora $(d_i^2\ h_i)$, e parâmetro $\sigma$ que é uma função de potência desta mesma preditora" | ||
+ | |||
+ | </ | ||
+ | |||
+ | Para ajustar este modelo com a '' | ||
+ | |||
+ | |||
+ | <code rsplus> | ||
+ | nllikGauss3 <- function(b0=11.5, | ||
+ | { | ||
+ | m <- b0+b1*(esa$dap^2*esa$ht) | ||
+ | s <- exp(a0)*(esa$dap^2*esa$ht)^a1 | ||
+ | | ||
+ | } | ||
+ | |||
+ | gauss03 <- mle2( nllikGauss3 ) | ||
+ | |||
+ | summary(gauss03) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss3) | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | b0 8.0863364 | ||
+ | b1 0.0274520 | ||
+ | a0 -0.5069408 | ||
+ | a1 0.4660469 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 317.2816 | ||
+ | |||
+ | AIC(gauss03) | ||
+ | [1] 325.2816 | ||
+ | |||
+ | </ | ||
+ | |||
+ | E podemos analisar a curva de verossimilhança perfilhada para os parâmetros: | ||
+ | <code rsplus> | ||
+ | par(mfrow=c(2, | ||
+ | plotprofmle( profile( gauss03 ) ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Modelo com uma outra Função para o Desvio Padrão | ||
+ | |||
+ | Podemos analisar a importância da função que descreve o desvio padrão tentando uma outra função. | ||
+ | |||
+ | $$ B \sim N( \mu = \beta_0 + \beta_1 (d_i^2\ h_i), \ \sigma = \alpha0 + \alpha_1 (d_i^2\ h_i)) $$ | ||
+ | |||
+ | ou seja: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "$B$ é uma variável Gaussiana com parâmetros $\mu$ e $\sigma$ que são funções lineares da preditora $(d_i^2\ h_i)$." | ||
+ | </ | ||
+ | |||
+ | Vamos então fazer o ajuste deste novo modelo no R: | ||
+ | |||
+ | |||
+ | <code rsplus> | ||
+ | > nllikGauss3b <- function(b0=11.5, | ||
+ | + { | ||
+ | + m <- b0+b1*(esa$dap^2*esa$ht) | ||
+ | + s <- a0 + a1*(esa$dap^2*esa$ht)^(1/ | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > gauss03b = mle2( nllikGauss3b ) | ||
+ | Warning messages: | ||
+ | 1: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | 2: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | 3: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | 4: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | 5: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | 6: In dnorm(x, mean, sd, log) : NaNs produced | ||
+ | > summary(gauss03b) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss3b) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | b0 8.0513173 | ||
+ | b1 0.0274884 | ||
+ | a0 0.6623036 | ||
+ | a1 0.4490437 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 317.3536 | ||
+ | |||
+ | > logLik(gauss03b) | ||
+ | 'log Lik.' -158.6768 (df=4) | ||
+ | |||
+ | > AIC(gauss03b) | ||
+ | [1] 325.3536 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | Note que nesse caso houve uma certa "// | ||
+ | |||
+ | **Questão: | ||
+ | |||
+ | ===== Modelo com Função Não-Linear para Média ===== | ||
+ | |||
+ | Uma outra possibilidade é considerarmos que a média e o desvio-padrão são funções de potência da preditora : | ||
+ | |||
+ | $$ B \sim N( \mu = \beta_0 (d_i^2\ h_i)^{\beta_1}, | ||
+ | |||
+ | |||
+ | Como antes, para ajustar mais este modelo no R criamos uma nova função de log-verossimilhança e a minimizamos com a função '' | ||
+ | |||
+ | <code rsplus> | ||
+ | > nllikGauss4 <- function(b0=-2.4, | ||
+ | + { | ||
+ | + m <- exp(b0) *(esa$dap^2*esa$ht)^b1 | ||
+ | + s <- exp(a0)*(esa$dap^2*esa$ht)^a1 | ||
+ | + | ||
+ | + } | ||
+ | > gauss04 = mle2( nllikGauss4) | ||
+ | > summary(gauss04) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss4) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | b0 -2.220989 | ||
+ | b1 0.847536 | ||
+ | a0 -0.497323 | ||
+ | a1 0.463901 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 316.8159 | ||
+ | |||
+ | > AIC(gauss04) | ||
+ | [1] 324.8159 | ||
+ | > | ||
+ | > plotprofmle( profile(gauss04) ) | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | **Questões: | ||
+ | * O que aconteceu com o ajuste do modelo ? | ||
+ | * O que aconteceu com a curva de verossimilhança perfilhada das estimativas dos parâmetros na relação não-linear? | ||
+ | |||
+ | |||
+ | |||
+ | ===== Outra Função Não-Linear para Média ===== | ||
+ | |||
+ | A relação entre a biomassa lenhosa e as duas variáveis preditoras DAP (dap) e altura (ht) pode seguir padrões não-lineares, | ||
+ | |||
+ | $$ B \sim N( \mu = \beta_0 \ d^{\beta_1} \ h^{\beta_2} , \ \sigma = \alpha_0 (d^2\ h)^{\alpha_1}) $$ | ||
+ | |||
+ | onde $d$ é o DAP e $h$ é a altura. Mantemos o parâmetro $\sigma$ como função de potência da preditora já usada antes, $d^2\ h$. | ||
+ | vamos fazer o ajuste deste novo modelo no R: | ||
+ | |||
+ | <code rsplus> | ||
+ | | ||
+ | { | ||
+ | m <- exp(b0) * esa$dap^b1 * esa$ht^b2 | ||
+ | s <- exp(a0)*(esa$dap^2*esa$ht)^a1 | ||
+ | | ||
+ | } | ||
+ | gauss05 = mle2( nllikGauss5 ) | ||
+ | summary(gauss05) | ||
+ | |||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss5) | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | b0 -2.10999 | ||
+ | b1 2.37738 | ||
+ | b2 0.11704 | ||
+ | a0 1.23524 | ||
+ | a1 0.18935 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 293.326 | ||
+ | |||
+ | | ||
+ | [1] 303.326 | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Questões: | ||
+ | * Como foi o ajuste dessa forma não-linear para a média ? | ||
+ | * O que aconteceu com a curva de verossimilhança perfilhada para os parâmetros do modelo da média ? | ||
+ | * Alguma estimativa se mostra problemática ? Quais seriam as prováveis causas desses problemas ? | ||
+ | |||
+ | |||
+ | ===== Modelo Log-Normal ===== | ||
+ | |||
+ | O fato de tanto média como desvio padrão variarem em função do tamanho das árvores sugere que a escala apropriada de modelagem da biomassa possa ser a escala logarítmica. | ||
+ | |||
+ | <code rsplus> | ||
+ | > par(mfrow=c(1, | ||
+ | > plot( log(total) ~ log(dap^2*ht), | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Verificando o Modelo Gaussiano através dos Resíduos | ||
+ | |||
+ | Para verificar essa possibilidade, | ||
+ | |||
+ | <code rsplus> | ||
+ | # Primeiro construir um novo ' | ||
+ | |||
+ | head(esa) | ||
+ | arvore classe talhao | ||
+ | 1 6 c 22 19.9 21.50 183.64 20.42 8.57 212.64 | ||
+ | 2 8 b 23 12.4 15.74 42.29 6.58 2.52 51.40 | ||
+ | 3 7 c 32 16.5 11.74 60.61 11.35 48.52 120.49 | ||
+ | 4 8 a | ||
+ | 5 9 a | ||
+ | 6 9 b 32 10.5 8.79 26.10 7.48 23.36 56.95 | ||
+ | |||
+ | esa2 <- esa[, c(" | ||
+ | summary( gauss03b ) | ||
+ | coef( gauss03b ) | ||
+ | b0 | ||
+ | 7.93781767 0.02753308 0.46753874 | ||
+ | |||
+ | g3b.coef <- coef( gauss03b ) | ||
+ | esa2$total.fit <- g3b.coef[" | ||
+ | esa2$total.res <- esa2$total - esa2$total.fit | ||
+ | |||
+ | |||
+ | # Gráfico de dispersão do resíduo contra valor ajustado | ||
+ | |||
+ | par(mfrow=c(1, | ||
+ | plot( esa2$total.fit, | ||
+ | abline(h=0, col=" | ||
+ | lines(lowess( esa2$total.fit, | ||
+ | |||
+ | |||
+ | # Gráfico Quantil-Quantil (para Normal) dos resíduos | ||
+ | |||
+ | qqnorm( esa2$total.res ) | ||
+ | qqline( esa2$total.res ) | ||
+ | |||
+ | </ | ||
+ | |||
+ | O gráfico quantil-quantil sugere que os resíduos ainda não se comportam adequadamente sob a distribuição Gaussiana. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Ajuste do Modelo Log-Normal | ||
+ | |||
+ | Podemos ajustar o modelo Log-Normal, tomando a variável combinada (dap^2 * ht) como preditora na função do parâmetro $\mu$ da logn-normal. | ||
+ | |||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Lembre que os parâmetros $\mu$ e $\sigma$ da distribuição log-normal correspondem à média e desvio-padrão dos **logaritmos** da variável. | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Nosso modelo pode agora ser expresso assim: | ||
+ | |||
+ | $$ B \sim LN( \mu = \beta_0 + \beta_1 (d^2\ h), \ \sigma = \alpha ) $$ | ||
+ | |||
+ | Ou seja: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "$B$ é uma variável **log-normal** com parâmetro $\mu$ que é uma função linear de $(d^2\ h)$ e parâmetro $\sigma$ que é uma constante" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Para ajustar este modelo criamos uma função de log-verossimilhança usando a função de densidade da log-normal, ao invés da densidade normal que usamos até agora: | ||
+ | |||
+ | <code rsplus> | ||
+ | > sd(log(esa2$total)) | ||
+ | [1] 1.040294 | ||
+ | > | ||
+ | > nllikLGauss <- function(b0=0, | ||
+ | + { | ||
+ | + mlog <- b0+b1*log(esa$dap^2*esa$ht) | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > lgauss01 <- mle2( nllikLGauss ) | ||
+ | There were 16 warnings (use warnings() to see them) | ||
+ | > warnings()[1] | ||
+ | $`NaNs produced` | ||
+ | dlnorm(x, meanlog, sdlog, log) | ||
+ | |||
+ | > summary(lgauss01) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikLGauss) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | b0 | ||
+ | b1 0.859640 | ||
+ | slog 0.334126 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 317.4077 | ||
+ | > | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( profile( lgauss01 ) ) | ||
+ | There were 50 or more warnings (use warnings() to see the first 50) | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | Mas podemos as variáveis usar as variáveis | ||
+ | |||
+ | <code rsplus> | ||
+ | > nllikLGauss2 <- function(b0=0, | ||
+ | + { | ||
+ | + mlog <- b0+b1*log(esa$dap) +b2*log(esa$ht) | ||
+ | + | ||
+ | + } | ||
+ | > lgauss02 = mle2( nllikLGauss2 ) | ||
+ | There were 23 warnings (use warnings() to see them) | ||
+ | > summary(lgauss02) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikLGauss2) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | b0 | ||
+ | b1 2.438150 | ||
+ | b2 | ||
+ | slog 0.261749 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 299.8304 | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( profile( lgauss02 ) ) | ||
+ | There were 50 or more warnings (use warnings() to see the first 50) | ||
+ | > | ||
+ | </ | ||
+ | \ | ||
+ | |||
+ | ===== Comparação Geral dos Modelos | ||
+ | |||
+ | Façamos uma comparação geral dos modelos justados, usando o Critério de Informação de Akaike , o AIC ((Veremos com detalhe o uso do AIC na unidade sobre [[07-selecao: | ||
+ | |||
+ | ^ Nome do Modelo ^ Parâmetro ^ Função ^ AIC ^ | ||
+ | | | | ||
+ | ^ gauss01 | média | ||
+ | | | desvio padrão | $$\sigma$$ | ||
+ | | | ||
+ | ^ gauss02 | média | ||
+ | | | desvio padrão | $$\sigma$$ | ||
+ | | | ||
+ | ^ gauss03 | média | ||
+ | | | desvio padrão | $$\alpha_0 (d^2 h)^{\alpha_1}$$ | 325.3 | | ||
+ | | | ||
+ | ^ gauss03b| média | ||
+ | | | desvio padrão | $$\alpha_0 + \alpha_1 (d^2 h)^{(1/ | ||
+ | | | ||
+ | ^ gauss04 | média | ||
+ | | | desvio padrão | $$\alpha_0 (d^2 h)^{\alpha_1}$$ | 324.8 | | ||
+ | | | ||
+ | ^ gauss05 | média | ||
+ | | | desvio padrão | $$\alpha_0 (d^2 h)^{\alpha_1}$$ | ||
+ | | | ||
+ | ^ lgauss01 | ||
+ | | | desvio padrão | $$\sigma$$ | ||
+ | | | ||
+ | ^ lgauss02 | média | ||
+ | | | desvio padrão | $$\sigma$$ | ||
+ | | | ||
+ | |||
+ | |||
+ | |||
+ | ** Questões: ** | ||
+ | * Qual a importância da **//forma funcional// | ||
+ | * Qual a importância da **//forma funcional// | ||
+ | * Existe diferença quando se muda da distribuição Gaussiana para a LogNormal ? | ||
+ | * A diferença de distribuição independe da forma funcional do modelo da média ? | ||
+ | |||
+ | |||
+ | |||
+ | ===== Exemplo do Princípio da Parcimônia | ||
+ | |||
+ | Trabalhamos em todos os modelos até esse ponto com duas variáveis preditoras: DAP (dap) e altura (ht). Mas qual o desempenho de um modelo mais simples com apenas o DAP como variável preditora. | ||
+ | |||
+ | Primeiro a definição da função de log-verossimilhança negativa para o modelo com apenas o DAP baseado na distribuição Gausssiana: | ||
+ | <code rsplus> | ||
+ | > nllikGauss6 <- function(b0=-1.7, | ||
+ | + { | ||
+ | + m <- exp(b0) * esa$dap^b1 | ||
+ | + s <- exp(a0)*esa$dap^a1 | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > gauss06 = mle2( nllikGauss6 ) | ||
+ | > summary(gauss06) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikGauss6) | ||
+ | |||
+ | Coefficients: | ||
+ | | ||
+ | b0 -1.93689 | ||
+ | b1 2.43132 | ||
+ | a0 1.15232 | ||
+ | a1 0.61590 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 294.9407 | ||
+ | |||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( profile(gauss06) ) | ||
+ | > | ||
+ | > AICtab(gauss06, | ||
+ | logLik AIC dLogLik dAIC df | ||
+ | gauss06 -147.5 | ||
+ | gauss05 -146.7 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | |||
+ | Vejamos agora no caso da distribuição LogNormal: | ||
+ | <code rsplus> | ||
+ | > nllikLGauss3 <- function(b0=0, | ||
+ | + { | ||
+ | + mlog <- b0+b1*log(esa$dap) | ||
+ | + | ||
+ | + } | ||
+ | > lgauss03 = mle2( nllikLGauss3) | ||
+ | Warning messages: | ||
+ | 1: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 2: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 3: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 4: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 5: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 6: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 7: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | 8: In dlnorm(x, meanlog, sdlog, log) : NaNs produced | ||
+ | > summary(lgauss03) | ||
+ | Maximum likelihood estimation | ||
+ | |||
+ | Call: | ||
+ | mle2(minuslogl = nllikLGauss3) | ||
+ | |||
+ | Coefficients: | ||
+ | Estimate Std. Error z value Pr(z) | ||
+ | b0 | ||
+ | b1 2.374943 | ||
+ | slog 0.262563 | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | |||
+ | -2 log L: 300.0533 | ||
+ | |||
+ | > plotprofmle( profile(lgauss03) ) | ||
+ | There were 50 or more warnings (use warnings() to see the first 50) | ||
+ | > | ||
+ | > AICtab(lgauss03, | ||
+ | | ||
+ | lgauss03 -150.0 | ||
+ | lgauss02 -149.9 | ||
+ | |||
+ | </ | ||
+ | |||
+ | ** Questão: ** | ||
+ | * Como os modelos mais simples (apenas com o DAP) se compara aos modelos análogos mais complexos? | ||
+ | * A variável altura (ht) é uma variável importante para a predição da biomassa nesse caso? | ||
+ | |||
+ | ===== A Influência do Tamanho da Amostra ===== | ||
+ | |||
+ | Nos exemplos acima, vimos que para vários modelos a curva de verossimilhança perfilhada se mostrou problemática para vários parâmetros. | ||
+ | |||
+ | Vamos usar um exemplo com os modelos de **// | ||
+ | "'' | ||
+ | |||
+ | <code rsplus> | ||
+ | > euca.egr = read.table(" | ||
+ | > head( euca.egr ) | ||
+ | > dim( euca.egr ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ajustaremos em que o volume de madeira das árvores ("'' | ||
+ | |||
+ | $$Y \ \sim \ N(\mu=\beta_0 | ||
+ | |||
+ | |||
+ | Assumindo o conjunto completo do dados como uma " | ||
+ | <code rsplus> | ||
+ | > N = dim( euca.egr )[1] | ||
+ | > egr.100 = euca.egr[ sample(1:N, 100), ] | ||
+ | > egr.150 = euca.egr[ sample(1:N, 150), ] | ||
+ | > egr.200 = euca.egr[ sample(1:N, 200), ] | ||
+ | > egr.500 = euca.egr[ sample(1:N, 500), ] | ||
+ | > egr.1000 = euca.egr[ sample(1:N, 1000), ] | ||
+ | </ | ||
+ | |||
+ | E então criamos uma função de log-verossimilhança negativa para o modelo: | ||
+ | |||
+ | <code rsplus> | ||
+ | > nllikGauss5.egr <- function(b0=-1.7, | ||
+ | + { | ||
+ | + m <- exp(b0) * dap^b1 * ht^b2 | ||
+ | + s <- exp(a0)*(dap^2*ht)^a1 | ||
+ | + | ||
+ | + } | ||
+ | </ | ||
+ | |||
+ | E ajustamos | ||
+ | |||
+ | <code rsplus> | ||
+ | > dap = egr.100$dap | ||
+ | > ht = egr.100$ht | ||
+ | > vol = egr.100$vol | ||
+ | > gauss.100 = mle2( nllikGauss5.egr ) | ||
+ | > gauss.100.prof = profile( gauss.100 ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ajustando o modelo e gerando os perfis dos parâmetros para a amostra $n = 150$: | ||
+ | <code rsplus> | ||
+ | > dap = egr.150$dap | ||
+ | > ht = egr.150$ht | ||
+ | > vol = egr.100$vol | ||
+ | > gauss.150 = mle2( nllikGauss5.egr ) | ||
+ | > gauss.150.prof = profile( gauss.150 ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ajustando o modelo e gerando os perfis dos parâmetros para a amostra $n = 200$: | ||
+ | <code rsplus> | ||
+ | > dap = egr.200$dap | ||
+ | > ht = egr.200$ht | ||
+ | > vol = egr.200$vol | ||
+ | > gauss.200 = mle2( nllikGauss5.egr ) | ||
+ | > gauss.200.prof = profile( gauss.200 ) | ||
+ | </ | ||
+ | |||
+ | Ajustando o modelo e gerando os perfis dos parâmetros para a amostra $n = 500$: | ||
+ | <code rsplus> | ||
+ | > dap = egr.500$dap | ||
+ | > ht = egr.500$ht | ||
+ | > vol = egr.500$vol | ||
+ | > gauss.500 = mle2( nllikGauss5.egr ) | ||
+ | > gauss.500.prof = profile( gauss.500 ) | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | Ajustando o modelo e gerando os perfis dos parâmetros para a amostra $n = 1000$: | ||
+ | <code rsplus> | ||
+ | > dap = egr.1000$dap | ||
+ | > ht = egr.1000$ht | ||
+ | > vol = egr.1000$vol | ||
+ | > gauss.1000 = mle2( nllikGauss5.egr ) | ||
+ | > gauss.1000.prof = profile( gauss.1000 ) | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | Ajustando o modelo e gerando os perfis dos parâmetros para a " | ||
+ | <code rsplus> | ||
+ | > dap = euca.egr$dap | ||
+ | > ht = euca.egr$ht | ||
+ | > vol = euca.egr$vol | ||
+ | > gauss.euca = mle2( nllikGauss5.egr ) | ||
+ | > gauss.euca.prof = profile( gauss.euca ) | ||
+ | </ | ||
+ | |||
+ | Produzindo os gráficos do verossimilhança perfilhada para todos os parâmetros, | ||
+ | <code rsplus> | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.100.prof ) | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.150.prof ) | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.200.prof ) | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.500.prof ) | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.1000.prof ) | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.euca.prof ) | ||
+ | </ | ||
+ | |||
+ | Focalizando especificamente na MLE do parâmetro $\beta_1$ (segundo parâmetro): | ||
+ | <code rsplus> | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.100.prof , which=2); title(main=" | ||
+ | > plotprofmle( gauss.150.prof , which=2); title(main=" | ||
+ | > plotprofmle( gauss.200.prof , which=2); title(main=" | ||
+ | > plotprofmle( gauss.500.prof , which=2); title(main=" | ||
+ | > plotprofmle( gauss.1000.prof , which=2); title(main=" | ||
+ | > plotprofmle( gauss.euca.prof , which=2); title(main=" | ||
+ | </ | ||
+ | |||
+ | Focalizando especificamente na MLE do parâmetro $\beta_2$ (terceiro parâmetro): | ||
+ | <code rsplus> | ||
+ | > par(mfrow=c(2, | ||
+ | > plotprofmle( gauss.100.prof , which=3); title(main=" | ||
+ | > plotprofmle( gauss.150.prof , which=3); title(main=" | ||
+ | > plotprofmle( gauss.200.prof , which=3); title(main=" | ||
+ | > plotprofmle( gauss.500.prof , which=3); title(main=" | ||
+ | > plotprofmle( gauss.1000.prof , which=3); title(main=" | ||
+ | > plotprofmle( gauss.euca.prof , which=3); title(main=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Questões: | ||
+ | * Qual a influência do tamanho da amostra no valor da MLE obtida? | ||
+ | * Qual a influência do tamanho da amostra sobre a curva de verossimilhança perfilhada? Como isso deve ser interpretado em termos de qualidade da estimatição? | ||
+ | * A influência do tamanho da amostra é a mesma sobre as MLE de todos os parâmetros? | ||
+ | |||
+ | ===== Modelo da ANOVA ===== | ||
+ | |||
+ | Neste tutorial **opcional** descrevemos e ajustamos o modelo estatístico que está por trás da análise de variância. | ||
+ | |||
+ | Usaremos os dados do exemplo 12.1 de Zar (1999)((Zar, | ||
+ | |||
+ | <code rsplus> | ||
+ | calcium <- c(16.5, | ||
+ | | ||
+ | | ||
+ | | ||
+ | hormonio <- factor(rep(c(" | ||
+ | sexo <- factor(rep(c(" | ||
+ | </ | ||
+ | |||
+ | Este experimento tem dois fatores (sexo e tratamento com hormônio), cada um com dois níveis. Na abordagem de teste de significância, | ||
+ | |||
+ | - Não há efeito do sexo da ave; | ||
+ | - Não há efeito do tratamento com o hormônio; | ||
+ | - Não há interação entre os dois fatores acima. | ||
+ | |||
+ | ==== Especificando o Modelo ==== | ||
+ | Como todo teste de significância, | ||
+ | |||
+ | - As amostras vêm de populações estatísticas com variâncias iguais; | ||
+ | - As amostras vêm de populações estatísticas de medidas com distribuição normal. | ||
+ | |||
+ | Portanto, a variável-resposta está descrita neste modelo como uma variável normal, cuja média é afetada pelos fatores, e a variância (e portanto o desvio-padrão) é constante. Como na variável normal média e desvio-padrão correspondem aos parâmetros, | ||
+ | |||
+ | $$ Y \ \sim \ N(\mu=f(X_i)\ , \ \sigma=c)$$ | ||
+ | |||
+ | Que lemos: | ||
+ | |||
+ | <WRAP center round box 60%> | ||
+ | "$Y$ é uma variável Gaussiana, com parâmetro $\mu$ que é uma função de preditoras $X_i$, e parâmetro $\sigma$ constante." | ||
+ | </ | ||
+ | |||
+ | ==== Modelo de Médias ==== | ||
+ | |||
+ | Uma das maneira de representar o efeito dos fatores sobre o valor esperado da variável-resposta é substituir $\mu$ na expressão acima pela média do grupo experimental de cada observação. | ||
+ | |||
+ | Como temos um experimento com dois fatores de dois níveis cada, temos quatro grupos: | ||
+ | <code rsplus> | ||
+ | > intval <- interaction(hormonio, | ||
+ | > intval | ||
+ | [1] NO.F NO.F NO.F NO.F NO.F NO.M NO.M NO.M NO.M NO.M YES.F YES.F | ||
+ | [13] YES.F YES.F YES.F YES.M YES.M YES.M YES.M YES.M | ||
+ | Levels: NO.F YES.F NO.M YES.M | ||
+ | </ | ||
+ | |||
+ | Cujas médias são: | ||
+ | <code rsplus> | ||
+ | > medias <- tapply(calcium, | ||
+ | > medias | ||
+ | NO.F YES.F NO.M YES.M | ||
+ | 14.88 32.52 12.12 27.78 | ||
+ | </ | ||
+ | |||
+ | Definindo $Y_{ij\cdot}$ como os valores do grupo experimental definido pelo nível $i$ do primeiro fator e nível $j$ do segundo fator, nosso modelo torna-se: | ||
+ | |||
+ | $$Y_{ij\cdot}\ | ||
+ | |||
+ | Onde $E[Y_{ij\cdot}]$ é o valor esperado, ou a média, de $Y$ em cada grupo. Podemos definir uma função de verossimilhança para este modelo da seguinte forma: | ||
+ | |||
+ | <code rsplus> | ||
+ | LL.m3a <- function(NO.F, | ||
+ | intval <- interaction(hormonio, | ||
+ | media <- c(NO.F, | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Detalhes sobre esta função estão no fim desta seção. | ||
+ | |||
+ | Agora podemos minimizar esta função com o '' | ||
+ | |||
+ | <code rsplus> | ||
+ | library(" | ||
+ | m3a <- mle2(LL.m3a, | ||
+ | </ | ||
+ | |||
+ | Os valores estimados das médias dos grupos correspondem aos valores iniciais, pois os MLEs das médias dos grupos são as médias amostrais: | ||
+ | |||
+ | <code rsplus> | ||
+ | > coef(m3a) | ||
+ | NO.F YES.F | ||
+ | 14.88000 32.52000 12.12000 27.78000 | ||
+ | > medias | ||
+ | NO.F YES.F NO.M YES.M | ||
+ | 14.88 32.52 12.12 27.78 | ||
+ | </ | ||
+ | |||
+ | Vamos inspecionar os perfis de verossimilhança destas estimativas, | ||
+ | |||
+ | <code rsplus> | ||
+ | source(" | ||
+ | </ | ||
+ | |||
+ | E agora podemos avaliar os perfis de verossimilhança dos valores esperados para cada grupo com | ||
+ | <code rsplus> | ||
+ | m3a.prof <- profile(m3a) | ||
+ | plot.prof.aov(m3a.prof, | ||
+ | </ | ||
+ | |||
+ | Os intervalos de plausibilidade de machos e fêmeas sob o mesmo tratamento de hormônio estão sobrepostos, | ||
+ | |||
+ | <code rsplus> | ||
+ | ##função de verossimilhança | ||
+ | LL.m2a <- function(NO, | ||
+ | media <- c(NO, | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | ##Ajuste | ||
+ | m.horm <- tapply(calcium, | ||
+ | m2a <- mle2(LL.m2a, | ||
+ | </ | ||
+ | |||
+ | Os valores estimados correspondem às médias dos grupos: | ||
+ | <code rsplus> | ||
+ | > m.horm | ||
+ | | ||
+ | 13.50 30.15 | ||
+ | > coef(m2a) | ||
+ | NO YES sigma | ||
+ | 13.49998 30.14997 | ||
+ | </ | ||
+ | |||
+ | Não há sobreposição nos intervalos, indicando diferenças nos valores esperados das concentrações de cálcio dos dois grupos, segundo este modelo: | ||
+ | |||
+ | <code rsplus> | ||
+ | m2a.prof <- profile(m2a) | ||
+ | plot.prof.aov(m2a.prof, | ||
+ | </ | ||
+ | |||
+ | Vamos ainda considerar um modelo mais simples, que descreve a hipótese de ausência de efeitos dos dois fatores: | ||
+ | <code rsplus> | ||
+ | LL.m1a <- function(media, | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | m1a <- mle2(LL.m1a, | ||
+ | </ | ||
+ | |||
+ | Os resultados anteriores indicam um efeito do hormônio. Mas para representar com modelos todas as hipóteses da ANOVA vamos também ajustar o modelo apenas com efeito do sexo: | ||
+ | |||
+ | <code rsplus> | ||
+ | LL.m4a <- function(F, | ||
+ | media <- c(F, | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | m.sexo <- tapply(calcium, | ||
+ | m4a <- mle2(LL.m4a, | ||
+ | </ | ||
+ | |||
+ | E agora comparamos os quatro modelos com o AIC corrigido para pequenas amostras: | ||
+ | |||
+ | <code rsplus> | ||
+ | > AICctab(m1a, | ||
+ | nobs=length(calcium)) | ||
+ | AICc df dAICc weight | ||
+ | m2a 126.2 3 0.0 0.821 | ||
+ | m3a 129.2 5 3.1 0.179 | ||
+ | m1a 151.8 2 25.6 <0.001 | ||
+ | m4a 153.8 3 27.6 <0.001 | ||
+ | </ | ||
+ | |||
+ | O modelo mais plausível é o que descreve as medidas de cálcio como variáveis aleatórias com valores esperados diferentes para o grupo controle e o que recebeu hormônio. Isto indica que não há efeito do sexo nem da interação entre sexo e hormônio. O teste F aponta para a mesma conclusão: | ||
+ | |||
+ | <code rsplus> | ||
+ | > summary(aov(calcium~hormonio*sexo)) | ||
+ | Df Sum Sq Mean Sq F value Pr(> | ||
+ | hormonio | ||
+ | sexo | ||
+ | hormonio: | ||
+ | Residuals | ||
+ | --- | ||
+ | Signif. codes: | ||
+ | </ | ||
+ | |||
+ | == Um modelo que não está na ANOVA == | ||
+ | |||
+ | Podemos ir além da ANOVA não só explicitando os modelos que ela usa, como também propondo novos. | ||
+ | |||
+ | Por exemplo, podemos investigar a premissa de igualdade de variâncias com um modelo em que cada nível do fator hormônio pode ter um desvio-padrão diferente: | ||
+ | |||
+ | <code rsplus> | ||
+ | ## Função para calculo do MLE do desvio-padrão | ||
+ | sd.mle <- function(x){sqrt((var(x)*(length(x)-1))/ | ||
+ | ## MLEs dos desvios de cada grupo | ||
+ | sigma.horm <- tapply(calcium, | ||
+ | ##Função de verossimilhança | ||
+ | LL.m5a <- function(NO, | ||
+ | media <- c(NO, | ||
+ | sigma <- c(sigma.NO, | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | ## Ajuste do modelo | ||
+ | m5a <- mle2(LL.m5a, | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Os valores estimados dos parâmetros correspondem às estimativas obtidas das amostras, que foram usadas como valores iniciais no ajuste: | ||
+ | |||
+ | <code rsplus> | ||
+ | > coef(m5a) | ||
+ | | ||
+ | 13.500000 30.150000 | ||
+ | > m.horm | ||
+ | | ||
+ | 13.50 30.15 | ||
+ | > sigma.horm | ||
+ | NO YES | ||
+ | 2.486363 6.162508 | ||
+ | </ | ||
+ | |||
+ | E os perfis de verossimilhança mostram que a precisão das estimativas das médias melhorou um pouco | ||
+ | <code rsplus> | ||
+ | m5a.prof <- profile(m5a) | ||
+ | plot.prof.aov(m5a.prof, | ||
+ | </ | ||
+ | |||
+ | E que os intervalos de plausibilidade para as estimativas dos desvios-padrão estão ligeiramente sobrepostos: | ||
+ | |||
+ | <code rsplus> | ||
+ | plot.prof.aov(m5a.prof, | ||
+ | </ | ||
+ | |||
+ | Apesar disto, o AICc indica que este modelo é mais plausível do que o anteriormente selecionado: | ||
+ | |||
+ | <code rsplus> | ||
+ | > AICctab(m1a, | ||
+ | nobs=length(calcium)) | ||
+ | AICc df dAICc weight | ||
+ | m5a 122.0 4 0.0 0.8668 | ||
+ | m2a 126.2 3 4.1 0.1094 | ||
+ | m3a 129.2 5 7.2 0.0238 | ||
+ | m1a 151.8 2 29.8 <0.001 | ||
+ | m4a 153.8 3 31.8 <0.001 | ||
+ | </ | ||
+ | |||
+ | == Sobre as funções de verossimilhança deste tutorial == | ||
+ | |||
+ | Neste tutorial criamos funções de verossimilhança no R para modelos que têm fatores como variáveis preditoras como proposto no capítulo 9 de Bolker (2008)((Bolker, | ||
+ | |||
+ | A ideia é usar a indexação para criar um vetor que indica um valor esperado diferente para cada grupo. Nesta função, o valor do argumento '' | ||
+ | Isto é feito na terceira linha da função: | ||
+ | |||
+ | <code rsplus> | ||
+ | media <- c(NO.F, | ||
+ | </ | ||
+ | |||
+ | Para entender como isto funciona, veja o que ocorre com os comandos: | ||
+ | <code rsplus> | ||
+ | intval <- interaction(hormonio, | ||
+ | intval | ||
+ | medias <- tapply(calcium, | ||
+ | medias | ||
+ | medias[intval] | ||
+ | data.frame(hormonio, | ||
+ | </ | ||
+ | |||
+ | ==== Modelos de Efeitos ==== | ||
+ | |||
+ | Uma outra maneira de parametrizar o modelo da ANOVA é definir $\mu$ como uma relação linear: | ||
+ | |||
+ | $$\mu \ = \ \beta_0 + \beta_1X_1 + \beta_2X_2 + \beta_3X_1X_2$$ | ||
+ | |||
+ | Onde a variável preditora $X_1$ é o fator hormônio, com valor $X_1=0$ para as aves que não receberam hormônio, e $X_1=1$ para as que receberam. Da mesma forma, $X_2=0$ para fêmeas $X_2=1$ para machos. | ||
+ | |||
+ | Desta maneira, o valor esperado para as fêmeas que não receberam o hormônio será o intercepto da equação linear: | ||
+ | |||
+ | $$\mu_{F.N} \ = \ \beta_0 \ + \beta_1 \times 0 \ + \beta_2 \times 0 \ + \beta_3 \times 0 \times 0 = \beta_0$$ | ||
+ | |||
+ | Do mesmo modo, o valor esperado para fêmeas que receberam hormônio será | ||
+ | |||
+ | $$\mu_{F.Y} \ = \beta_0 \ + \beta_1 \times 1 \ + \beta_2 \times 0 \ + \beta_3 \times 1 \times 0 = \beta_0 + \beta_1$$ | ||
+ | |||
+ | Portanto $\beta_1$ representa a diferença entre a média das fêmeas que não receberam o hormônio e a das fêmeas que receberam. Em outras palavras, é o quanto o tratamento com hormônio acrescenta ao valor esperado, ou o **efeito** deste tratamento. | ||
+ | |||
+ | Da mesma forma, $\beta_2$ é o efeito do sexo masculino. Por fim, o parâmetro $\beta_3$ permite que o efeito dos dois fatores combinados seja diferente da soma dos efeitos de cada fator, o que configura uma interação entre fatores: | ||
+ | |||
+ | $$\mu_{M.Y} \ = \beta_0 + \beta_1 + \beta_2 + \beta_3$$ | ||
+ | |||
+ | Para ajustar este modelo no R usamos: | ||
+ | |||
+ | <code rsplus> | ||
+ | ## Diferencas entre as medias | ||
+ | d.sexo <- diff(m.sexo) | ||
+ | d.horm <- diff(m.horm) | ||
+ | ##Função de verossimilhança | ||
+ | LL.m3b <- function(intercepto, | ||
+ | media <- intercepto+e.horm*(hormonio==" | ||
+ | int*(hormonio==" | ||
+ | -sum(dnorm(calcium, | ||
+ | } | ||
+ | ##Ajuste do modelo | ||
+ | m3b <- mle2(LL.m3b, | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Neste tipo de modelo, se um intervalo de verossimilhança de um parâmetro inclui o zero, é plausível que este efeito seja nulo. Verifique isto para o modelo ajustado acima com: | ||
+ | |||
+ | <code rsplus> | ||
+ | m3b.prof <- profile(m3b) | ||
+ | par(mfrow=c(3, | ||
+ | plotprofmle(m3b.prof) | ||
+ | </ | ||
+ | |||
+ | A conclusões são coerentes com as obtidas com a parametrização anterior? Vamos comparar os MLEs dos mesmos modelos com os dois tipos de parametrização: | ||
+ | |||
+ | <code rsplus> | ||
+ | > cf.m3b <- coef(m3b) | ||
+ | > cf.m3b | ||
+ | intercepto | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Para fêmeas que receberam hormônio, o modelo de efeitos prevê um valor esperado de | ||
+ | <code rsplus> | ||
+ | > as.numeric(cf.m3b[1]+cf.m3b[2]) | ||
+ | [1] 32.51988 | ||
+ | </ | ||
+ | |||
+ | Você vê a correspondência entre os dois modelos? Compare com as estimativas dos parâmetros obtidas para o mesmo modelo, na seção anterior: | ||
+ | |||
+ | <code rsplus> | ||
+ | > cf.m3a <- coef(m3a) | ||
+ | > cf.m3a | ||
+ | NO.F YES.F | ||
+ | 14.88000 32.52000 12.12000 27.78000 | ||
+ | </ | ||
+ | |||
+ | === Efeitos em Modelos no R === | ||
+ | |||
+ | A parametrização dos modelos como efeitos aditivos que descrevemos acima é a usada no R para modelos lineares com variáveis preditoras contínuas ou categóricas não ordenadas. | ||
+ | |||
+ | Verifique isto comparando os coeficientes obtidos acima para o modelo com interação com os obtidos com | ||
+ | |||
+ | <code rsplus> | ||
+ | summary(lm(calcium~hormonio*sexo)) | ||
+ | </ | ||
+ | |||
+ | === Notação de Fórmula da mle2 === | ||
+ | |||
+ | A função '' | ||
+ | |||
+ | Compare os resultados dos ajustes do modelo com interação com este novo modelo: | ||
+ | |||
+ | <code rsplus> | ||
+ | ## É preciso colocar as variaveis em um dataframe | ||
+ | df <- data.frame(calcium=calcium, | ||
+ | | ||
+ | m3c <- mle2(calcium~dnorm(mean=media, | ||
+ | parameters=list(media~hormonio*sexo, | ||
+ | start=list(media=mean(calcium), | ||
+ | data = df) | ||
+ | </ | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ------------------ | ||
+ | \\ | ||
+ | |||
+ | ====== Questões motivadoras ====== | ||
+ | |||
+ | ===1. Modelo Gaussiano x modelo da regressão linear=== | ||
+ | |||
+ | Neste curso temos descrito o modelo Gaussiano com a média dependente de uma medida preditora $X$ como: | ||
+ | |||
+ | $$ Y \sim N ( \mu = a_0 + a_1 X, \sigma = b_0) $$ | ||
+ | |||
+ | A regressão linear simples é muitas vezes expressa da seguinte maneira: | ||
+ | |||
+ | $$ Y = a_0 + a_1 X + \epsilon$$ | ||
+ | |||
+ | onde $\epsilon \sim N(\mu = 0, \sigma)$ | ||
+ | |||
+ | Explique porque estas duas formulações são equivalentes. | ||
+ | |||
+ | === 2. Modelo de função de potência === | ||
+ | |||
+ | Em muito arquipélagos, | ||
+ | |||
+ | $$ S = \alpha A ^{\beta} $$ | ||
+ | |||
+ | Como é possível obter estimativas dos parâmetros $\alpha$ e $\beta$ | ||
+ | |||
+ | ===3. Interpretação do intercepto === | ||
+ | |||
+ | - Qual sua interpretação do intercepto estimado pelo modelo [[: | ||
+ | - Um modelo com intercepto fixo em zero seria mais adequado? Por que? | ||
+ | |||
+ | ===4. Dados exponenciais === | ||
+ | |||
+ | Use o R para simular o seguinte: | ||
+ | - Uma amostra de 100 observações de uma variável uniforme entre $-2$ e $2$. Chame este vetor de '' | ||
+ | - Uma amostra de 100 observações de uma normal com média igual a $\mu = 0,3 X - 1$ e desvio-padrão $\sigma = 0,2$. Chame este vetor de '' | ||
+ | - Exponencie os valores de '' | ||
+ | |||
+ | Uma regressão linear simples seria um modelo adequado para descrever | ||
+ | |||
+ | ====== Exercícios ====== | ||
+ | |||
+ | Faça o exercício 206.1 no sistema [[http:// | ||
+ | ====== Recursos para Estudo ====== | ||
+ | |||
+ | ===== Leituras ===== | ||
+ | === Principal === | ||
+ | * Standard Statistics Revisited, seções 9.1 a 9.3, capítulo 9 de: Bolker, B.M. 2008 Ecological Models and Data in R Princeton: Princeton University Press. | ||
+ | |||
+ | === Complementares === | ||
+ | * Likelihood and least squares theory. Seção 1.2.2 do Cap.1 de Burnham, K. P., & Anderson, D. R. (2002). Model Selection and Multimodel Inference: A Practical-Theoretic Approach, 2nd ed. New York, Springer-Verlag. | ||
+ | * {{: | ||
+ | * {{: | ||
+ | * {{: | ||
+ | * Para fazer os gráficos da Verossimilhança Perfilhada, você pode utilizar a função **'' | ||
+ | * {{: | ||
+ | |||
+ | == Uma teoria sobre a relação entre média e variância == | ||
+ | |||
+ | * Taylor, L.R. Aggregation, | ||
+ | * [[https:// | ||
+ | |||
+ | |||