crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

景気ウォッチャー調査データと株価の分析4 - 株価を景気ウォッチャーのデータで回帰分析をする。R言語のlm関数を使用

 

www.crosshyou.info

 の続きです。

今回は、株価を景気ウォッチャーのデータで回帰分析してみたいと思います。

まずは、当月の景気ウォッチャーと当月の株価です。前回の分析で、当月の株価と一番相関の高かったのは、飲食関連関連現状でした。この変数を使って線形回帰分析をしてみようと思います。R言語のlm関数を使います。

f:id:cross_hyou:20190214193102j:plain

(Intercept)の値は、474.667で、飲食関連関連現状の係数は、17.768です。

回帰式は、株価(当月) = 474.667 + 17.768 * 飲食関連関連現状 + 撹乱項
となります。p-value = 9.941e-12と0.05よりも小さい値です。

残差をプロットしてみましょう。

f:id:cross_hyou:20190214193534j:plain

 

f:id:cross_hyou:20190214193548j:plain

こうなります。残差はプラスにもマイナスにも同じくらい分布していますので、特に問題はないような気がします。

株価と飲食関連関連現状の散布図に回帰線を重ねてみましょう。plot関数で散布図を書いて、abline関数で回帰線を重ねます。

f:id:cross_hyou:20190214194155j:plain

f:id:cross_hyou:20190214194206j:plain

こんな感じです。

今度は、4か月前のレジャー施設関連先行きと当月の株価の回帰分析をしてみます。

f:id:cross_hyou:20190214194613j:plain

こうなりました。

回帰式は、

株価(当月) = -44.229 + 25.980 * レジャー施設関連先行き(4か月前) + 撹乱項

となります。p-value < 2e-16 となっていますので、有意な回帰式です。

残差をプロットしてみます。

f:id:cross_hyou:20190214194933j:plain

f:id:cross_hyou:20190214194944j:plain

このようになりました。

散布図と回帰線も描いてみましょう。

f:id:cross_hyou:20190214195154j:plain

f:id:cross_hyou:20190214195206j:plain

こんな感じです。もう少しフィットさせたいですよね。。時間トレンドの項目を加えてみましょう。

f:id:cross_hyou:20190214195714j:plain

上のようにして、1から2, 3, ,,, 215と1ずつ増加するベクトルを作成して、これもモデルに加えます。

f:id:cross_hyou:20190214200207j:plain

こうなりました。

回帰式は

株価(当月) = -56.311 + 23.485 * レジャー施設関連先行き(4か月前) + 1.235 * トレンド + 撹乱項

です。

回帰式全体のp-value は2.2e-16より小さいので回帰式は有意です。レジャー施設関連先行きのp値は1.43e-14なので有意です。trendのp値は4.65e-05なので有意です。

残差をプロットしてみます。

f:id:cross_hyou:20190214200616j:plain

f:id:cross_hyou:20190214200628j:plain

となりました。どうなんでしょうね。。

実際の株価とモデルから予測される株価をグラフにしてみましょう。

回帰式に従って予測される株価を計算します。

f:id:cross_hyou:20190214201448j:plain

 

こうして、yosokuというベクトルの予測された株価が格納さました。

あとはplot関数でグラフにします。

f:id:cross_hyou:20190214202109j:plain

f:id:cross_hyou:20190214202120j:plain

どうでしょうか。。似ていると言われたら似ていますね。。

4か月前のレジャー施設関連先行きの動きを見ていれば株価がどうなるかわかりそうですね。

今回は以上です。

 

景気ウォッチャー調査データと株価の分析3 - R言語で株価と各変数の相関を調べる。3か月、4か月前の景気と株価の関連

 

www.crosshyou.info

 の続きです。

今回は株価と各景気ウォッチャーの変数の相関関係を調べてみたいと思います。

余談ですが、堺屋太一さんがお亡くなりになりました。この堺屋太一さんが経済企画庁長官のときに景気ウォッチャー調査を発案したそうです。ご冥福を祈ります。

