Eu uso a função auto.arima () no pacote de previsão para ajustar os modelos ARMAX a uma variedade de covariáveis. No entanto, muitas vezes tenho um grande número de variáveis para selecionar e geralmente termino com um modelo final que funciona com um subconjunto delas. Não gosto de técnicas ad-hoc para seleção de variáveis porque sou humano e sujeito a preconceitos, mas a validação cruzada de séries temporais é difícil , portanto, não encontrei uma boa maneira de experimentar automaticamente diferentes subconjuntos de minhas variáveis disponíveis e Estou preso ajustando meus modelos usando meu próprio julgamento.
Quando encaixo os modelos glm, posso usar a rede elástica ou o laço para regularização e seleção de variáveis, através do pacote glmnet . Existe um kit de ferramentas existente no R para usar a rede elástica nos modelos ARMAX ou terei que rolar sozinho? Isso é mesmo uma boa ideia?
editar: faria sentido calcular manualmente os termos AR e MA (digamos até AR5 e MA5) e usar o glmnet para ajustar-se ao modelo?
edit 2: Parece que o pacote FitAR me deixa parte, mas não tudo, do caminho até lá.
forecast
pacote para R. Ele disse que seria difícil com o ARIMA completo, porque você teria que envolver o laço com o otimizador não-linear do ARIMA. Uma solução parcial seria ajustar um modelo de RA usandoglmnet
variáveis variáveis. Até onde eu sei, ninguém fez isso com um modelo ARIMA completo ainda.Respostas:
Esta não é uma solução, mas algumas reflexões sobre as possibilidades e dificuldades que conheço.
Sempre que é possível especificar um modelo de série temporal como com computável a partir de covariáveis e observações com atraso no tempo , também é possível calcular o estimador penalizado com rede elástica dos mínimos quadrados de usando glmnet em R. Ele exige que você escreva código para calcular para formar a matriz de modelo a ser especificada no glmnet. Isso funciona para modelos AR, mas não diretamente para modelos ARMA, digamos. Além disso, os procedimentos de validação cruzada do glmnet não são sensíveis per se para dados de séries temporais.x t β x t
Para modelos mais gerais, uma implementação de um algoritmo para calcular o estimador penalizado por rede elástica de mínimos quadrados não linear de é necessário. Até onde eu sei, não existe essa implementação em R. Atualmente, estou escrevendo uma implementação para resolver o caso em que o ponto é que é fundamental para a seleção do modelo que a penalização do laço esteja em e não em . Se bem me lembro da parametrização ARIMA, ela também assume esse formato mas não posso oferecer nenhum código no momento. É (será) baseado em β Y t + 1 = x t g ( β ) + ϵ t + 1 β g ( β ) -
Outra questão é a seleção da quantidade de penalização (os parâmetros de ajuste). Geralmente, é necessário uma forma de validação cruzada para séries temporais, mas espero poder descobrir alguns métodos menos exigentes em termos computacionais para modelos específicos.
fonte
Fui desafiado por um cliente a resolver esse problema de forma automática, ou seja, chave na mão. Eu implementei uma abordagem que para cada par (ou seja, y e um candidato x), pré-brancos, calcule correlações cruzadas das séries pré-branqueadas, identifique o PDL (OU ADL AUTOREGRESSIVE DISTRIBUTED LAG MODEL incluindo qualquer DEAD TIME) ao incorporar a Detecção de Intervenção para produzir estimativas robustas, desenvolver uma "medida" para essa estrutura. Depois de realizar isso para TODOS os regressores candidatos, classifique-os pela "medida" e selecione os principais regressores K com base na "medida". Às vezes, isso é chamado de filtragem linear. Incorporamos com sucesso essa heurística em nosso pacote de séries temporais disponíveis comercialmente. Você deve poder "ROLAR O SEU PRÓPRIO"
fonte