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

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

都道府県別の食料費・住居費・被服及び履物費のデータ分析5 - R言語のlm関数、gam関数、tree関数、svm関数で回帰分析

 

www.crosshyou.info

 の続きです。

今回はR言語で回帰分析をしてみたいと思います。lm関数、gam関数、tree関数、svm関数の4つの中で何が一番成績がいいか調べます。

トレーニング用のデータは2007年のデータ、テスト用のデータは、2006年のデータを使って、perIncomeをresponse variableに、Food, House, Wear, logMitsudoをexplanatory variableにしてみたいと思います。

2006年度だけのデータフレームを用意します。

f:id:cross_hyou:20200506170036j:plain

lm関数で回帰分析モデルを作ります。

f:id:cross_hyou:20200506170347j:plain

step関数で単純化したモデルも作ります。

f:id:cross_hyou:20200506170531j:plain

FoodとlogMitsudoだけが有効なexplanatory variablesですね。Food, logMitsudoの値が大きい都道府県はperIncomeも大きいです。

 

続いて、gam関数で回帰分析します。gamはgeneralized additive modelというものです。mgcvパッケージを読み込んでから、gam関数を使います。

f:id:cross_hyou:20200506171529j:plain

続いて、tree関数で回帰分析します。treeはtree regressionです。treeパッケージを読み込んからtree関数を使います。

f:id:cross_hyou:20200506171925j:plain

最後はsvm関数で回帰分析をします。svmはsupport vector machineというものです。e1071パッケージを読み込んでから使います。

f:id:cross_hyou:20200506172251j:plain

これで回帰分析モデルは作成できました。このモデルを使って、predict関数で、df06のperIncomeを予測します。

f:id:cross_hyou:20200506172554j:plain

これらの予測値と実際のperIncomeの値から、MSE(mean square error)を計算します。MSEが一小さいモデルが一番正確に予測できたことになります。

f:id:cross_hyou:20200506173007j:plain

それでは、結果を見てみます。

f:id:cross_hyou:20200506173309j:plain

barplot関数でグラフにします。

f:id:cross_hyou:20200506173517j:plain

f:id:cross_hyou:20200506173527j:plain

gam関数が一番MSEが小さいです。2番目はlm関数で単純化したほうです。3番目はsvm関数、4番目がlm関数の単純化しないほう、最後がtree関数でした。

cor関数で相関係数も計算してみましょう。

f:id:cross_hyou:20200506174100j:plain

結果を見てみます。

f:id:cross_hyou:20200506174233j:plain

これもbarplot関数で棒グラフにしましょう。

f:id:cross_hyou:20200506174520j:plain

f:id:cross_hyou:20200506174533j:plain

相関係数が1番1に近いのは、svm関数、2番目がgam関数、3番目がlm関数の単純化したほう、4番目がlm関数の単純化しないほう、5番目がtree関数でした。

 

今回は以上です。