Como calcular a correlação deslizante em r


Correlações rolantes são correlações entre duas séries temporais em uma janela deslizante. Um dos benefícios desse tipo de correlação é que você pode visualizar a correlação entre duas séries temporais ao longo do tempo.

Este tutorial explica como calcular correlações contínuas em R.

Como calcular correlações rolantes em R

Suponha que temos o seguinte quadro de dados que exibe o número total de produtos vendidos para dois produtos diferentes ( x e y ) durante um período de 15 meses:

 #create data
data <- data.frame(month=1:15,
                   x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20),
                   y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28))

#view first six rows
head(data)

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

Para calcular uma correlação contínua em R, podemos usar a função rollapply() do pacote zoo .

Esta função usa a seguinte sintaxe:

rollapply(dados, largura, FUN, by.column=TRUE)

Ouro:

  • dados: nome do quadro de dados
  • largura: número inteiro que especifica a largura da janela para correlação deslizante
  • DIVERSÃO: A função a ser aplicada.
  • by.column: especifica se a função deve ser aplicada a cada coluna separadamente. Por padrão, isso é VERDADEIRO, mas para calcular uma correlação contínua precisamos especificar que é FALSO.

Veja como usar esta função para calcular a correlação contínua de vendas de 3 meses entre o produto x e o produto y :

 #calculate 3-month rolling correlation between sales for x and y
rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689
 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268
[13] -0.1889822

Esta função retorna a correlação entre as vendas de dois produtos nos 3 meses anteriores. Por exemplo:

  • A correlação das vendas nos meses 1-3 foi de 0,6546537 .
  • A correlação de vendas nos meses 2 a 4 foi de -0,6933752.
  • A correlação de vendas nos meses 3 a 5 foi de -0,2401922.

E assim por diante.

Podemos ajustar facilmente esta fórmula para calcular a correlação contínua para um período de tempo diferente. Por exemplo, o código a seguir mostra como calcular a correlação contínua de vendas de 6 meses entre os dois produtos:

 #calculate 6-month rolling correlation between sales for x and y
rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418
 [8] 0.7173740 0.7684468 0.4541476

Esta função retorna a correlação entre as vendas dos dois produtos nos 6 meses anteriores. Por exemplo:

  • A correlação das vendas nos meses 1 a 6 foi de 0,5587415 .
  • A correlação de vendas nos meses 2 a 7 foi de 0,4858553.
  • A correlação de vendas nos meses 3 a 8 foi de 0,6931033.

E assim por diante.

Comentários

Lembre-se dos seguintes pontos ao usar a função rollapply():

  • A largura (ou seja, janela suspensa) deve ser igual ou superior a 3 para calcular correlações.
  • Nas fórmulas acima, usamos cor(x[,2],x[3]) porque as duas colunas entre as quais queríamos calcular as correlações estavam nas posições 2 e 3 . Ajuste esses números se as colunas de seu interesse estiverem localizadas em posições diferentes.

Relacionado: Como calcular a correlação rolante no Excel

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *