【R】ランダムウォークの『見せかけの回帰』を実験で確かめてみる

f:id:ekanoh:20181016223303p:plain

見せかけの回帰とは

見せかけの回帰(Spurious Regression)とは、本来関係のないはずの2組の時系列データが回帰関係を持っているように計算されてしまうことです。

統計的には、確率的に独立である2つの時系列データに対してOLS(最小二乗法による回帰分析)を行ったときに、回帰係数が本来ゼロであって欲しいところが、誤った推定値を取ってしまう、ということになります。

たとえば、「あるデータXとデータYに対して回帰分析を行って、有意な関係が出ました! 」というときに、「・・・ちゃんと計算したら実は見せかけの回帰でした」となることがあるわけです。計量経済学的な分析を行うデータサイエンティスト各位にとっては特に注意を払う必要がある問題です🤔

定常性とは

見せかけの回帰は分析対象の時系列データに「定常性」が無いときに発生すると考えられています。 定常性の教科書的な定義は以下のようなものです💁‍♂️


Def. 定常性 ある確率過程 Y_tが定常性を持つとは、平均・分散が時間によらず一定であり、2時点間の共分散が時間の差分にのみ依存すること。

 E(Y _ t) = \mu

 V(Y _ t) = E(Y _ t - \mu)^ 2 = \sigma^ 2

 \gamma _ k = E( (Y _ t - \mu) (Y _ {t+k} - \mu) )


実務上のざっくりとした理解として、上昇トレンドや下降トレンドが見られる時系列データは、平均が時間によって明らかに異なるため、定常ではないと考えることができます。

具体例

定常性がある:ホワイトノイズ

f:id:ekanoh:20181016213656p:plain

まず、定常性のある確率過程として代表的なものは「ホワイトノイズ」です。

 u _t = N(0, \sigma ^ 2) \,\,\,\,\, i.i.d.

(i.i.d. = independent and identically distributedで、互いに独立で同一の分布に従う、という意味です✍️)

時点 tにかかわらず、いつでも平均ゼロで分散 \sigma ^ 2正規分布になっており、それぞれ完全に独立です。 たとえば、一般的な重回帰分析における誤差項(Noise Term)もこのホワイトノイズを仮定しています。 上図のプロットを見てみるとゼロを中心に散らばっているのが観察できます。

定常性がない:ランダムウォーク

次に、定常性のない確率過程にはランダムウォークと呼ばれるものがあります。(千鳥足で歩くような挙動から、日本語では「酔歩」と呼ばれることもあります🍶🚶‍♂️)

1. ランダムウォーク

f:id:ekanoh:20181016214922p:plain

 Y _ t = Y _ {t-1} + \mu _ t

t時点での Y _ tが、1時点前の値とホワイトノイズの和になっています。 時間が経つにつれて逐次的にノイズ項が加算されていくことになりますが、分散が時間依存で増加していく(See also 正規分布の加法性)ため、定常性を満たしません。

ちなみにたとえば、 u _ 2 = 0でなく u _ 2 = 2だったとき、 Y _ 2以降の Y _ tの値はすべて2高くなるような挙動をするため、 ランダムウォークは消えない記憶(infinite memory)を持つ」(Kerry Patterson)というような表現をされることがあります。

なお、もし差分を取れば Y _ t - Y _ {t-1} = \mu _ tとなるため、ホワイトノイズのようなプロットになることが期待されます。 実際に差分を取ってみると、以下のようになりました。先ほどと同様、ゼロを中心に散らばっているのが観察できます🙆‍♂️

f:id:ekanoh:20181016215512p:plain

2. ドリフト付きランダムウォーク

f:id:ekanoh:20181016215727p:plain

 Y _ t = \delta + Y _ {t-1} + \mu _ t

先ほどのランダムウォークにドリフト項 \deltaを付け加えたものは「ドリフト付きランダムウォーク」と呼ばれます。 差分を取ってみると Y _ t - Y _ {t-1} = \delta + \mu _ tとなっており、ドリフト項の正負によりプロットが吹き流され(drift)ていきます💨

cf. 単位根過程

一般に、N階差分を取ると定常過程になるものをN次和分過程 I(N)と呼び、 1階差分を取ると定常過程になるものを単位根過程と呼びます。 先ほども見た通り、ランダムウォークは単位根過程になっています。ドリフト付きランダムウォークも同様に単位根過程です。

見せかけの回帰を確かめる

さて、2つの時系列データに対して回帰分析をかけたときに、たとえどちらも完全に別々の過程から生成されていたとしても、回帰分析が有意な結果になってしまい、それを「見せかけの回帰」と呼ぶのでした。定常性がない場合に起こるとされているので、試しに2組のランダムウォークに対して回帰分析をかけてみましょう

# ランダムウォークを100ステップ分生成する
set.seed(123)
sample_num <- 1000
sigma <- 1

x <- c(0,cumsum(rnorm(sample_num-1, mean=0, sd=sigma)))
y <- c(0,cumsum(rnorm(sample_num-1, mean=0, sd=sigma)))

# 回帰分析を行う
df <- data.frame(t=1:sample_num, x, y)
summary(lm(y~x,df))

f:id:ekanoh:20181016133232p:plain

 R ^ 2 = 0.25で、p値も有意な結果になり、実際に「見せかけの回帰」を観察することができました。この2つの系列を見て、果たして直感的に回帰関係があると思えるかどうかはわかりませんが、「回帰分析をしたら有意だった」と言われたら「そうか」と思ってしまいそうではないでしょうか?🤔

単位根過程は、マーケティングにおける認知率や配架率のような指標や、マクロ経済での年間平均消費支出や可処分所得などの指標など、さまざまな分析で登場する可能性があります。

「ディッキー・フラー検定など適当な単位根検定を行う」「差分系列を取るなどして非定常性を除去する」などの操作を適切に行い、より精緻な分析を行っていく必要があるでしょう。

使用したコード

Spurious Regression in R