前回、R言語のfor関数で一括して現状と先行きの相関係数を計算しました。今回もfor関数を使って一括して株価との相関係数を計算したいと思います。

まずは、当月の変数と当月の株価の相関係数です。

株価は47列目のデータですから、3列目から46列目までの相関を計算します。前回と同じように for関数を使います。

f:id:cross_hyou:20190212110701j:plain

このような結果になりました。一応、3つぐらい実際のcor関数を使ってあってるかどうか確認しておきましょう。

まずは、最初の合計現状との相関係数です。for関数で一括計算した結果では、0.4014649でした。

f:id:cross_hyou:20190212110919j:plain

こちらも 0.4014649で一致しました。

次は、最後の雇用関連先行きを見てみましょう。for関数での結果は 0.3697790 です。

f:id:cross_hyou:20190212111223j:plain

これも 0.369779 で一致しました。

もう一つ、コンビニ先行きを見てみましょうか。for関数での計算では、0.3317388です。

f:id:cross_hyou:20190212111524j:plain

これも一致しました。

ということで、for関数で株価との相関がうまく計算できたようです。sort関数で並び替えてみましょう。

f:id:cross_hyou:20190212111850j:plain

こうなりました。株価と一番相関関係が強いのは、飲食関連現状です。二番目はサービス関連先行きで。一番相関関係が弱いのは乗用車自動車備品販売店現状でした。

 

今度は、前月の景気ウォッチャーの値と当月の株価の相関を調べましょう。

まず、前月用の景気ウォッチャーのデータフレームを作成しましょう。最後の行を削除すればいいですね。

f:id:cross_hyou:20190212112751j:plain

c(-219)で最後の219行目を削除し、c(-1, -2, -47)で年、月、株価を削除しました。

これに対応する株価は、最初の1行目がいらないデータですね。

f:id:cross_hyou:20190212113102j:plain

これで、df1という景気ウォッチャー指数の各変数の格納されているデータフレームとkabuka1という株価のベクトルができました。この2つでfor関数を使って相関係数を計算しましょう。

f:id:cross_hyou:20190212114237j:plain

はい、このようになりました。sort関数で並び替えてみましょう。

f:id:cross_hyou:20190212114408j:plain

一番相関関係が強いのは、サービス関連関連先行きですね、0.4776675 です。。その次はその他小売店先行きです。一番相関関係が弱いのは、乗用車自動車備品販売店現状です。

もう1か月づらして、前々月の景気ウォッチャー指数と当月の株価の相関を見てみましょう。景気ウォッチャーは最後の2行は削除、株価のほうは、はじめの2行を削除します。

f:id:cross_hyou:20190212115017j:plain

またまたfor関数で一気に相関係数を計算します。

f:id:cross_hyou:20190212120011j:plain

結果はこうなりました。サービス関連関連先行きが一番相関関係が強いですね。0.5051150です。一番相関関係が弱いのは、乗用車自動車備品販売店現状です。

ここまで、当月の景気ウォッチャーと当月の株価、前月の景気ウォッチャーと当月の株価、前々月の景気ウォッチャーと当月の株価の相関係数を計算しました。それぞれの平均の相関係数をmean関数で確認しましょう。

f:id:cross_hyou:20190212120540j:plain

こうなりました。つまり、前々月の景気ウォッチャー指数の値が一番当月の株価と相関が強いということですね。さらにもう一月前も調べましょう。

f:id:cross_hyou:20190212120936j:plain

景気ウォッチャーのデータフレームは、最後の3行を削除して、株価のベクトルははじめの3行を削除します。こうしてfor関数で同じようにします。

f:id:cross_hyou:20190212121744j:plain

相関の平均値は、0.4477235 とさらに強くなりました。一番相関係数の高いには、レジャー施設関連先行きになりました。一番相関の弱いのは乗用車自動車備品販売店現状です。

4か月先もやってみましょう。

f:id:cross_hyou:20190212122441j:plain

計算用のデータフレームとベクトルを作りました。

f:id:cross_hyou:20190212122549j:plain

