crosshyou

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

都道府県別の第1次産業・第2次産業・第3次産業事業所数のデータ分析6 - R言語のtree関数、gam関数、svm関数

 

www.crosshyou.info

 の続きです。

今回はR言語のtree関数、gam関数、svm関数でLS(人口が平均値よりも多いか少ないか)を予測してみます。

まず、tree関数を使うためにtreeパッケージを読み込みます。tree関数はregression tree, classification treeモデルの関数です。

f:id:cross_hyou:20200503131845j:plain

tree関数ではカテゴリカル変数でも予測できますから、LSのカテゴリカル変数を作成します。

f:id:cross_hyou:20200503133253j:plain

これでtree関数を作ります。

f:id:cross_hyou:20200503133357j:plain

plot関数とtext関数でtree_1を描いてみます。

f:id:cross_hyou:20200503133521j:plain

f:id:cross_hyou:20200503133532j:plain

per1stが2.2518未満ならLargeということですね。

predict関数で予測します。type = "class"とすると、Large, Smallを返します。

f:id:cross_hyou:20200503133941j:plain


table関数で結果を見てみます。

f:id:cross_hyou:20200503134048j:plain

5個間違いました。正解率は89.4%です。前回のlm関数での予測よりも良いです。

 

次は、generalized additive modelで予測してみます。mgcvパッケージのgam関数を使います。

f:id:cross_hyou:20200503134240j:plain

f:id:cross_hyou:20200503134331j:plain

plot関数でgam_1を見てみます。

f:id:cross_hyou:20200503134432j:plain

f:id:cross_hyou:20200503134444j:plain

perGDPとper1stはぐにゃぐにゃしています。

このモデルで予測します。

f:id:cross_hyou:20200503134604j:plain

ifelse関数で0.5以上なら1、そうでないなら0にしています。

table関数で結果を見ます。

f:id:cross_hyou:20200503134706j:plain

gamも5個間違いました。正解率は、89.4%です。

 

最後は、e1071パッケージのsvm関数でsupport vector machineで予測してみます。

まず、library関数でe1071パッケージを読み込みます。

f:id:cross_hyou:20200503134901j:plain

svm関数で予測モデルを作成します。

f:id:cross_hyou:20200503134946j:plain

predict関数で予測します。

f:id:cross_hyou:20200503135034j:plain

table関数で結果を見てみます。

f:id:cross_hyou:20200503135133j:plain

svmも5個間違いなので、正解率は89.4%です。

 

偶然にもtree関数、gam関数、svm関数の3つとも正解率は89.4%でした。

今回は以上です。