Muitas vezes é interessante plotar a série histórica de duas variáveis distintas no mesmo gráfico, para tentar identificar se existe alguma relação entre elas. No entanto, os valores das duas séries podem ter unidades de medida e ordens de grandeza diferentes. A solução neste caso é gerar um gráfico com dois eixos verticais. Assim, utilizamos o eixo esquerdo para representar uma variável e o eixo direito para representar a outra.
O gráfico abaixo relaciona uma série de consumo de energia elétrica (que varia em torno de 1000 a 2000 MW) com uma série de temperaturas (com valores no faixa de 5 a 20ºC), ambas medidas de hora em hora. Esses dados foram retirados da competição GEFCom2012, e referem-se à uma região do estado da Carolina do Norte (EUA). As duas séries foram suavizadas por um processo de médias móveis centradas com janela de tamanho 24, para neutralizar o efeito de sazonalidade diária. Podemos observar que a carga elétrica tende a aumentar quando a temperatura atinge valores muito baixos, pois muitas residências são equipadas com calefatores elétricos. De fato, as previsões de temperatura são muito úteis para prever o consumo de energia elétrica.
Exemplo no R
Criar gráficos deste tipo no R é uma tarefa bem simples, mas requer um pequeno truque. Basicamente, vamos plotar um gráfico com a série histórica da primeira variável. Em seguida, utilizamos o comando par(new = TRUE)
para que o próximo gráfico seja sobreposto à figura já existente.
Para exemplificar, vamos utilizar as séries BJsales e BJsales.lead que fazem parte do pacote datasets do R. O intervalo de variação dessas duas séries é bem diferente.
summary(BJsales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 198.6 212.6 220.6 230.0 254.7 263.3
summary(BJsales.lead)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.75 10.81 11.40 11.85 13.12 13.87
O código abaixo demonstra como plotar as duas séries na mesma figura, utilizando a biblioteca base do R.
#Definir as margens da figura
par (mar = c(4,4,4,4))
#Plotar a série BJsales
plot(BJsales)
#Comando para sobrepor o próximo plot na mesma figura
par(new = TRUE)
#Plota a série BJsales.lead (sem inserir os títulos e marcações dos eixos)
plot(BJsales.lead, col = "blue", xaxt = "n", yaxt = "n", xlab = "", ylab = "")
#Insere a marcação do eixo para a série BJsales.lead no lado direito
axis(side = 4)
#Acrescenta o título do eixo no lado direito
mtext("BJsales.lead", side = 4, line = 2.5)
#Adiciona o título do gráfico
title("BJsales & BJsales.lead")
#Insere a legenda
legend("topleft", legend = c("BJsales", "BJsales.lead"), col = c("black", "blue"), lwd = 1)