結果はこうなりました。4か月前の景気ウォッチャーと株価の相関の平均は、0.4514589です。一番相関関係の強いのはレジャー施設関連先行きで、一番相関関係の悪いのは乗用車自動車備品販売店現状です。

最後にそれぞれの相関係数をまとめて一つのデータフレームにしてしまいましょう。

data.frame関数を使います。

f:id:cross_hyou:20190212123638j:plain

summary関数で平均値等を表示しましょう。

f:id:cross_hyou:20190212123716j:plain

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

景気ウォッチャー調査データと株価の分析2 - R言語で現状と先行きの相関関係を調べる。for関数で繰り返し処理の練習

 

www.crosshyou.info

 の続きです。

今回は、現状と先行きの相関関係の高い業種、低い業種はどこかを調べてみたいと思います。R言語で相関係数を調べるには、cor関数を使います。

まずは、合計現状と合計先行きの相関関係を調べましょう。

f:id:cross_hyou:20190209105727j:plain

相関係数は 0.9188761です。この相関が有意かどうかは、cor.test関数でわかります。

f:id:cross_hyou:20190209105928j:plain

p-value < 2.2e-16 と 0.05よりも小さいp値ですから有意です。

95%の信頼区間での相関係数は、0.8953760から0.9372724となっています。

ちなみに一番下に、0.9188761とcor関数で計算された相関係数が表示されています。

続いて、家計動向関連現状と家計動向関連先行きの相関係数を調べます。

f:id:cross_hyou:20190209111034j:plain

0.8826639です。合計よりは相関は低いですね。

次は、小売関連の現状と先行きですが、ここでちょっと立ち止まって考えましょう。

合計現状は3列目、合計先行きは25列目、差が22列

家計動向関連現状は4列目、家計動向関連先行きは25列目、差が22列

小売関連現状は5列目、小売関連先行きは27列目、差が22列と一定ですから、

cor(i列目, i+22列目)と一般化できそうです。そして一般化できたらfor関数で繰り返し処理ができそうですね。やってみましょう。

f:id:cross_hyou:20190209113924j:plain

やった!うまくできましたね!合計の相関係数、家計動向関連の相関係数が先にcor関数で計算した値と一致していますから成功ですね。まあ、それぞれの名前に「現状」がついているのは良しとしましょう。

こうして一連の相関係数を一つのベクトルにしましたから、sort関数で並び替えでどの業種が一番相関が低いか、高いか簡単にわかります。

f:id:cross_hyou:20190209114521j:plain

相関係数が一番小さいのは家電量販店です。一番高いのは雇用関連です。

家電量販店の相関係数は、0.3908757ですが、これは統計学的に有意でしょうか?cor.test関数で確認してみましょう。

f:id:cross_hyou:20190209114850j:plain

p-value = 2.081e-09 なので0.05よりも小さいです。有意ということですね。

散布図を描いてみましょう。

f:id:cross_hyou:20190209115148j:plain

f:id:cross_hyou:20190209115203j:plain

こんな感じです。現状が80を超えているのに、先行きが20以下という月があります。

一番相関係数の大きかった雇用関連の散布図も見てみましょう。

f:id:cross_hyou:20190209115510j:plain

f:id:cross_hyou:20190209115521j:plain

このような散布図です。右肩上がりの直線関係です。

家電量販店の推移のグラフも描いてみましょう。

f:id:cross_hyou:20190209121205j:plain

 

f:id:cross_hyou:20190209121218j:plain



はじめにrange関数でY軸の範囲を ylim という変数に格納して、plot関数で現状のグラフを描き、lines関数で先行きのグラフを追加しました。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

景気ウォッチャー調査データと株価の分析1 - R言語で基本統計量を計算する。hist関数とplot関数も使ってみる。

今回は景気ウォッチャー調査の分析をしてみようと思います。これに加えて株価のデータも一緒に分析しましょう。

e-Stat 政府統計の総合窓口からデータを取得しました。

f:id:cross_hyou:20190208150508j:plain

