kunekune_haniwaの日記

レベルを下げるあいつ。

移動平均みたいな感じで移動相関を取りたい

やりたいこと

Rで移動平均みたいに窓を動かしながら回帰分析をして決定係数や回帰係数を取り出したい。

解決法

rollRegres packageで解決。

使用例

サンプルデータはランダムウォークなxと段々と大きくなる誤差を組み合わせる。

library(rollRegres)
library(tidyverse)

# サンプルデータの作成
set.seed(123)
n = 200

df = tibble(
  No = 1:n,
  white_noise = rnorm(n),
  x = cumsum(white_noise),
  s = seq(0.1,2,length.out = n),
  noise = map_dbl(s,~rnorm(1,0,.x)),
  y = x*1.3421 + 5.1487 + noise
) %>% 
  select(No, x, y)

#移動相関を取る
out = roll_regres(y ~ x, df, width = 20,
  do_compute = c("sigmas", "r.squareds", "1_step_forecasts"))

do_computeを指定しないとR2とかが計算されないから必要なら指定する。窓のとり方は後方なので、基準点から過去方向にデータが選ばれる。