Estou procurando neste site um workshop sobre o GAM em R: http://qcbs.ca/wiki/r_workshop8
No final da seção, 2. Multiple smooth terms
eles mostram um exemplo, onde eles usam anova
para comparar três modelos diferentes para determinar o melhor modelo de ajuste. A saída é
Analysis of Deviance Table
Model 1: y ~ x0 + s(x1)
Model 2: y ~ x0 + s(x1) + x2
Model 3: y ~ x0 + s(x1) + s(x2)
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 394.08 5231.6
2 393.10 4051.3 0.97695 1180.2 < 2.2e-16 ***
3 385.73 1839.5 7.37288 2211.8 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Com base nisso, eles concluem que o modelo 3 é o melhor. Minha pergunta é como eles vêem isso?
Meu entendimento atual é: O Pr(>Chi)
valor-é pequeno para os modelos 2 e 3; portanto, eles são melhores que o modelo 1. No entanto, que outra variável eles estão usando para determinar que 3 é melhor que 2?
s
é definida. (Presumo que seja algum tipo de spline, mas reluto em presumir mais do que isso.) Podemos perceber pela saída que é bastante complicado - a mudançax2
paras(x2)
adiciona graus de liberdade - mas é tudo o que podemos determinar sobre isso a partir desta saída.AIC(model1, model2, model3)
revela que o modelo 3 tem um valor mais baixoAIC
. Esta poderia ser mais uma prova de que é o modelo ideal entre os trêsRespostas:
A saída de
anova()
é uma série de testes de razão de verossimilhança. As linhas na saída são:x1
(estou ignorando o fator,x0
pois não está em consideração no seu exemplo) - isso não é testado contra nada mais simples, portanto, as últimas entradas da coluna são esvaziar.A segunda linha é um teste de razão de verossimilhança entre o modelo na linha 1 e o modelo na linha 2. Ao custo de
0.97695
graus extras de liberdade, o desvio residual é diminuído em1180.2
. Essa redução no desvio (ou, inversamente, o aumento do desvio explicado), ao custo de <1 grau de liberdade, é altamente improvável se o verdadeiro efeito dex2
for 0.Por que os
0.97695
graus de liberdade aumentam? Bem, a função linear dex2
adicionaria 1 df ao modelo, mas o mais suavex1
será penalizado um pouco mais do que antes e, portanto, usará um pouco menos graus efetivos de liberdade, daí a mudança <1 nos graus gerais de liberdade.x2
como um termo linear para modelagemx2
como uma função suave. Novamente, essa melhoria no ajuste do modelo (a mudança no desvio está agora2211.8
ao custo de7.37288
mais graus de liberdade) é improvável se os parâmetros extras associados as(x2)
todos forem iguais a 0.Em resumo, a linha 2 diz que o Modelo 2 se encaixa melhor que o Modelo 1, portanto, uma função linear de
x2
é melhor do que nenhum efeitox1
. Mas a linha 3 diz que o Modelo 3 ajusta os dados melhor que o Modelo 2, portanto, uma função suave dex2
é preferida a uma função linear dex2
. Esta é uma análise seqüencial de modelos, não uma série de comparações com o modelo mais simples.Contudo…
O que eles estão mostrando não é a melhor maneira de fazer isso - a teoria recente sugere que a saída
summary(m3)
teria as propriedades de cobertura mais "corretas". Além disso, para selecionar entre os modelos, provavelmente, deve-se usarselect = TRUE
ao ajustar o modelo completo (aquele com dois suaves), o que permitiria o encolhimento dos termos que incluiriam o modelo com efeito linearx2
ou mesmo sem efeito dessa variável. Eles também não são adequados usando a seleção de suavidade REML ou ML, que muitos de nós usuários do mgcv considerariam a opção padrão (mesmo que não seja o padrão realgam()
)O que eu faria é:
A linha final produz o seguinte:
Podemos ver que os dois termos suaves são significativamente diferentes das funções nulas.
O que
select = TRUE
está fazendo é aplicar uma penalidade extra no espaço nulo da penalidade (essa é a parte do spline que é perfeitamente suave). Se você não tiver isso, a seleção de suavidade poderá penalizar apenas uma volta suave para uma função linear (porque a penalidade que está fazendo a seleção de suavidade funciona apenas nas partes não suaves (as onduladas) da base). Para realizar a seleção, precisamos ser capazes de penalizar o espaço nulo (as partes suaves da base).select = TRUE
consegue isso através do uso de uma segunda penalidade adicionada a todos os termos suaves do modelo (Marra e Wood, 2011). Isso age como uma espécie de retração, puxando todos os termos suaves de alguma maneira para 0, mas puxa termos supérfluos para 0 muito mais rapidamente, portanto, selecioná-los fora do modelo, se não tiverem nenhum poder explicativo. Pagamos um preço por isso ao avaliar a importância dos smooths; observe aRef.df
coluna acima (o 9 vem do valor padrão dek = 10
, que para splines de chapas finas com restrições de centralização significa 9 funções básicas), em vez de pagar algo como 2,5 e 7,7 graus de liberdade pelos splines, pagamos 9 graus de liberdade cada. Isso reflete o fato de termos feito a seleção, de não termos certeza de quais termos deveriam estar no modelo.Nota: é importante que você não use
anova(m1, m2, m3)
chamadas de tipo em modelos usandoselect = TRUE
. Como observado em?mgcv:::anova.gam
, a aproximação usada pode ser muito ruim para suavizações com penalidades em seus espaços nulos.Nos comentários, @BillyJean mencionou o uso da AIC para a seleção. Trabalhos recentes de Simon Wood e colegas (Wood et al, 2016) derivaram uma AIC que explica a incerteza extra devido a termos estimado os parâmetros de suavidade no modelo. Essa AIC funciona razoavelmente bem, mas há alguma discussão sobre o comportamento de sua derivação da AIC quando as suavizações do IIRC estão próximas das funções lineares. De qualquer forma, a AIC nos daria:
Observe que reajustei tudo isso com a seleção de suavidade de ML, pois não tenho certeza do que o AIC faz quando
select = TRUE
e você deve ter cuidado ao comparar modelos com diferentes efeitos fixos, que não são totalmente penalizados, usando REML.Novamente a inferência é clara; o modelo com suavidades
x1
ex2
ajuste substancialmente melhor do que qualquer um dos outros dois modelos.Marra, G. & Wood, SN Seleção prática de variáveis para modelos de aditivos generalizados. Comput. Estado. Data Anal. 55, 2372- 2387 (2011).
Wood, SN, Pya, N. & Säfken, B. Parâmetro de suavização e seleção de modelos para modelos suaves gerais. Geléia. Estado. Assoc. 111, 1548-1563 (2016).
fonte
?anova.lm
que não há essa possibilidade, pode ser F chisq ou CPmgcv:::anova.gam
não está usando o método paralm
modelos. Estes são testes de análise de desvio, mas é a mesma coisa que os índices de probabilidade.anova()
mas quais dependem de qual é o modelo. Frequentemente, para modelos não gaussianos, eles estão realizando testes de razão de verossimilhança ou testes semelhantes, mas as suposições variam; eles variam mesmo para GLMs e GAMs.anova()
é uma função de conveniência, mas não está executando o ANOVA sensu no modelo linear geral para nada além de um modelo linear geral (ajustado vialm()
say).select = TRUE
faz é penalizar totalmente todos os termos suaves, que o AFAIU faz comparações usando REML OK. Não observei os detalhes da nova AIC para o GAMS para ver o que faria com as multas extras adicionadas ao usarselect = TRUE
. Portanto, se deixamos deselect = TRUE
lado o lado seguro, temos o problema de que a REML não é uma probabilidade verdadeira e não é usada nas comparações da AIC porque depende dos efeitos fixos no modelo. Contabilizar as duas preocupações significa que eu useimethod = "ML"
(nãomethod = "REML"
) ao montar.Você pode querer testar os dois modelos com
lrest
.Embora a adição de uma função suave a ambos os termos complique o modelo, a melhoria na probabilidade de log é significativa. Isso não deveria surpreender, porque os dados foram gerados por um simulador GAM.
Você também pode imprimir as estatísticas resumidas:
e
Observe a diferença de desvio explicada (é enorme). O modelo mais complicado também possui melhor R-sq. (Adj). O segundo termo de suavização é altamente significativo e se ajusta bem aos dados.
fonte