【R言語】自己相関係数の算出方法

スポンサーリンク

 

株価収益率などの時系列データではデータの値と観測時点が記録されおり、時系列分析では、このデータの並び順に意味を見出すことが分析において重要になってきます。

 

 

なので、通常の分析では「異なる2つの変数」の相関関係を計算するのに対して時系列分析では「今のデータと〇日前のデータ」といった感じに時間差を考慮した自分自身との相関関係を自己相関関係といい、これを数値化したものが自己相関係数です。

 

 

なおずらす度合いをラグと言い、もし1時点ずらして計算した自自己相関係数があった場合これはラグ1の自己相関係数と呼ばれます。

 

 

詳しくは↓記事で

www.dmjtmj-stock.com

 

 

時系列関係は別に1時点だけではなく数地点ずらした場合にも考えることができます。そしてラグnと自己相関係数の推移をグラフで視覚的イメージ化したものをコレログラムと言います。

 

 

ざっと自己相関係数について説明したところで本題である、Rによる自己相関係数の計算とコレログラフを描画を行なっていきます。

 

 

使用するデータ

2005年から2016年の任天堂の株価収益率

(※今回はこのデータをr.nintenというオブジェクトに入れています)

 

>acf(ts.ninten,plot=F)  ##コレログラムを出力せず数値を計算する

 

その結果、下のようなものが出力されます。

 

f:id:oruka199665:20170328214842j:plain

 

これによってラグが1から34までの自己相関係数できました。次はコレログラムを描画していきます。

 

> acf(r.ninten)

f:id:oruka199665:20170328215143p:plain

 

この青い線はこのラグの自己相関係数が0であるという帰無仮説に対しての95%信頼区間です。なので、点線を超えているものは有意水準5%を棄却し、有意であると判断できます。

 

 

つまりこのグラフの意味は1日前の収益率にしか有意な相関関係がないという事を意味しています。一応もしこれがラグ7の値まで有意であったとしても単純に7日前の値と有意な自己相関関係があるという訳にはなりません。(ラグ1による間接的関係があるため)

 

 

そして、今回のデータにおいてラグ1の自己相関関係があるということの意味は

 

・任天堂の今日の株価と昨日の株価には関係がある

・任天堂の昨日の株価と一昨日の株価には関係がある

が成り立つという事になります。

 

 

次に一昨日と今日の株価に関係があるのかを調べていきます。そのためには昨日の影響を取り除いた今日と一昨日の数値の関係を調べる必要があります。(このような今日の値と一昨日の値には昨日の値の影響が若干関係しているという考えを推移律といいます。)そのための自己相関係数を偏自己相関係数と言います。

 

 

Rで偏自己相関係数を計算するにはさっきにacf関数に引数をつけるだけで計算できます。

 

 

>acf(r.ninten,plot=F,type=”p”)  ## 偏自己相関係数の数値を計算

>acf(r.ninten,type=”p”)  ## 偏自己相関係数のグラフを出力

 

 

その結果が下のようになります。

 

f:id:oruka199665:20170328221849j:plain

 

f:id:oruka199665:20170328221743p:plain

 

 

偏自己相関係数では推移律による間接的な影響が引かれるため、ラグnの自己相関係数の値は基本的に小さくなります。

 

 

青線はさっきと同じように95%信頼区間であり、このグラフからラグ1のみが有意であり、したがって任天堂の収益率は1日前の収益率とのみ直接的な関係があるという事になります。

 

 

 

プログラミングを挫折せず最短で習得する方法


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上にあたってはもはや出来て当たり前のスキルとなりつつあります。こういう話はテレビや雑誌でも最近増えてきたので、知らない人はいないでしょう。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して侍エンジニアのwebサービスコースに申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解できました。


侍エンジニアでは様々なコースが用意されており、HTML・cssなどでWebサイトやWebアプリを作ってみたい人からPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズにこたえています。


IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習まで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけてみましょう。ちなみに今「侍エンジニア」の無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。







自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする