www.crosshyou.info

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

都道府県別の公民館数データの分析 - 長野県は公民館が多い。

今日は、都道府県別の公民館数データを分析しようと思います。

e-Stat, 政府統計の総合窓口からデータを取得しました。

f:id:cross_hyou:20190711193624j:plain

 

こういうExcelファイルをread.csv関数でR言語に読込ませて分析します。

f:id:cross_hyou:20190711193713j:plain

今回は、read.csvファイルで読み込むときに、stringsAsFactors = FALSEとして、文字列は文字列のままで読み込むようにしました。

そして、na.omit関数でNAの行を削除し、str関数でデータ構造を確認しました。1196の観測があります。

head関数ではじめの6行を表示しています。どうやら、2015年が最新年のようですね。

f:id:cross_hyou:20190711194222j:plain

substr関数でdf$Yearのはじめの4文字(つまり、2105など)を取得し、それをas.numeric関数で数値型にしました。

f:id:cross_hyou:20190711194532j:plain

as.factor関数でファクタにして、summary関数で各変数の統計値や度数を表示しています。愛媛県など各都道府県が27個ありますから、27年分のデータがあります。

f:id:cross_hyou:20190711194958j:plain

f:id:cross_hyou:20190711195014j:plain

plot関数で、横軸を人口、縦軸を公民館数の散布図を描きました。pch = 16でプロットする形を黒丸にしています。よくわからない散布図ですね。

f:id:cross_hyou:20190711195409j:plain

f:id:cross_hyou:20190711195420j:plain

plot関数で横軸を年度、縦軸を公民館数の箱ひげ図を描きました。1976年や1977年のデータがおかしいですね。

f:id:cross_hyou:20190711200031j:plain

あらら、1976年と1977年は北海道だけですね。1976年は[df$Year == "1976年度", ]を使う方法、1977年度はsubset関数を使う方法で、特定の行だけ表示しています。

f:id:cross_hyou:20190711200626j:plain

[df$Year != "1976年度", ]を使う方法で1976年度と1977年度のデータを削除しました。そして、table関数で各年度のデータの個数を表示しています。1989年度や1994年度など多くの年で47都道府県がそろっていないですね。。

f:id:cross_hyou:20190711201722j:plain

1975年度と2015年度だけにしてしまいました。

f:id:cross_hyou:20190711201901j:plain

tapply関数で1975年度の公民館数合計と2015年度の公民館数合計をだしました。

1975年度は1万5752だったのが、2015年度は1万4171と40年間で1581の公民館がなくなりました。

f:id:cross_hyou:20190711202307j:plain

f:id:cross_hyou:20190711202322j:plain

plot関数で箱ひげ図を並べてみました。ひとつ外れ値があってその影響が大きい気がします。

f:id:cross_hyou:20190711203328j:plain

人口1万人あたりの公民館数を算出してみました。平均は2ですが、多い都道府県では9もありますし、少ない都道府県では0.039しかないです。

f:id:cross_hyou:20190711203705j:plain

東京、沖縄、神奈川、大阪が少ないですね。order関数で少ない順に並び替え、head関数で6行だけ表示しています。

f:id:cross_hyou:20190711204012j:plain

rev関数も追加すると多い順になります。長野、山梨、山形、秋田が多いです。

f:id:cross_hyou:20190711204459j:plain

f:id:cross_hyou:20190711204518j:plain

plot関数で横軸が人口、縦軸が1万人あたりの公民館数の散布図です。pch = 21, bg = 1 + as.numeric(df$Year)で1975年が赤、2015年が緑にしています。

f:id:cross_hyou:20190711204913j:plain

f:id:cross_hyou:20190711204929j:plain

log関数で人口を対数にして散布図を描いてみました。ちょっとわかりやすくなりました。

長野県のプロットが他とは大きくはなれていますね。

全般に人口が多い地域のほうが1万人あたりの公民館の数は少ないですね。

2015年度で長野県を削除したデータで回帰分析してみます。

f:id:cross_hyou:20190711205903j:plain

f:id:cross_hyou:20190711205921j:plain

回帰分析をしましょう。lm関数でモデルを作成し、summary関数でモデルを確認します。

f:id:cross_hyou:20190711210407j:plain

p-valueが1.156e-08なので0.05よりも低く有意です。

I(log(population))の係数は-1.1434でp-valueは1.16e-08なので有意です。人口が多いほど1万人あたりの公民館数は少ないです。

最後に散布図を回帰直線を重ねて描きましょう。

f:id:cross_hyou:20190711210911j:plain

f:id:cross_hyou:20190711210923j:plain