GAM adaptável suaviza em mgcv

9

O livro de Simon Wood sobre GAMs e seu pacote R associado mgcv são altamente detalhados e informativos quando se trata da teoria do GAM e do ajuste de modelos a dados reais e simulados.

Para suavizações 1D, não há realmente muito com o que se preocupar, exceto decidir se as funções básicas cíclicas e adaptativas devem ser implementadas, o que pode fornecer resultados de previsão muito diferentes em comparação com as suavizações cúbicas, de chapa fina e estria P, porque, no caso adaptativo, vários GAMs são ajustados a diferentes regiões ao longo de um spline. Até onde eu sei, bases cíclicas são comuns na modelagem de séries temporais, enquanto suavizações adaptativas devem ser consideradas quando os dados variam muito em relação à variável resposta; no entanto, os suaves adaptativos devem ser usados ​​com moderação e cuidado.

Estou investigando GAMs há algum tempo e, dada a minha pergunta de pesquisa, estou me mudando muito de ideia quando se trata de uma implementação fácil. mgcv inclui 17 diferentes smooths para escolher (pela minha conta). Eu considerei suaves cúbicos e P-spline.

Minha pergunta agora é : quando os suaves adaptativos devem ser considerados em relação aos não-adaptativos, se o objetivo final é usar GAMs ajustados para fins de previsão? Para meus propósitos, eu estou seguindo o critério padrão de suavidade do GCV, mesmo que ele tenha tendência a suavizar.

A literatura está crescendo em GAMs ecológicos aplicados, mas ainda não encontrei um estudo que implemente uma adaptação suave.

Qualquer conselho é apreciado.

compbiostats
fonte

Respostas:

20

A maioria dos suaves extras na caixa de ferramentas mgcv está realmente disponível para aplicativos especializados - você pode ignorá-los em geral para GAMs gerais, especialmente suaves univariados (não é necessário um spline de efeito aleatório, um spline na esfera, um campo aleatório de Markov, ou um filme de sabão mais suave se você tiver dados univariados, por exemplo.)

Se você puder suportar o custo de instalação, use splines de regressão de chapa fina (TPRS).

Essas splines são ideais no sentido MSE assintótico, mas requerem uma função básica por observação. O que o Simon faz no mgcv é gerar uma versão de baixo escalão do TPRS padrão, tomando a base completa do TPRS e sujeitando-o a uma composição de eigend. Isso cria uma nova base, onde a kfunção de primeira base no novo espaço retém a maior parte do sinal na base original, mas em muito menos funções básicas. É assim que o mgcv consegue obter um TPRS que usa apenas um número especificado de funções básicas em vez de uma por observação. Essa composição independente preserva grande parte da otimização da base TPRS clássica, mas com um esforço computacional considerável para grandes conjuntos de dados.

Se você não puder suportar o custo de instalação do TPRS, use splines de regressão cúbica (CRS)

Essa é uma base rápida de gerar e, portanto, é adequada para problemas com muitos dados. No entanto, é baseado em nó; portanto, até certo ponto, o usuário agora precisa escolher onde esses nós devem ser colocados. Para a maioria dos problemas, há pouco a ganhar indo além do posicionamento padrão do nó (nos limites dos dados e espaçados igualmente entre os mesmos), mas se você tiver uma amostragem particularmente desigual no intervalo da covariada, poderá optar por colocar nós quantis de amostra uniformemente espaçados da covariável, por exemplo.

Todos os outros liso em mgcv são especiais, sendo usados ​​onde você deseja alisamentos isotrópicos ou duas ou mais covariáveis, ou para alisamento espacial, ou que implementam encolhimento, efeitos aleatórios e splines aleatórios, ou onde covariáveis ​​são cíclicos ou a oscilação varia sobre o intervalo de uma covariável. Você precisa se aventurar tão longe na caixa de ferramentas suave se tiver um problema que exija manuseio especial.

Encolhimento

Existem versões de encolhimento do TPRS e do CRS em mgcv . Eles implementam um spline onde a parte perfeitamente lisa da base também está sujeita à penalidade de suavidade. Isso permite que o processo de seleção de suavidade encolha as costas lisas além de uma função linear essencialmente até zero. Isso permite que a penalidade de suavidade também execute a seleção de recursos.

Splines de Duchon, splines P e splines B

