Pular para o conteúdo principal
Documentos
Compartir
LinkedIn
Facebook
Twitter
Copy
Gerenciamento de dados em REntrada de dados em RGráficos em RDocumentação RInterface REstatísticas em R

Séries temporais e previsão em R

O R tem amplos recursos para analisar dados de séries temporais. Esta seção descreve a criação de uma série temporal, a decomposição sazonal, a modelagem com modelos exponenciais e ARIMA e a previsão com o pacote de previsão.

Criando uma série temporal

A função ts() converterá um vetor numérico em um objeto de série temporal do R. O formato é ts(vector, start=, end=, frequency=) em que start e end são os horários da primeira e da última observação e frequency é o número de observações por unidade de tempo (1=anual, 4=quartenal, 12=mensal etc.).

# save a numeric vector containing 72 monthly observations
# from Jan 2009 to Dec 2014 as a time series object
myts <- ts(myvector, start=c(2009, 1), end=c(2014, 12), frequency=12)

# subset the time series (June 2014 to December 2014)
myts2 <- window(myts, start=c(2014, 6), end=c(2014, 12))

# plot series
plot(myts)

Decomposição sazonal

Uma série temporal com tendência aditiva, componentes sazonais e irregulares pode ser decomposta usando a função stl(). Observe que uma série com efeitos multiplicativos pode, muitas vezes, ser transformada em uma série com efeitos aditivos por meio de uma transformação de log (ou seja, newts <- log(myts)).

# Seasonal decomposition
fit <- stl(myts, s.window="period")
plot(fit)

# additional plots
monthplot(myts)
library(forecast)
seasonplot(myts)

Modelos exponenciais

Tanto a função HoltWinters() na instalação básica quanto a função ets() no pacote de previsão podem ser usadas para ajustar modelos exponenciais.

# simple exponential - models level
fit <- HoltWinters(myts, beta=FALSE, gamma=FALSE)
# double exponential - models level and trend
fit <- HoltWinters(myts, gamma=FALSE)
# triple exponential - models level, trend, and seasonal components
fit <- HoltWinters(myts)

# predictive accuracy
library(forecast)
accuracy(fit)

# predict next three future values
library(forecast)
forecast(fit, 3)
plot(forecast(fit, 3))

Modelos ARIMA

A função arima() pode ser usada para ajustar um modelo de médias móveis integradas autorregressivas. Outras funções úteis incluem:

   
lag(ts, k) versão defasada da série temporal, deslocada k observações para trás
diff(ts, differences= d) diferença da série temporal d vezes
ndiffs(ts) Número de diferenças necessárias para atingir a estacionariedade (do pacote de previsão )
acf(ts) função de autocorrelação
pacf(ts) função de autocorrelação parcial
adf.test(ts) Teste Dickey-Fuller aumentado. A rejeição da hipótese nula sugere que uma série temporal é estacionária (do pacote tseries )
Box.test(x, type="Ljung-Box") Teste de Pormanteau de que as observações no vetor ou na série temporal x são independentes

Observe que o pacote forecast tem versões um pouco melhores de acf() e pacf(), chamadas Acf() e Pacf(), respectivamente.

# fit an ARIMA model of order P, D, Q
fit <- arima(myts, order=c(p, d, q)

# predictive accuracy
library(forecast)
accuracy(fit)

# predict next 5 observations
library(forecast)
forecast(fit, 5)
plot(forecast(fit, 5))

Previsão automatizada

O pacote de previsão fornece funções para a seleção automática de modelos exponenciais e ARIMA. A função ets() oferece suporte a modelos aditivos e multiplicativos. A função auto.arima() pode lidar com modelos ARIMA sazonais e não sazonais. Os modelos são escolhidos para maximizar um dos vários critérios de ajuste.

library(forecast)
# Automated forecasting using an exponential model
fit <- ets(myts)

# Automated forecasting using an ARIMA model
fit <- auto.arima(myts)

Indo além

Há muitos bons recursos on-line para você aprender a análise de séries temporais com o R. Entre eles estão A little book of R for time series (Um pequeno livro de R para séries temporais ), de Avril Chohlan, e o curso DataCamp's manipulating time series in R (Manipulação de séries temporais em R ), de Jeffrey Ryan.