crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

都道府県別の図書館数・博物館数・社会体育施設数のデータ分析3 - R言語のlm関数、tree関数、svm関数、gam関数、randomForest関数を使ってみる。

 

www.crosshyou.info

 の続きです。

今回は、R言語のlm関数、tree関数、svm関数、gam関数、randomForest関数を作って、perGDPをperLib, perMus, perGymで説明するモデルを作り、どのモデルが一番正確かを比較したいと思います。

まずは、lm関数、linear model(線形回帰モデル)です。

f:id:cross_hyou:20200428182359j:plain

p-valueが0.3346ですから、全然有意なモデルではないです。

step関数でいらない説明変数を除外します。

f:id:cross_hyou:20200428182515j:plain

p-valueは0.05616と0.05よりも大きいのでこれも有意なモデルではないです。perGymだけが残りました。

次はtree関数でdecision tree regressionモデルです。決定木モデルです。treeパッケージの中にあるtree関数を使います。

f:id:cross_hyou:20200428182751j:plain

f:id:cross_hyou:20200428182801j:plain

tree modelはわかりやすいですね。はじめの枝分かれは、perGymは24.6592より小さければ、perGDPは4.654と判断しています。

 

次は、e1071パッケージの中にあるsvm関数で、support vector regression modelです。

f:id:cross_hyou:20200428183019j:plain

 

次は、mgcvパッケージの中にあるgam関数で、generalized additive modelです。

f:id:cross_hyou:20200428190748j:plain

gam関数ではperGymが有意な変数ですね。

 

そしてrandom forest modelです。randonForestパッケージの中にあるrandomForest関数です。

f:id:cross_hyou:20200428190935j:plain

これでモデル作成は終わりました。

どのモデルがperGDPを上手に予測できているか、MSE(Mean Square Error)を計算します。MSEの計算に使うデータは、2015年度以外のデータを使いましょう。

predict関数で予測値は計算できます。

f:id:cross_hyou:20200428192006j:plain


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

f:id:cross_hyou:20200428192217j:plain

f:id:cross_hyou:20200428192230j:plain

random forest modelが一番MSEが小さいです。2番目がlinear model, 3番目がsuport vector model regressonでした。

今回は以上です。