この2番目の「分野・業種別DI」というファイルのデータを分析します。

f:id:cross_hyou:20190208150851j:plain

このファイルのデータと

f:id:cross_hyou:20190208150911j:plain

このファイルのデータを分析しようと思います。
株価のデータは、内閣府の景気動向指数のファイル

f:id:cross_hyou:20190208152725j:plain

この個別系列の数値の「先行系列(Excel形式:118KB)」のファイルから取得しました。

f:id:cross_hyou:20190208152928j:plain

まず、これらのデータをまとめたCSVファイルを作成しました。

f:id:cross_hyou:20190208153345j:plain

このCSVファイルをread.csv関数で読込み、summary関数で基本統計量を算出します。

f:id:cross_hyou:20190208153907j:plain

read.csv関数でR言語にデータを読込み、str関数で構造を調べます。

219の観測があって変数は47個あります。

summary関数で最小値、第1分位、中央値、平均値、第3分位、最大値を表示します。

f:id:cross_hyou:20190208154200j:plain

f:id:cross_hyou:20190208154220j:plain

変数の数が多いので大変ですね。よくわからないです。

とりあえず、合計現状、合計先行き、株価の基本統計量やヒストグラム、推移はみておきましょう。

基本統計量と変動係数は

f:id:cross_hyou:20190208154756j:plain

となりました。先行きのほうが現状よりも平均値が高いですね。楽観的ということでしょうか?変動係数は株価が一番高いです。株価は変動が大きいですね。

ヒストグラムはどうでしょうか?hist関数です。

f:id:cross_hyou:20190208155252j:plain

f:id:cross_hyou:20190208155305j:plain

合計現状(赤)と合計先行き(青)は左の裾が広い山型の分布ですが、株価(緑)の分布の形状はあきらかに別物ですね。

推移を見てみましょう。plot関数です。

f:id:cross_hyou:20190208155858j:plain

これも合計現状(赤)と合計先行き(青)は同じような推移ですが、株価(緑)は違う動きですね。

今回は以上です。

次回は

 

www.crosshyou.info

 

です。

消費動向調査の分析6 - R言語のaov関数とTukeyHSD関数を使って、どの年が有意に違うのかを調べる。

 

www.crosshyou.info

 の続きです。

前々回の分析で消費者態度指数は年毎に平均値が有意に違うことがわかりました。そこで今回は、どの年の平均値が有意に違うのかを調べてみましょう。

方法は、aov関数とTukeyHSD関数を使います。

早速やってみましょう。

f:id:cross_hyou:20190207201813j:plain

aov関数の結果をanova_modelという名前のオブジェクトにして、これをTukeyHSD関数で処理すると結果が出てくるのですが、年の数が多すぎでどれがどれだかわからないですね。。

もう一工夫しましょう。

f:id:cross_hyou:20190207202139j:plain

TukeyHSDの結果をオブジェクトにしてstr関数で構造を調べてみました。これはリストですね。Yearという名前の120行4列のマトリックスです。

そして、4列目のp adjがp値なので、このp adjで小さい順に並び替えればいいですね。

f:id:cross_hyou:20190207203851j:plain

まず、as.matrix(HSD_result$Year)でリストの1要素($Year)をマトリックスに変換します。さらにそれをas.data.frame関数でデータフレームにしました。

これで、p adjが0.05より小さいものを表示すればいいわけです。dplyrパッケージのfilter関数とarrange関数を使いましょう。

f:id:cross_hyou:20190207204716j:plain

変数名が p adjのようにスペースがあると上手くいかなかったので、p_adjに変更してからfilter関数とarrange関数を使ったのですが。。肝心の何年と何年の差が有意に違うのか、という行名が表示されていません。

行名も変数に加えましょう。

f:id:cross_hyou:20190207205056j:plain

Year_Pairとう名前で変数を作りました。

これで再度、先ほどのコマンドを実行します。

f:id:cross_hyou:20190207205351j:plain

