07-selecao:07-selecao
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 | ||
07-selecao:07-selecao [2020/11/27 17:44] – [Na Internet] paulo | 07-selecao:07-selecao [2022/11/24 14:12] (atual) – edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== 7. Seleção de Modelos ====== | ||
+ | |||
+ | |||
+ | \\ | ||
+ | Se tenho muitos modelos candidatos a descrever meus dados qual devo escolher? A seleção de modelos baseada em teoria da informação é uma resposta. É uma teoria muito elegante que demonstra a relação entre verossimilhança e a quantidade de informação que se perde quando aproximamos os dados com um modelo. O Critério de Informação de Akaike (AIC) expressa esta perda de informação, | ||
+ | |||
+ | Nos tutoriais abaixo você vai primeiro aplicar a seleção de modelos a dois casos simples. No último tutorial você vai reproduzir em computador os passos de dedução do AIC, partindo de medidas de distância informacional, | ||
+ | ===== Conceitos ===== | ||
+ | |||
+ | * Entropia e informação | ||
+ | * Divergência Estatística | ||
+ | * Distância de Kullback-Leibler | ||
+ | * Propriedades da Distância Kullback-Leibler | ||
+ | * Máxima Log-Verossimilhança | ||
+ | * Discrepância de Aproximação | ||
+ | * Discrepância de Estimação | ||
+ | * Critério de Informação de Akaike - AIC | ||
+ | * Interpretação do AIC | ||
+ | * Delta-AIC, peso de evidência, tabela de seleção de modelos | ||
+ | |||
+ | |||
+ | ===== Tutoriais ===== | ||
+ | |||
+ | ==== Cipós e Sobrevivência de Árvores | ||
+ | |||
+ | Aqui retomamos o exercício da unidade de verossimilhança sobre [[03-funcao-veros: | ||
+ | |||
+ | A tabela abaixo apresenta o número de árvores em diferentes classes | ||
+ | de incidência de cipó (incidência crescente). | ||
+ | 1997 se referem a árvores com as quais se iniciou o estudo e | ||
+ | os dados no ano de 2000 se referem às árvores que sobreviveram. | ||
+ | |||
+ | | ^ Incidência de Cipó ^^^ | ||
+ | ^ Ano ^ Baixa ^ Média | ||
+ | | 1997 | 1146 | 797 | 1081 | | ||
+ | | 2000 | 1044 | 711 | 934 | | ||
+ | |||
+ | Do exercício anterior já temos os perfis de verossimilhança das taxas de sobrevivência de cada grupo, que indicam que há diferenças entre elas: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | É realista aplicar uma mesma taxa de sobrevivência para todas as árvores independentemente da classe? Esta pergunta é respondida comparando-se dois modelos: | ||
+ | |||
+ | - Todas as classes têm a mesma sobrevivência. | ||
+ | - Cada classe tem uma taxa de sobrevivência diferente. | ||
+ | - As classes de baixa e média infestação têm a mesma taxa de sobrevivência, | ||
+ | - As classes de alta e média infestação têm a mesma taxa de sobrevivência, | ||
+ | |||
+ | |||
+ | O número de sobreviventes pode ser descrito como uma distribuição binomial, cujo parâmetro $N$ é fixado pelo número de árvores em 1997. A estimativa de máxima verossimilhança da taxa de sobrevivência é a razão entre sobreviventes e este total. | ||
+ | |||
+ | Vamos definir uma função para calcular a log-verossimilhança negativa: | ||
+ | |||
+ | <code rsplus> | ||
+ | LL.bin <- function(x, | ||
+ | -sum(dbinom(x, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | E a utilizamos para calcular a log-verossimilhança negativa de cada modelo. Para o modelo 1, ela será a soma dos logaritmos das probabilidades atribuídas pela binomial com parâmetro $p=2689/ | ||
+ | <code rsplus> | ||
+ | N1 <- 1146 | ||
+ | N2 <- 797 | ||
+ | N3 <- 1081 | ||
+ | n1 <- 1044 | ||
+ | n2 <- 711 | ||
+ | n3 <- 934 | ||
+ | modelo1 <- LL.bin(p=(n1+n2+n3)/ | ||
+ | N=N1+N2+N3, | ||
+ | </ | ||
+ | |||
+ | Para o modelo 2, calculamos as log-verossimilhanças para cada classe, usando como parâmetros o total de árvores e a proporção de sobreviventes em cada classe. Como as log-verossimilhanças são aditivas, podemos calcular cada uma separadamente e depois somá-las, para obter a log-verossimilhança do modelo completo: | ||
+ | |||
+ | <code rsplus> | ||
+ | modelo2 <- LL.bin(p=n1/ | ||
+ | LL.bin(p=n2/ | ||
+ | LL.bin(p=n3/ | ||
+ | </ | ||
+ | |||
+ | Para o modelo 3, calculamos a log-verossimilhança das contagens nas duas primeiras classes para parâmetros $N = 1146+797 = 1943$ e $p=(1044+711)/ | ||
+ | |||
+ | <code rsplus> | ||
+ | modelo3 <- LL.bin(p=(n1+n2)/ | ||
+ | LL.bin(p=n3/ | ||
+ | </ | ||
+ | |||
+ | Usando a mesma lógica, calculamos a log-verossimlhança para o modelo 4: | ||
+ | |||
+ | <code rsplus> | ||
+ | modelo4 <- LL.bin(p=(n3+n2)/ | ||
+ | LL.bin(p=n1/ | ||
+ | </ | ||
+ | |||
+ | O primeiro modelo tem um parâmetro estimado, que é uma taxa de sobrevivência para todas as classes. Seu AIC é: | ||
+ | |||
+ | <code rsplus> | ||
+ | > 2*modelo1 + 2 | ||
+ | [1] 17811.13 | ||
+ | </ | ||
+ | |||
+ | E como o modelo 2 tem três parâmetros estimados, seu AIC será: | ||
+ | <code rsplus> | ||
+ | > 2*modelo2 + 6 | ||
+ | [1] 25.23459 | ||
+ | </ | ||
+ | |||
+ | Por fim, calculamos os AICs dos modelos 3 e 4, que têm dois parâmetros estimados: | ||
+ | <code rsplus> | ||
+ | > 2*modelo3 + 4 | ||
+ | [1] 5103.06 | ||
+ | > 2*modelo4 + 4 | ||
+ | [1] 4178.069 | ||
+ | </ | ||
+ | |||
+ | O modelo 2 é o mais plausível. | ||
+ | |||
+ | |||
+ | ==== Modelos no Teste t ==== | ||
+ | |||
+ | O primeiro exemplo de Teste t de Zar(1989)((Zar, | ||
+ | |||
+ | <code rsplus> | ||
+ | drugB <- c(8.8, | ||
+ | drugG <- c(9.9, | ||
+ | </ | ||
+ | |||
+ | O experimento foi conduzido para avaliar se estas drogas afetam de maneira diferente a coagulação. As médias e desvios-padrão amostrais são: | ||
+ | |||
+ | <code rsplus> | ||
+ | media.B <- mean(drugB) | ||
+ | media.G <- mean(drugG) | ||
+ | sd.B <- sd(drugB) | ||
+ | sd.G <- sd(drugG) | ||
+ | </ | ||
+ | |||
+ | Sendo a média e desvio-padrão das duas amostras combinadas (//pooled mean e pooled standard deviation// | ||
+ | |||
+ | <code rsplus> | ||
+ | media.pool <- mean(c(drugB, | ||
+ | sd.pool <- (var(drugB)*(length(drugB)-1)+ | ||
+ | var(drugG)*(length(drugG)-1))/ | ||
+ | (length(drugB)+length(drugG)-2) | ||
+ | </ | ||
+ | |||
+ | Estas quantidades são usadas para calcular a estatística $t$, cuja probabilidade de assumir o valor observado sob a hipótese nula é usado para se decidir se há diferenças nas médias das populações de onde vieram as amostras. | ||
+ | |||
+ | As duas hipóteses deste teste são os seguintes modelos | ||
+ | * **Modelo 1:** as medidas são realizações de uma só distribuição normal. | ||
+ | * **Modelo 2:** As medidas tomadas de cada grupo são realizações de duas distribuição normais, com parâmetro $\mu$ diferente, mas com o mesmo parâmetro $\sigma$. | ||
+ | |||
+ | Outro modelo, não contemplado neste teste é | ||
+ | |||
+ | * **Modelo 3:** As medidas tomadas de cada grupo são realizações de duas distribuições normais, com parâmetros | ||
+ | |||
+ | Para comparar estes modelos, calculamos suas log-verossimilhanças negativas. | ||
+ | |||
+ | <code rsplus> | ||
+ | LL1 <- -sum(dnorm(c(drugB, | ||
+ | sd=sd.pool, | ||
+ | LL2 <- -sum(dnorm(drugB, | ||
+ | | ||
+ | LL3 <- -sum(dnorm(drugB, | ||
+ | | ||
+ | </ | ||
+ | |||
+ | E com estes valores calculamos os valores de AIC. Como a amostra é pequena, é preciso usar o fator de correção | ||
+ | |||
+ | $$c = \frac{n}{n-K-1}$$ | ||
+ | |||
+ | Onde $n$ é o tamanho da amostra e $k$ o número de parâmetros do modelo. Criamos uma função para este cálculo: | ||
+ | |||
+ | <code rsplus> | ||
+ | fc <- function(k, | ||
+ | </ | ||
+ | |||
+ | E calculamos os valores de AICc((usamos esta sigla para o AIC com correção para pequenas amostras)): | ||
+ | <code rsplus> | ||
+ | > 2*LL1+4*fc(2, | ||
+ | [1] 45.04798 | ||
+ | > 2*LL2+6*fc(3, | ||
+ | [1] 36.70419 | ||
+ | > 2*LL3+8*fc(4, | ||
+ | [1] 38.59355 | ||
+ | </ | ||
+ | |||
+ | O que podemos sintetizar em uma tabela de seleção de modelos | ||
+ | |||
+ | ^Modelo^Log-Verossimilhança^k^$AIC_c$^$ \Delta AIC_c$^ | ||
+ | |1 | 19,9 | 2 | 45,1 | 8,4 | | ||
+ | |2 | 14,1 | 3 | 36,7 | 0,0 | | ||
+ | |3 | 12,8 | 4 | 38,6 | 1,9 | | ||
+ | |||
+ | O modelo 3, não considerado pelo teste, é tão plausível quanto o modelo 2, que corresponde à hipótese alternativa, | ||
+ | |||
+ | No entanto, as estimativas de desvio-padrão nos modelos não são MLEs. Vamos então refazer os cálculos usando de MLEs do desvio-padrão com os comandos: | ||
+ | <code rsplus> | ||
+ | sd.mle = function(x) | ||
+ | sd.m <- sd.mle(c(drugB, | ||
+ | sd.B.m <- sd.mle(drugB) | ||
+ | sd.G.m <- sd.mle(drugG) | ||
+ | |||
+ | LL1.mle <- -sum(dnorm(c(drugB, | ||
+ | sd=sd.m, | ||
+ | LL2.mle <- -sum(dnorm(drugB, | ||
+ | | ||
+ | LL3.mle <- -sum(dnorm(drugB, | ||
+ | | ||
+ | </ | ||
+ | |||
+ | O que resulta em valores diferentes. Qual sua conclusão? | ||
+ | |||
+ | |||
+ | ^Modelo^Log-Verossimilhança^k^$\text{AIC}_c$^$\Delta \text{AIC}_c$^ | ||
+ | |1 | 16,0 | 2 | 37,2 | 1,2 | | ||
+ | |2 | 13,7 | 3 | 36,0 | 0,0 | | ||
+ | |3 | 12,7 | 4 | 38,4 | 3,6 | | ||
+ | |||
+ | |||
+ | ==== AIC como uma dupla esperança ==== | ||
+ | |||
+ | O Critério de Informação de Akaike é a distância relativa esperada entre dois modelos probabilísticos. | ||
+ | |||
+ | Se o modelo verdadeiro $f(x)$ é conhecido, a discrepância de um outro modelo $g(x)$ em relação a ele é dada pela distância de Kullback-Leibler: | ||
+ | |||
+ | $$I(f, | ||
+ | |||
+ | |||
+ | onde $g(x | \theta)$ representa o modelo $g$ com os valores de seus parâmetros $\theta$ que dão a melhor aproximação para o modelo verdadeiro $f$. | ||
+ | |||
+ | Para distribuições discretas esta distância é: | ||
+ | |||
+ | $$I(f, | ||
+ | |||
+ | Nos dois casos esta medida expressa a discrepância em relação a um modelo fixo de referência. Por isso podemos deduzir uma medida de discrepância relativa, que para distribuições discretas é | ||
+ | |||
+ | $$I(f,g)= \ C - \sum f(x_i) \ \ln \ g(x_i | \theta)\ = \ C - E_x\ [\ln \ g(x_i| \theta)]$$ | ||
+ | |||
+ | Onde | ||
+ | $$C \ = \sum f(x_i) \ \ln \ f(x_i) \ = \ E_x\ [\ln\ f(x_i)]$$ | ||
+ | |||
+ | E para distribuições contínuas: | ||
+ | |||
+ | $$I(f,g)=\ C - \int f(x_i)\ | ||
+ | |||
+ | Onde | ||
+ | $$C \ = \ \int f(x_i) \ \ln \ f(x_i) \ = \ E_x\ [\ln \ f(x_i)]$$ | ||
+ | |||
+ | Como o modelo de referência é o mesmo, podemos usar $E_x\ [\ln \ g(x| \theta)]$ como uma medida de distância relativa entre modelos. | ||
+ | |||
+ | Vamos imaginar que nosso modelo real é uma distribuição binomial com parâmetros $N=10$ e $p=0,05$, o que resulta em uma média de $Np=10 \times 0,05 = 0,5$. A Poisson que melhor aproxima este modelo é a que tem a mesma média, portanto com parâmetro $\lambda=0, | ||
+ | |||
+ | <code rsplus> | ||
+ | x <- 0:10 ## espaço amostral da binomial | ||
+ | f.x <- dbinom(x, | ||
+ | g.x <- dpois(x, | ||
+ | log.g.x <- log(g.x) ## ln (g(x)) | ||
+ | </ | ||
+ | |||
+ | Uma tabela com estes valores pode ser obtida com: | ||
+ | <code rsplus> | ||
+ | > round(data.frame(x, | ||
+ | x | ||
+ | 1 0 0.599 0.607 -0.500 | ||
+ | 2 1 0.315 0.303 -1.193 | ||
+ | 3 2 0.075 0.076 -2.579 | ||
+ | 4 3 0.010 0.013 -4.371 | ||
+ | 5 4 0.001 0.002 -6.451 | ||
+ | 6 5 0.000 0.000 -8.753 | ||
+ | 7 6 0.000 0.000 -11.238 | ||
+ | 8 7 0.000 0.000 -13.877 | ||
+ | 9 8 0.000 0.000 -16.650 | ||
+ | 10 9 0.000 0.000 -19.540 | ||
+ | 11 10 0.000 0.000 -22.536 | ||
+ | </ | ||
+ | |||
+ | E o obtemos valor de distância relativa com o negativo da soma da última coluna: | ||
+ | <code rsplus> | ||
+ | > -sum(f.x*log.g.x) | ||
+ | [1] 0.9204515 | ||
+ | </ | ||
+ | |||
+ | No mundo real nem o modelo verdadeiro nem os parâmetros de qualquer modelo que melhor aproximam o verdadeiro são conhecidos. Tudo o que temos são modelos simples definidos a partir de nosso conhecimento do sistema, e estimativas dos parâmetros destes modelos, obtidos a partir de uma amostra. | ||
+ | |||
+ | Por exemplo, tomando uma amostra de tamanho 5 da binomial | ||
+ | <code rsplus> | ||
+ | > set.seed(42) | ||
+ | > obs <- rbinom(5, | ||
+ | > obs | ||
+ | [1] 2 2 0 1 1 | ||
+ | > mean(obs) | ||
+ | [1] 1.2 | ||
+ | </ | ||
+ | |||
+ | A melhor estimativa do parâmetro de um modelo Poisson para aproximá-la será a média amostral, $\bar x = 1.2$. | ||
+ | |||
+ | Os comandos abaixo produzem uma figura com o modelo verdadeiro binomial, o modelo Poisson que melhor o aproxima, e um modelo Poisson com parâmetro $\lambda=1.2$, | ||
+ | |||
+ | <code rsplus> | ||
+ | plot(0: | ||
+ | | ||
+ | | ||
+ | points(0: | ||
+ | | ||
+ | points(0: | ||
+ | | ||
+ | legend(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Você deve obter uma figura como esta: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Nestes casos, as estimativas dos parâmetros obtidas da amostra, $\hat \theta (y)$ são variáveis aleatórias. Portanto, a distância relativa do modelo, que já é uma esperança, agora depende de outra esperança, que é o valor médio de $g(x|\theta(y))$, | ||
+ | |||
+ | $$T \ = \ E_y \ E_x \ [\ln \ g(x| \widehat{\theta}(y))]$$ | ||
+ | |||
+ | o Critério de Informação de Akaike é usado para estimar esta dupla esperança a partir da máxima log-verossimilhança negativa : | ||
+ | |||
+ | $$AIC \ = \ -2\ \ln L( \widehat{\theta}\, | ||
+ | |||
+ | Onde $L( \widehat{\theta}\, | ||
+ | |||
+ | Agora vamos simular várias amostras da mesma binomial, calcular o AIC e a distância relativa esperada de Kullback-Leibler para os modelos Poisson com parâmetros estimados de cada uma destas amostras. | ||
+ | |||
+ | Primeiro definimos uma função para o cálculo da distância estimada, | ||
+ | |||
+ | <code rsplus> | ||
+ | KLD.bp <- function(y, | ||
+ | x <- 0:N | ||
+ | log.gx <- -dpois(x, | ||
+ | length(y)*sum(dbinom(x, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | E uma função para o cálculo do AIC de uma amostra '' | ||
+ | para a Poisson com parâmetro $\lambda$ estimado pela média amostral: | ||
+ | |||
+ | <code rsplus> | ||
+ | AIC.pois <- function(x){ | ||
+ | LL <- sum(dpois(x, | ||
+ | -2*LL + 2 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Agora criamos 1000 amostras de tamanho 100, tomadas da binomial com parâmetros $N=10$ e $p=0.05$. Criamos um objeto matriz para guardar estes valores, sendo cada linha uma amostra: | ||
+ | <code rsplus> | ||
+ | sim <- matrix(rbinom(100000, | ||
+ | </ | ||
+ | |||
+ | Aplicando as funções criadas acima a cada linha da matriz teremos os valores de AIC e de Distância relativa estimada para cada amostra: | ||
+ | |||
+ | <code rsplus> | ||
+ | AIC.p <- apply(sim, | ||
+ | KLD.p <- apply(sim, | ||
+ | </ | ||
+ | |||
+ | Faça um gráfico de densidade empírica dos valores de AIC com a função [[http:// | ||
+ | <code rsplus> | ||
+ | plot(density(AIC.p)) | ||
+ | abline(v=2*mean(KLD.p), | ||
+ | </ | ||
+ | |||
+ | Qual sua avaliação? | ||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | ------------------ | ||
+ | \\ | ||
+ | =====Exercícios===== | ||
+ | Faça o exercício 207.1 no [[http:// | ||
+ | |||
+ | =====Questões para discussão==== | ||
+ | - Faça [[http:// | ||
+ | - O conjunto de dados [[http:// | ||
+ | - Burnham & Anderson desenvolvem na seção 6.9.3 de seu livro um argumento de como testes de significância e seleção de modelos podem levar a conclusões diferentes. Construa um código no R para verificar este argumento, e discuta os resultados. | ||
+ | |||
+ | ===== Recursos para Estudo ===== | ||
+ | |||
+ | ==== Leituras ==== | ||
+ | |||
+ | === Principal === | ||
+ | * Information and likelihood theory. Cap.2 de Burnham, K. P., & Anderson, D. R. (2002). Model Selection and Multimodel Inference: A Practical-Theoretic Approach, 2nd ed. New York, Springer-Verlag. | ||
+ | ===Complementares=== | ||
+ | * Burnham, K.P.; Anderson, D.R. 2001 Kullback-Leibler information as a basis for strong inference in ecological studies. Wildlife Research, v.28, p.111-119. | ||
+ | * Burnham, K. P., Anderson, D. R., & Huyvaert, K. P. (2011). AIC model selection and multimodel inference in behavioral ecology: some background, observations, | ||
+ | * Johnson, J. B., & Omland, K. S. (2004). Model selection in ecology and evolution. Trends in ecology & evolution, 19(2), 101-108. | ||
+ | * Grueber, C.E., Nakagawa, S., Laws, R.J. and Jamieson, I.G., 2011. Multimodel inference in ecology and evolution: challenges and solutions. Journal of evolutionary biology, 24(4), pp.699-711. | ||
+ | |||
+ | == Sobre o problema de excesso de parâmetros no ajuste de modelos == | ||
+ | |||
+ | * Mayer et al. 2010. [[ https:// | ||
+ | * Uma demonstração online do ajuste de um elefante: [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | == Model Averaging == | ||
+ | |||
+ | * Formal inference for more than one model: multimodel inference. Cap. 4 de Burnham, K. P., & Anderson, D. R. (2002). | ||
+ | * Pacote [[https:// | ||
+ | * Calcagno, V. and de Mazancourt, C., 2010. glmulti: an R package for easy automated model selection with (generalized) linear models.[[https:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Na Internet ==== | ||
+ | |||
+ | * Antiga página de [[https:// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | * Forster, M.R., 2000. Key concepts in model selection: Performance and generalizability. Journal of mathematical psychology, 44(1), pp.205-231 , uma revisão crítica da seleção de modelos ( que não se esgota em AIC). Por [[https:// | ||
+ | | ||
+ | * Castilho, L. and Prado, P., 2021. Towards a pragmatic use of statistics in ecology. [[https:// | ||
+ | |||