医療職からデータサイエンティストへ医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。R時系列モデルを作るときは、データが定常過程に従っていることを前提とするモデルが多いです。現実には定常過程に従うデータはあまり多くありません。そんな非定常過程のデータを何となく多変量モデルで解析すると一見ものすごく当てはまりの良いモデルができてしまうことがあります。今回は、そんな見せかけに騙されないためにも、時系列モデルを作る際に重要な単位根や共和分などの概念ををまとめたいと思います。書籍等では難しい数式が並びますが、概念自体は直感的にも理解しやすいのです。単位根とランダムウォーク非定常過程というとよく出てくるのが単位根過程とランダムウォークです。どんなものかというと、こんなんです。これは以前の記事で紹介した来月の売上を今月の売上から予測するためのアイスの売り上げモデルです。www.medi-08-data-06.work単位過程とは係数が1を含むAR過程とも言えます。AR過程の係数が1未満であると定常過程になるのは、平均値から大きくずれた時点があったとしても係数が1未満であれば、その影響はいずれ0になるので、結果的に平均回帰的になるからです。こんなAR過程であるt時点で偶然にも20という値になったとしましょう。誤差正規分布の標準偏差が5であるため、20以上の値が出る確率は、0.00003%ぐらいです。するとt+1時点目の値は、となります。t+2,t+3時点目を計算していくとと20という影響がだんだん無くなっているのが分かります。誤差に関しても、式をみてわかるようにどんどん0に近づいていきます。(実はAR過程は無限のMA過程に書き換え可能であり、これは重要な特性なのですが今回は触れないので下記参考書をご参照下さい。)次に以下のような単位根過程で、同じようにあるt時点で20の値をとった場合のことを考えてみましょう。t+1時点目は同様にt+2,t+3時点目はとなりt時点目の20の影響はずっと残ったまま、しかも誤差もどんどん足し算されています。これをランダムウォークとも言い、どこに値があるのかはランダムに決定されることから、この名前がついています。単位根過程の場合には長期的な予測は全くできないことになります。(定常過程であれば、平均に収束します。)現実世界では、株価などが単位根過程の代表ですね。株価の長期的な予測は誰にもできないことで知られています。以前の記事でも紹介したように、モデリングするときには、定常過程になるようにデータを前処理をするのが定石パターンです。(状態空間モデルや閾値ARモデルなど、非定常過程をそのままモデリングする例外もあります。)www.medi-08-data-06.workADF検定ところで単位根過程にデータが従うことはどのように調べれば良いでしょうか?過程が定常過程かそうではないかの判断方法は、時系列解析の長い歴史の中で多くの研究がなされ、様々な手法が考案されてきました。ADF検定は、AR過程において、"係数が1である"を帰無仮説として、"係数が1未満である"を対立仮説とするため、この検定で棄却された場合は定常過程であると言えます。棄却できなかったとしても、単位根を持つとは積極的に言えないことに注意してください。補足:ADF検定について少し詳しくADF検定は、次数が1の場合を検定するためのDF検定を次数が1以上にも対応できるように拡張したものです。基本的な考え方はDF検定に基づくため、DF検定の枠組みで説明します。DF検定の帰無仮説は"AR(1)過程の係数が1である"を設定します。対立仮説では以下の3つからもっともらしそうな対立仮説を選びます。:上から下に行くほど前提が緩くなり、誤って棄却してしまうことが少なくなります。(単位根を定常過程であると判断してしまう。)しかし、逆にいうと検定力が落ちるので、定常過程であっても棄却されない可能性が高くなります。特段の理由がなければ一番緩い仮定の3番目を対立仮説としますが、前提が確実な場合はそれ以外も検討すると良いでしょう。ADF検定は、基本的な流れはDF検定と同じですが、次数の選択をする必要があります。次数選択の方法に関しても様々な考え方がありますが、AICなどの情報量基準に基づくのが一般的なようです。単位根はなにが問題か~見せかけの回帰問題~株価などの単位根過程に従う場合には、モデル作成や予測はできないことが分かりました。なんとか他の変数を使ってでも値の動きを説明したいと思うのが、人間の欲望ってものです。そこである変数Xを使って、単位根過程に従うデータYに対して回帰式を作ってみましょう。こんな回帰式ができたとして、変数Xを手に入れることが可能なら、ランダムウォークに従うはずのYの値を説明できることになります。実はこんな理想的な回帰式を作ることのできるXは誰でも手に入れることができるのです。それは、同じようにランダムウォークに従うデータをXにして回帰式を作れば良いのです。実際はなんの関係もないランダムウォーク同士を回帰式にすると、とても当てはまりの良い回帰式ができることが分かっています。これを見せかけの回帰と言います。これは二つの単位根過程従うデータをプロットしてものです。二つの企業の株価とでもしましょうか。この赤と黒のデータを回帰式にすると係数が優位な回帰式ができますが、ご覧の通り全く意味はありませんね。単位根過程のあるデータは前処理をして定常過程にしてから、統計モデルを作りましょう。定常過程のモデルであれば、因果の推論やその他多変量モデルのテクニックを使うことができます。見せかけの回帰かどうかを判断するためには、変数同士が単位根過程に従うことを確認すれば騙されずに済みますが、後述する共和分との兼ね合いもあります。test:ダービンワトソンテスト)と呼ばれるものがあります。DW検定自体は、見せかけの回帰のためというよりも、一変量、多変量モデル問わず、作ったモデルの残差に自己相関があるかどうかを検定するためのものです。(モデルの残差に自己相関がある場合は、良いモデルではない)見せかけの回帰の場合、推定された係数が優位であり、決定係数も高くなりがちですが、残差の自己相関は無くなりません。試しに先ほどの二変数で回帰式を作り、モデルの残差をコレログラムにしたものが以下になります。思いっきり自己相関がありますね。DW検定は残差に自己相関がないことを帰無仮説とするため、回帰式にDW検定を行って棄却されれば、残差に自己相関が存在することが確認でき、見せかけの回帰であると判断できます。共和分さて、単位根過程同士の回帰式は意味がないことが分かりました。意味のある回帰式ができる時があります。それは変数間に共和分の関係が成り立つ時です。一変量時系列モデルの時、差分をとった場合に定常過程になる過程(ARIMAモデルなど)を和分過程と言いました。共和分とは和分過程を二変量以上に拡張し、単位根に従う二つの変数同士がうまく打ち消しあって定常過程に従う場合のことを指します。イメージが掴みにくいと思うので、以下をみてみてください。赤と黒が似たような動きをしているように見えます。これが共和分の関係にある変数です。赤も黒も単位根過程に従うため、各変数のみでARIMAモデルなどの一変量時系列モデルを作ることはできません。赤と黒で回帰式を作ると意味のあるモデルになるのです。赤と黒の変数で回帰式を作り、残差のをプロットしてみましょう。なんとなく定常過程っぽいですね。これは単位根の変数同士がうまく打ち消しあっているため、作成した回帰式の残差は定常過程になります。ちなみに見せかけの回帰式残差は単位根過程になり、こんな感じになります。共和分の関係にあるということは、それぞれの変数が均衡していると解釈することもできます。この共和分の関係を使って株の取引を行うペアトレードという手法があります。これは単体の株価を予測することは難しくても、共和分の関係にある株価の差(グラフ青矢印)の期待値は同じなるため、差が大きすぎたり小さすぎたりした場合には、それぞれの株を売り買いするというものです。二変数同士が共和分の関係になるためにはどのような検定をすれば良いでしょうか。二変数同士が単位根過程に従うことを前提とします。一つは相関係数をみるという手もあります。片方が大きくなればもう片方も大きくなるため相関係数も高くなります。共和分への十分条件ではないため、他の方法を検討します。作ったモデルの残差に単位根検定をするのはどうでしょうか?共和分の関係であれば、残差は定常過程に従うはずなので、残差に対してADF検定をすれば良いでしょう。棄却点は異なりますが、考え方は変わりません。詳細は省きますが、さらに進化した検定としてはJohasen型の共和分検定というものがあり、これは二変数以上の共和分も考慮できる検定です。興味のある方は下記参考書をご覧ください。単位根とADF検定RでADF検定を行うには{tserese}パッケージのadf.test{tserise}、もしくは{urca}パッケージのur.df{urca}を使います。一般的にはadf.testが使われているようですが、最初からトレンド、定数項付きの検定しかできません。ur.dfでは、定数項やトレンドの有無や仮定するlag数を指定できるため、こちらの方が柔軟性が高いです。共和分の検定にも{urca}パッケージを使うため今回はur.dfを使ってADF検定を行います。y[i-1]+epsy[i]}#ADF検定#typeには"none","drift""trend"を指定できる。今回は一番安全なtrendを使う。isの後に並ぶ最初の-1.374とtau3をみます。有意水準10%の値が-3.15であるため、今回は棄却されませんでした。定常過程とは言えず、単位根過程の可能性があるということですね。参考にadf.testも使ってみます。stationaryは対立仮説は定常であるという意味なので、こちらでもp値が0.8で棄却されませんでした。見せかけの回帰もう一つ単位根過程をつくって回帰式を作ってみます。1.7e-05なんと、本当は無関係なはずの変数間にとても有意な回帰係数が推定されました。DW検定と残差の自己相関コレログラムを書いてみましょう。DW検定には{lmtest}のdwtest{lmtest}を使い、作った回帰式をそのまま渡します。0コレログラムは思いっきり自己相関がありますね。DW検定でも自己相関がないという帰無仮説が棄却され、自己相関があるという結果になりました。これが見せかけの回帰の特徴です。共和分さて最後は共和分をRで実装、検定していきましょう。検定はca.po{urca}を使います。共和分は二変数を線形の関係で表すことができる、つまり、という式が成り立てば良いので、先ほど作ったXの変数からYを作成します。一応単位根検定もしておきましょう。5.47統計量-1.80、有意水準10%の値が-3.15で棄却されませんでした。定常過程とは言えなさそうです。データは二変数のデータフレームにして渡すことに注意してください。引数のdemeanでは、線形の関係性を指定します。指定できるものには以下があり、共和分の関係イメージとしてはこんな感じになります。:トレンドも定数項(切片もない)"const":定数項のみある"trend":定数項とトレンドがあるやってみましょう。65.1714今回は定数項もトレンドもないモデルだったので、定数項(intercept)とトレンド(trd)は有意な係数ではありません。こいった場合には"none"を指定すれば良いでしょう。今回の統計量51.53対して、有意水準1%の値が38.34であるため、帰無仮説が棄却され共和分の関係にあるといって良さそうですね。trendを指定した上の結果は5%水準では棄却されていますが、1%水準では棄却されていません。ちなみにJohasen型の共和分検定を行うにはco.jo{urca}を使います。まとめ時系列モデルを作成するときにデータが定常過程かそうでないかは結果の解釈に大きく影響します。モデルを作成できる前提をしっかりとおさえて、見せかけに騙されないようにしましょう。※本記事は筆者が個人的に学んだことをまとめた記事なります。数学の記法や詳細な理論、筆者の勘違い等で誤りがあった際はご指摘頂けると幸いです。最初に時系列の概略を学ぶにはオススメの書籍です。時系列解析はイメージが湧きにくく難解な書籍が多いですが、この書籍は非常に読みやすい内容になってます。見るRを使っている方は是非ともオススメしたい書籍です。古いパッケージを使用している箇所もありますが、理論、実践ともに分かりやすく、時系列解析のイメージが掴みやすいのです。93回この商品を含むブログを見る言わずもがな時系列解析といえば一番有名な沖本本です。理論的な背景がしっかりとまとめてあり、時系列を学ぶための必読書といっても過言ではありません。レベルは高いので、上記2冊のような入門書の後に読むことをオススメします。共和分に関して上記はとても分かりやすいです!ぜひご参考に。学んだこと、日々の所感をまとめていきます。※本ブログは筆者が個人的に学んだこと感じたことをまとめたブログになります。所属する組織の意見・見解とは無関係です。medi_data0826引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。