0.05 よりも厳しく 0.01 よりも小さいデータだけにしたのですが、それでも60ぐらいありました。ここには上位のデータだけを表示しました。

2008年と2004年が一番違いがあります。以下、2008年と2005年、2008年と2006年などと続きます。

今回は以上です。

 

消費動向調査データの分析5 - R言語のaov関数で季節によって消費者態度指数の平均値が違うかどうかを検定してみる。

 

www.crosshyou.info

 の続きです。

前回の分析では、月ごとの消費者態度指数には違いはありませんでした。

今回は春夏秋冬ごとに消費者態度指数に違いがあるかどうかをaov関数で分散分析してみたいと思います。

まずは、ifelse関数で春夏秋冬のカテゴリを作成します。

f:id:cross_hyou:20190207120815j:plain

春は3,4,5月

夏は6,7,8月

秋は9、10、11月

冬は12、1、2月

と区分しました。

まずは、季節ごとの消費者態度指数をggplot関数で視覚化します。

f:id:cross_hyou:20190207121831j:plain

f:id:cross_hyou:20190207121848j:plain

geom_point(color = "red", size = 3) で大きさ3の赤丸を季節ごとにプロットし、

その上にgeom_boxplot(alpha = 0.2, color = "blue") で半透明(alpha = 0.2)の青い箱ひげ図を描いています。

どうでしょうか。。。有意な違いではないような気がしますが。。

aov関数とsummary関数をつかって一元配置分散分析をします。

f:id:cross_hyou:20190207122314j:plain

Pr(>F)の数値がp値です。これが0.619ですからやっぱり季節によっての消費者態度指数の平均値は違いは無いです。aov関数では分散が等しいことを仮定しています。

oneway.test関数でも検定してみましょう。oneway.test関数では分散が等しくないと仮定しています。

f:id:cross_hyou:20190207122629j:plain

p-value = 0.6258 と0.05よりも大きく、こちらの検定でも季節によって消費者態度指数の平均値に違いがあるとはいえないことが実証されました。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

消費動向調査データの分析4 - R言語のoneway.test関数で一元配置分散分析をしてみる。

 

www.crosshyou.info

 の続きです。今回はR言語のoneway.test関数を使って一元配置分散分析をしてみようと思います。

消費者態度指数の平均値が年毎、月ごとに違いがあるかどうかを分析します。

まず、ggplot関数を使って、年毎、月ごとの消費者態度指数を視覚化してみます。

まずは、tidyverseパッケージを読み込みます。

f:id:cross_hyou:20190206144433j:plain

まずは、年毎の消費者態度指数を視覚化してみます。

f:id:cross_hyou:20190206145118j:plain

f:id:cross_hyou:20190206145138j:plain

年毎にバラツキがあるのがわかりますね。

同じように月ごとにも視覚化してみましょう。

f:id:cross_hyou:20190206145457j:plain

f:id:cross_hyou:20190206145508j:plain

年ほどではありませんが、6月や7月と比べると11月、12月は平均値は低いですよね。

 

それでは、年毎に平均値に違いがあるかどうか oneway.test関数で検定してみます。

f:id:cross_hyou:20190206145917j:plain

が~~ん! 「十分な観測値がありません」というエラーになってしまいました。。よく考えると、2019年が1月のデータしかないんですよね。。2004年も9か月しかデータないですからね。2004年と2019年を除いたデータでやってみます。

f:id:cross_hyou:20190206150736j:plain

df_sml <- df %>% 以降の3行でまず、df_smlという2004年と2019年を除いたデータフレームを作成しています。table関数で確かに2004年と2019年が除外されていることを確認しています。最後に oneway.test関数で一元配置分散分析をしています。p-value < 2.2e-16 と0.05よりも小さい値ですから、年毎の消費者態度指数の平均値は統計的に有意な違いがあるとわかりました。

 

次は月ごとに消費者態度指数に違いがあるかどうかを調べましょう。

f:id:cross_hyou:20190206151230j:plain

p-value = 0.9928 と0.05よりも大きいですから、月ごとの平均値は有意な差はないということです。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。