Esses splines estão disponíveis para aplicativos especializados nos quais é necessário especificar a ordem de base e a ordem de penalidade separadamente. As splines de Duchon generalizam o TPRS. Tenho a impressão de que os splines P foram adicionados ao mgcv para permitir a comparação com outras abordagens penalizadas baseadas em verossimilhanças, e porque são splines usados ​​por Eilers & Marx em seu artigo de 1996, que estimulou grande parte do trabalho subsequente em GAMs. Os splines P também são úteis como base para outros splines, como splines com restrições de forma e splines adaptáveis.

As splines B, conforme implementadas em mgcv, permitem uma grande flexibilidade na configuração da penalidade e nós para as splines, o que pode permitir alguma extrapolação além da faixa dos dados observados.

Splines cíclicos

Se o intervalo de valores de uma covariável puder ser pensado como um círculo em que os pontos finais do intervalo devem realmente ser equivalentes (mês ou dia do ano, ângulo de movimento, aspecto, direção do vento), essa restrição pode ser imposta a base. Se você possui covariáveis ​​como essa, faz sentido impor essa restrição.

Smoothers adaptáveis

Em vez de caber um GAM separado nas seções da covariada, as splines adaptativas usam uma matriz de penalidade ponderada, na qual os pesos podem variar suavemente ao longo da faixa da covariada. Para as splines TPRS e CRS, por exemplo, elas assumem o mesmo grau de suavidade em toda a faixa da covariável. Se você tem um relacionamento em que esse não é o caso, pode acabar usando mais graus de liberdade do que o esperado para permitir que o spline se adapte às partes onduladas e não onduladas. Um exemplo clássico na literatura de suavização é o

library('ggplot2')
theme_set(theme_bw())
library('mgcv')
data(mcycle, package = 'MASS')
pdata <- with(mcycle,
              data.frame(times = seq(min(times), max(times), length = 500)))

ggplot(mcycle, aes(x = times, y = accel)) + geom_point()

insira a descrição da imagem aqui

Esses dados exibem claramente períodos de suavidade diferente - efetivamente zero para a primeira parte da série, lotes durante o impacto, reduzindo a partir daí.

se ajustarmos um GAM padrão a esses dados,

m1 <- gam(accel ~ s(times, k = 20), data = mcycle, method = 'REML')

obtemos um ajuste razoável, mas há uma certa oscilação extra no início e no final do intervalo timese do ajuste usado ~ 14 graus de liberdade

plot(m1, scheme = 1, residuals = TRUE, pch= 16)

insira a descrição da imagem aqui

Para acomodar a variação de oscilação, um spline adaptável usa uma matriz de penalidade ponderada com os pesos variando suavemente com a covariável. Aqui, eu recolojo o modelo original com a mesma dimensão base (k = 20), mas agora temos 5 parâmetros de suavidade (o padrão é m = 5) em vez do 1 do original.

m2 <- gam(accel ~ s(times, k = 20, bs = 'ad'), data = mcycle, method = 'REML')

Observe que este modelo usa muito menos graus de liberdade (~ 8) e a suavidade ajustada é muito menos ondulada nas extremidades, enquanto ainda é capaz de ajustar adequadamente as grandes alterações na aceleração da cabeça durante o impacto.

insira a descrição da imagem aqui

O que realmente está acontecendo aqui é que o spline tem uma base para suavização e uma base para a penalidade (para permitir que os pesos variem suavemente com a covariável). Por padrão ambos são P estrias, mas você também pode usar os tipos básicos CRS também ( bssó pode ser um dos 'ps', 'cr', 'cc', 'cs'.)

Como ilustrado aqui, a escolha de adaptar-se ou não realmente depende do problema; se você tem um relacionamento para o qual assume que a forma funcional é suave, mas o grau de suavidade varia ao longo do intervalo da covariável no relacionamento, um spline adaptável pode fazer sentido. Se sua série teve períodos de mudança rápida e períodos de mudança baixa ou mais gradual, isso pode indicar que pode ser necessária uma adaptação suave.

Gavin Simpson
fonte
11
Obrigado Gavin! Esta é realmente uma excelente resposta que acho que também ajudará outras pessoas com a mesma preocupação.
compbiostats
Para o meu problema, encaixei uma curva crescente monotônica que, eventualmente, se estende a uma assíntota horizontal. No início da minha curva, os dados aumentam muito rapidamente, antes de eventualmente diminuir em direção a uma assíntota. Em alguns casos, é necessária extrapolação (perto / longe) além da faixa de dados observados. Meus modelos são muito simples, mas percebo que as previsões aqui são especulativas, na melhor das hipóteses.
compbiostats