の続きです。
今回はR言語で回帰分析をしてみたいと思います。lm関数、gam関数、tree関数、svm関数の4つの中で何が一番成績がいいか調べます。
トレーニング用のデータは2007年のデータ、テスト用のデータは、2006年のデータを使って、perIncomeをresponse variableに、Food, House, Wear, logMitsudoをexplanatory variableにしてみたいと思います。
2006年度だけのデータフレームを用意します。
lm関数で回帰分析モデルを作ります。
step関数で単純化したモデルも作ります。
FoodとlogMitsudoだけが有効なexplanatory variablesですね。Food, logMitsudoの値が大きい都道府県はperIncomeも大きいです。
続いて、gam関数で回帰分析します。gamはgeneralized additive modelというものです。mgcvパッケージを読み込んでから、gam関数を使います。
続いて、tree関数で回帰分析します。treeはtree regressionです。treeパッケージを読み込んからtree関数を使います。
最後はsvm関数で回帰分析をします。svmはsupport vector machineというものです。e1071パッケージを読み込んでから使います。
これで回帰分析モデルは作成できました。このモデルを使って、predict関数で、df06のperIncomeを予測します。
これらの予測値と実際のperIncomeの値から、MSE(mean square error)を計算します。MSEが一小さいモデルが一番正確に予測できたことになります。
それでは、結果を見てみます。
barplot関数でグラフにします。
gam関数が一番MSEが小さいです。2番目はlm関数で単純化したほうです。3番目はsvm関数、4番目がlm関数の単純化しないほう、最後がtree関数でした。
cor関数で相関係数も計算してみましょう。
結果を見てみます。
これもbarplot関数で棒グラフにしましょう。
相関係数が1番1に近いのは、svm関数、2番目がgam関数、3番目がlm関数の単純化したほう、4番目がlm関数の単純化しないほう、5番目がtree関数でした。
今回は以上です。