www.crosshyou.info今回は、R言語のglm関数とlm関数でclassificationをしてみます。2009年度のデータを使って、モデルを作成し、2014年度のデータでモデルのテストをします。
まず、2009年度のデータフレーム、2014年度のデータフレームを用意します。
予測する変数として、Popu(人口)が平均値よりも上なら1、そうでないなら0という2値をとる変数を作成しました。
2009年度も2014年度も平均値よりも多い都道府県は12ありました。
glm関数でロジスティクス回帰モデルを作ります。
step関数で単純化します。
per2ndの係数のp値は0.0631と0.05よりも大きいですから、削除してもいいかもしれないです。
Pr(>Chi)が0.02337なので0.05よりも小さいですね。削除してはいけなかったです。
単純化していない、glm_1で予測してみます。predict関数を使います。
結果をtable関数でみてみます。
モデルが1と予想したけど、実際は0だったというのが10個ありました。正解率は37/47=78.7%です。
単純化したモデル、glm_2で予測してみます。predict関数を使います。
結果をみてみます。table関数を使います。
モデルは0と予測したのに実際は1だったのが1つ、モデルは1と予測したのに実際は0だったのが6個でした。正解率は40/47=85.1%でした。
今度はlm関数で線形回帰モデルを作ります。
step関数で単純化します。
I(perGDP^2)は削除してもいいかもしれません。
Pr(>F)は0.06451と0.05よりも大きいので削除してもいいです。
lm_3を見てみます。summary関数を使います。
perGDPを削除してもよさそうですね。
lm_4を見てみます。
per2ndを削除しましょう。
lm_5をみてみましょう。
これで全てのexplanatory variablesの係数のp値が0.05以下になりました。
lm_5で予測してみます。
結果を見てみます。
モデルは0と予測したけど実際は1だったのが4つ、モデルは1と予測してけど実際は0だったのが2つでした。正解率は41/47=87.2%でした。これが一番正解率が高いですね。
縦軸にLS, 横軸にper1stのグラフを描いて、その上にlm_5のモデルから計算したLSを重ねてみます。
赤い線がlm_5の予測の線で、それを四捨五入したのが青い線です。
今回は以上です。