Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

SPDR S&P 500 ETFのリターンをセクターSPDR ETFのリターンで分析する5 - R言語のlm関数で線形回帰分析でリターンを予測してみる。

 

www.crosshyou.info

 の続きです。

今回は、R言語のlm関数で線形回帰分析でリターンを予測してみます。

はじめに、df_train, df_testの各データフレームから、今回の分析では使わない同じ週のリターンの変数を削除しておきます。

f:id:cross_hyou:20210328085529p:plain

lm関数でモデルを作成します。

f:id:cross_hyou:20210328085755p:plain

summary関数でモデルを表示してみます。

f:id:cross_hyou:20210328085927p:plain

途中省略

f:id:cross_hyou:20210328085953p:plain

p-valueは0.8419と0.05よりも大きいので統計的に有意なモデルではないです。

このモデルでリターンの予測値を算出してみます。

predict関数で予測値を算出できます。

f:id:cross_hyou:20210328090520p:plain

confusionMatrix関数をつかって正解率をみてみます。

f:id:cross_hyou:20210328090617p:plain

正解率は0.5771です。あてずっぽうに予測したのよりはいいですがそれほどでもないですね。

この正解率を保存しておきます。

f:id:cross_hyou:20210328090908p:plain

lm_model1をもう少しよくしてみましょう。step関数で重要でない変数を削除してみましょう。

f:id:cross_hyou:20210328091107p:plain

summary関数で表示してみます。

f:id:cross_hyou:20210328091213p:plain

p値は0.01236と0.05よりも小さくなりましたので有意なモデルです。だいぶ説明変数が減りましたね。このlm_model2で予測してみます。

f:id:cross_hyou:20210328091443p:plain

confusionMatrixで正解率をみてみます。

f:id:cross_hyou:20210328091722p:plain

正解率は0.5699と低くなりました。この値を保存しておきます。

f:id:cross_hyou:20210328091846p:plain

lm_model2はsummary関数での結果を見ると、XLB3やXLE3が係数のp値が0.05より大きいのでまだまだ単純化できそうです。update関数で単純化していきます。

f:id:cross_hyou:20210328092233p:plain

summary関数で表示します。

f:id:cross_hyou:20210328092359p:plain

p値は0.01443なので有意なモデルです。

pred関数で予測値を計算します。

f:id:cross_hyou:20210328092813p:plain

正解率を計算してみましょう。

f:id:cross_hyou:20210328093057p:plain

正解率は0.5735でした。保存しておきます。

f:id:cross_hyou:20210328093334p:plain

lm_model3はXLE3が削除してもよさそうな変数でした。削除したモデルを調べてみます。

f:id:cross_hyou:20210328093650p:plain

p値は0.007638と0.05よりも小さいですので、有意な統計モデルです。予測値を算出して、正解率をみてみます。

f:id:cross_hyou:20210328094113p:plain

正解率は0.5735でした。

f:id:cross_hyou:20210328094307p:plain

lm_model4はXLB2が削除できそうでした。調べてみましょう。

f:id:cross_hyou:20210328094619p:plain

p値は0.01242と0.05より小さく有意な統計モデルです。XLF2, XLU2ともに係数のp値が0.05以下です。

このlm_model5の正解率を調べてみましょう。

f:id:cross_hyou:20210328095200p:plain

正解率は0.5753でした。

f:id:cross_hyou:20210328095550p:plain

lm_model5では変数はXLF2とXLU2だけが残りました。2週前の金融(XLF)と公益事業(XLU)です。こんどはこの2つの変数の2乗項と交差項を加えたモデルを調べてみましょう。

f:id:cross_hyou:20210328100100p:plain

p値は0.03459と0.05よりも低いので有意なモデルです。

予測値を算出して正解率を計算します。

f:id:cross_hyou:20210328100458p:plain

正解率は0.5681でした。保存しておきます。

f:id:cross_hyou:20210328100720p:plain

lm_model6をstep関数で単純にします。

f:id:cross_hyou:20210328101016p:plain

p値は0.008023なので有意な統計モデルです。

予測値を計算して正解率をみてみましょう。

f:id:cross_hyou:20210328101754p:plain

正解率は0.5681でした。

f:id:cross_hyou:20210328102039p:plain

こうしてみると、正解率が一番高いのは全部の変数を説明変数に使ったlm_model1ですが、これは統計的に有意なモデルではありませんでした。

統計的に有意なモデルで正解率が一番高いのはlm_model5でした。

一番単純なモデルです。

f:id:cross_hyou:20210328102349p:plain

2週間前に金融セクターが上昇していて、公益事業セクターが下落していると、S&P500は上昇するということですね。

S&Pの上昇確率 = 0.57480 + 1.16861 x 2週前の金融セクターの上昇率 - 2.72548 x 2週前の公益事業セクターの上昇率

というモデルです。

まあ、線形回帰モデルでは予測力はそれほど高くはないですね。

今回は以上です。

次回は

 

www.crosshyou.info

 です。

はじめから読むには、

 

www.crosshyou.info

 です。