の続きです。
今回は、R言語のlm関数で線形回帰分析でリターンを予測してみます。
はじめに、df_train, df_testの各データフレームから、今回の分析では使わない同じ週のリターンの変数を削除しておきます。
lm関数でモデルを作成します。
summary関数でモデルを表示してみます。
途中省略
p-valueは0.8419と0.05よりも大きいので統計的に有意なモデルではないです。
このモデルでリターンの予測値を算出してみます。
predict関数で予測値を算出できます。
confusionMatrix関数をつかって正解率をみてみます。
正解率は0.5771です。あてずっぽうに予測したのよりはいいですがそれほどでもないですね。
この正解率を保存しておきます。
lm_model1をもう少しよくしてみましょう。step関数で重要でない変数を削除してみましょう。
summary関数で表示してみます。
p値は0.01236と0.05よりも小さくなりましたので有意なモデルです。だいぶ説明変数が減りましたね。このlm_model2で予測してみます。
confusionMatrixで正解率をみてみます。
正解率は0.5699と低くなりました。この値を保存しておきます。
lm_model2はsummary関数での結果を見ると、XLB3やXLE3が係数のp値が0.05より大きいのでまだまだ単純化できそうです。update関数で単純化していきます。
summary関数で表示します。
p値は0.01443なので有意なモデルです。
pred関数で予測値を計算します。
正解率を計算してみましょう。
正解率は0.5735でした。保存しておきます。
lm_model3はXLE3が削除してもよさそうな変数でした。削除したモデルを調べてみます。
p値は0.007638と0.05よりも小さいですので、有意な統計モデルです。予測値を算出して、正解率をみてみます。
正解率は0.5735でした。
lm_model4はXLB2が削除できそうでした。調べてみましょう。
p値は0.01242と0.05より小さく有意な統計モデルです。XLF2, XLU2ともに係数のp値が0.05以下です。
このlm_model5の正解率を調べてみましょう。
正解率は0.5753でした。
lm_model5では変数はXLF2とXLU2だけが残りました。2週前の金融(XLF)と公益事業(XLU)です。こんどはこの2つの変数の2乗項と交差項を加えたモデルを調べてみましょう。
p値は0.03459と0.05よりも低いので有意なモデルです。
予測値を算出して正解率を計算します。
正解率は0.5681でした。保存しておきます。
lm_model6をstep関数で単純にします。
p値は0.008023なので有意な統計モデルです。
予測値を計算して正解率をみてみましょう。
正解率は0.5681でした。
こうしてみると、正解率が一番高いのは全部の変数を説明変数に使ったlm_model1ですが、これは統計的に有意なモデルではありませんでした。
統計的に有意なモデルで正解率が一番高いのはlm_model5でした。
一番単純なモデルです。
2週間前に金融セクターが上昇していて、公益事業セクターが下落していると、S&P500は上昇するということですね。
S&Pの上昇確率 = 0.57480 + 1.16861 x 2週前の金融セクターの上昇率 - 2.72548 x 2週前の公益事業セクターの上昇率
というモデルです。
まあ、線形回帰モデルでは予測力はそれほど高くはないですね。
今回は以上です。
次回は
です。
はじめから読むには、
です。