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

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

都道府県別の図書館数・博物館数・社会体育施設数のデータ分析4 - R言語のglm関数でロジスティクス回帰分析

 

www.crosshyou.info

 の続きです。

今回は、R言語のglm関数でロジスティクス回帰分析をしてみたいと思います。

 こちらの本を参考にしてやってみました。

今回は人口(Popu)が平均以上か平均以下かという2つの値をとる変数をresponse variableにして、perGDP, perLib, perMus, perGymの4つの変数をexplanatory variablesにしました。

はじめにこれらの変数間の散布図マトリックスを見てみます。

pairs関数を使います。

f:id:cross_hyou:20200429130700j:plain

f:id:cross_hyou:20200429130714j:plain

人口は他の変数と関連性がありそうな雰囲気ですね。

このPopuが平均値以上なら1、そうでないなら0という変数を作ります。

f:id:cross_hyou:20200429130902j:plain

どこの都道府県が平均以上か確認しましょう。

f:id:cross_hyou:20200429131009j:plain

北は北海道から南は福岡県まで12の都道府県が人口が平均以上です。

それでは、glm関数で回帰分析モデルを作ります。

f:id:cross_hyou:20200429131159j:plain

perGDPが多いほど、その他の変数は小さいほどLargeは1になるということですね。

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

f:id:cross_hyou:20200429131357j:plain

それでは、glm1を使って予測をしてみます。

使うデータは、2011年度のデータでやってみましょう。

f:id:cross_hyou:20200429131600j:plain

2011年度も同じ12の都道府県が人口が平均値以上です。

glm1で予測します。

f:id:cross_hyou:20200429131717j:plain

予測した結果がどのくらい正確か、caretパッケージのconfusionMatrix関数で見てみます。

f:id:cross_hyou:20200429131849j:plain

予測値が0で実際にも0だったのが33個、予測値が1で実際にも1だったのが9個です。正解率は(33+9)/47=89.36%です。

 

単純化したモデル、glm2で予測してみます。

f:id:cross_hyou:20200429132109j:plain

こちらもconfusionMatrix関数で正解率をみてみます。

f:id:cross_hyou:20200429132240j:plain

予測値が0で実際も0なのが35個、予測値が1で実際も1なのが9個でした。

正解率は、(35+9)/47=93.62%でした。

今回は以上です。