kunekune_haniwaの日記

レベルを下げるあいつ。

Rで2つの時系列データ間の交差相関を取りたい

やりたいこと

Rで2つの時系列データ間の交差相関を取りたい。そして2つの系列データ間の遅れ時間や相関の周期性を調べたい。

やりかた

標準で交差相関をとる関数ccfが用意されている。

使用例

データの準備

library(tidyverse)
set.seed(123)

n = 200
df = tibble(
  No = 1:n,
  x = cumsum(rnorm(n)),
  y = lag(1.234*x -3.456 + rnorm(n),10,fill=NA)
) %>% 
  na.omit()

df %>% 
  gather("key", "value", -1) %>% 
  ggplot(aes(No, value, color=key)) + geom_point() + geom_line()

f:id:kunekune_haniwa:20210129223544p:plain

交差相関の計算

res = ccf(df$x, df$y)

-10で相関係数が最大になっている。サンプルデータを作るときもyはxに対して10コマ送らせているのできちんと遅れ時間を求められた。 f:id:kunekune_haniwa:20210129223618p:plain