A saída de anova()
é uma série de testes de razão de verossimilhança. As linhas na saída são:
- A primeira linha na saída corresponde ao modelo mais simples, com apenas uma suavização de
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 em 1180.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 de x2
for 0.
Por que os 0.97695
graus de liberdade aumentam? Bem, a função linear de x2
adicionaria 1 df ao modelo, mas o mais suave x1
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.
- A terceira linha é exatamente a mesma que eu descrevi acima, mas para uma comparação entre o modelo na segunda linha e o modelo na terceira linha: ou seja, a terceira linha está avaliando a melhoria na mudança de modelagem
x2
como um termo linear para modelagem x2
como uma função suave. Novamente, essa melhoria no ajuste do modelo (a mudança no desvio está agora 2211.8
ao custo de 7.37288
mais graus de liberdade) é improvável se os parâmetros extras associados a s(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 efeito x1
. Mas a linha 3 diz que o Modelo 3 ajusta os dados melhor que o Modelo 2, portanto, uma função suave de x2
é preferida a uma função linear de x2
. 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 usar select = TRUE
ao ajustar o modelo completo (aquele com dois suaves), o que permitiria o encolhimento dos termos que incluiriam o modelo com efeito linear x2
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 real gam()
)
O que eu faria é:
library("mgcv")
gam_data <- gamSim(eg=5)
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, select = TRUE,
method = "REML")
summary(m3)
A linha final produz o seguinte:
> summary(m3)
Family: gaussian
Link function: identity
Formula:
y ~ x0 + s(x1) + s(x2)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.4097 0.2153 39.053 < 2e-16 ***
x02 1.9311 0.3073 6.284 8.93e-10 ***
x03 4.4241 0.3052 14.493 < 2e-16 ***
x04 5.7639 0.3042 18.948 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(x1) 2.487 9 25.85 <2e-16 ***
s(x2) 7.627 9 76.03 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.769 Deviance explained = 77.7%
-REML = 892.61 Scale est. = 4.5057 n = 400
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 a Ref.df
coluna acima (o 9 vem do valor padrão de k = 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 usando select = 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:
m1 <- gam(y ~ x0 + s(x1), data = gam_data, method = "ML")
m2 <- gam(y ~ x0 + s(x1) + x2, data = gam_data, method = "ML")
m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, method = "ML")
AIC(m1, m2, m3)
> AIC(m1, m2, m3)
df AIC
m1 7.307712 2149.046
m2 8.608444 2055.651
m3 16.589330 1756.890
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
e x2
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).
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.