Description Usage Arguments Details Value Author(s) References See Also Examples
View source: R/CMISDynamicRegForecast.R
Realiza ajuste de modelos de regressao dinamica utilizando ARIMA com reducaoo de vari<c3><a1>veis via Elastic Net, Wald ou STEPWISE com escolha de modelos por CorssValidation de forma automatica.
1 2 | cmis_dynamic_reg_forecast(dados, vresposta, explicativas, n_passos_frente, freq,
nfolds = 10, nivel=95, p_aumento=NULL, trace = FALSE, ...)
|
dados |
Objeto mts ou data.frame com as variaveis de interesse |
vresposta |
Variavel resposta |
explicativas |
Vetor de vari<c3><a1>veis explicativas |
n_passos_frente |
Horizonte de forecast, quantos pontos <c3><a0> frente deseja estimar |
nfolds |
N<c3><ba>mero m<c3><a1>ximo de reamostragens para redu<c3><a7><c3><a3>o elastic net. |
sig |
Valor m<c3><ad>nimo (p.valor) para elimina<c3><a7><c3><a3>o de vari<c3><a1>veis por Wald ou STEPWISE |
nivel |
N<c3><ad>vel de signific<c3><a2>ncia para os limites de predi<c3><a7><c3><a3>o do forecast. Padr<c3><a3>o <c3><a9> 0.95 |
p_aumento |
Permite simular cen<c3><a1>rios de crescimento para as vari<c3><a1>veis explicativas e seu efeito sovre a resposta. Aceita valores decimais. Exemplo: 50 por cento de aumento implica em 0.50 |
trace |
Se TRUE, exibe informa<c3><a7><c3><b5>es do processo de estima<c3><a7><c3><a3>o |
automatic |
Se TRUE, a escolha das covari<c3><a1>veis <c3><a9> feita automaticamente. Caso contr<c3><a1>rio, tenta ajustar um modelo saturado com todas as covari<c3><a1>veis de entrada. Padr<c3><a3>o <c3><a9> TRUE. |
freq |
Frequencia da s<c3><a9>rie. Di<c3><a1>rio - 7, mensal - 12 e hor<c3><a1>rio - 24 pontos. |
nvif |
Fator de Infla<c3><a7><c3><a3>o de Vari<c3><a2>ncia, utilizado para verificar multicolinearidade. |
... |
Passagem de argumentos. |
Esta fun<c3><a7><c3><a3>o permite ajustes de regress<c3><a3>o din<c3><a2>mica utilizando ARIMA que por sua vez utiliza a t<c3><a9>nica de Box-Jenkins para ajustes e forecast. Esta fun<c3><a7><c3><a3>o <c3><a9> baseada na fun<c3><a7><c3><a3>o auto.arima
e antes do ajuste <c3><a9> feita uma elimina<c3><a7><c3><a3>o automatizada de covari<c3><a1>veis fracas pela t<c3><a9>cnica de CrossValidation atrav<c3><a9>s da metodologia Elastic Net, que por sua vez utiliza algoritimos de redu<c3><a3>o via LASSO e Ridge regression. O resultado <c3><a9> um forecast coerente e assertivo para os dados. <c3><89> permitido ainda simula<c3><a7><c3><a3>o de cen<c3><a1>rios de crescimento para as covari<c3><a1>veis adicionando percentual de crescimentos desejados a fim de medir este impacto na explicativa.
A sa<c3><ad>da <c3><a9> uma lista aninhada com v<c3><a1>rias entradas conforme abaixo.
models |
Objeto dos dois modelos escolhidos automaticamente, sendo um simples e outro com o efeito das covari<c3><a1>veis e do aumento, caso seja definido |
forecasts |
Forecast dos dois modelos escolhidos automaticamente, sendo um simples e outro com o efeito das covari<c3><a1>veis e do aumento, caso seja definido |
acuracia |
Estat<c3><ad>sticas dos modelos |
LOPES, J. E.
Hyndman, R.J. and Khandakar, Y. (2008) "Automatic time series forecasting: The forecast package for R", Journal of Statistical Software, 26(3).
Mais informa<c3><a7><c3><b5>es sobre a metodologia de forecast para modelos ARIMA auto.arima
e para redu<c3><a7><c3><a3>o por Elastic Net cv.glmnet
.
model.select
para redu<c3><a7><c3><a3>o Stepwise e fastbw
para elimina<c3><a7><c3><a3>o por Wald
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | data(diario)
da <- dataframe.outlier(diario, n_passos_frente=10, freq=7)$dados_ts
nm <- dimnames(da)[[2]]
vresposta <- explicativas <- c()
for(i in 1:length(nm)){
if (substr(nm[i], 1, 3) == "NEG") explicativas[i] <- nm[i]
if (substr(nm[i], 1, 3) == "HDW") vresposta[i] <- nm[i]
}
vresposta <- as.character(na.omit(vresposta))
explicativas <- as.character(na.omit(explicativas))
fit <- cmis_dynamic_reg_forecast(da, vresposta[1], explicativas, 20, 7,
nfolds = 10, p_aumento = 1, nivel = 95, trace = TRUE)
plot(fit)
summary(fit)
## Exemplo de looping varrendo uma base de dados.
## Pode demorar muito!!! ##
data(diario)
da <- dataframe.outlier(diario, n_passos_frente=10, freq=7)$dados_ts
nm <- dimnames(da)[[2]]
vresposta <- explicativas <- c()
for(i in 1:length(nm)){
if (substr(nm[i], 1, 3) == "NEG") explicativas[i] <- nm[i]
if (substr(nm[i], 1, 3) == "HDW") vresposta[i] <- nm[i]
}
vresposta <- as.character(na.omit(vresposta))
explicativas <- as.character(na.omit(explicativas))
out <- c()
for (i in 1:length(vresposta[1:10])) {
temp <- try(cmis_dynamic_reg_forecast(da, vresposta[i], explicativas, 20, 12,
nfolds = 5, p_aumento = 0.05, nivel = 95, trace = TRUE, sig = 0.10))
if(class(temp)!="try-error") out[[i]] <- temp
try(plot(temp))
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.