Séries Temporais: Introdução e Decomposição dos Componentes em R

Esse post vai ensinar de forma sucinta como inputar seus dados de séries temporais no R e separar graficamente o que é a sazonalidade, a tendência e a aleatoriedade dos seus dados. Se você já conhece o conceito de séries, pode pular os dois próximos parágrafos.

Séries temporais são observações ao longo do tempo. Se você está trabalhando com dados ao longo do tempo, então as técnicas serão diferentes das utilizadas quando se trabalha com dados que consistem em informações retiradas de uma foto ao longo do tempo (dados cross-sectional). Exemplos de variáveis analisadas em séries temporais: preço diários de uma ação, crescimento anual do PIB, inflação anual, vendas mensais, resultados trimestrais de uma empresa, etc.

Sendo mais claro ainda, quando temos os preços diários de uma ação ao longo de um ano e queremos saber qual o valor da ação para os dias seguintes, a análise será feita com ferramentas para tratar séries temporais. Quando temos informações de clientes de uma empresa (e.g.: idade, profissão, renda, valor do plano, etc.) em uma determinada data, e queremos saber sua probabilidade de inadimplência para a fatura do próximo mês, estamos tratando de dados cross-sectionalAinda, se fizermos um experimento com um grupo de 200 alunos, sendo que 100 recebem algum tipo de tratamento, e queremos acompanhar a evolução do tratamento ao longo dos próximos 12 meses, estamos tratado de dados em painel.

Os dados aqui utilizados serão os de venda no varejo dos EUA, que encontrei enquanto resolvia alguns exercícios pela internet e estão disponíveis para baixar aqui. Já o site que eu menciono é o R-Exercises. Também recomendo a visita.

Quando você carregar seus dados de séries temporais no R, você deve sempre convertê-los para o objeto ts. Isso facilita o entendimento do programa e irá fazer com que seus tratamentos sejam mais simples. O R entende os objetos de séries temporais e por isso existem diversas funções específicas para serem utilizadas com esses tipos de dados. Por exemplo, podemos carregar um vetor qualquer com valores aleatórios e indicar para o R que é uma série utilizando a função ts, escolhendo ainda em qual ano (e mês se quiser) que começa e a frequência:

## cria um vetor com valores qualquer
dados_teste = c(10,20,15,30);

## utiliza o vetor como serie anual que inicia em 2005
dados_teste_serie_1 = ts(dados_teste, start = 2005);

## utiliza o vetor como serie mensal que inicia em 2005
dados_teste_serie_2 = ts(dados_teste, start = 2005, frequency = 12);

## utiliza o vetor como serie mensal que inicia em fevereiro de 2015
dados_teste_serie_3 = ts(dados_teste, start = c(2005,2), frequency = 12);

## graficos dos 3 para mostrar a diferenca nos eixos
par(mfrow=c(1,3));
plot(dados_teste_serie_1);
plot(dados_teste_serie_2);
plot(dados_teste_serie_3);

Veja que frequency representa o número de observações até que a sazonalidade ocorra, 1 é anual, 4 é trimestral, 12 é mensal e 52 semanal. A função plot() gera os gráficos normalmente, conforme será demonstrado abaixo.

Agora, trabalhando os dados de venda:


## carrega dados de vendas
dados = read.table("sales.csv", header=T);

## da o nome de 'vendas_varejo' para a coluna 1
colnames(dados)[1] = "vendas_varejo"

## cria objeto ts, serie que comeca em janeiro de 1992
## dados sao mensais
dados_ts = ts(dados, start=c(1992,1), frequency=12);
## ajusta para um grafico apenas (por causa do 1o codigo)
par(mfrow=c(1,1));
## plota serie limitando eixo y
plot(dados_ts, ylim = c(0,max(dados_ts[,])));

DADOS_TS

Agora, você já consegue visualizar os seus dados. Porém, você não sabe exatamente como separar o que ali representa a sazonalidade e o que representa a tendência (crescimento ou decrescimento). Para isso, vamos utilizar a função decompose() do tipo multiplicative para obter 4 informações: o que é aleatório, sazonalidade, tendência e o observado:

## decomposicao
decomposicao = decompose(dados_ts, type = "multiplicative");
plot(decomposicao);

DECOMPOSE

Agora, por conta do type utilizado acima você pode estar em dúvida do que quer dizer multiplicative quando tratamos de modelos. Mais especificamente, a pergunta que fica é: Qual a diferença entre um modelo aditivo e um modelo multiplicativo em séries temporais?

Basicamente, séries temporais envolvem sazonalidade, tendência e ciclo, além, é claro, dos resíduos. Porém, esses componentes podem se somar ou se multiplicar, e essa é a diferença básica.

Modelo aditivo: Dado = Efeito Sazonal + Tendência + Ciclo + Resíduo

Modelo multiplicativo: Dado = Efeito Sazonal x Tendência x Ciclo x Resíduos

Anúncios

5 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s