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

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

都道府県別のサービス産業売上高のデータの分析 - R言語のlm関数で回帰分析

今回は、都道府県別のサービス産業の売上高のデータを分析したいと思います。

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

f:id:cross_hyou:20190629124134j:plain

47地域を選択して、

f:id:cross_hyou:20190629124154j:plain

総人口と県内総生産額と売上高(サービス産業)を選択し、

f:id:cross_hyou:20190629124237j:plain

Excelファイルのデータをダウンロードしました。

このデータをR言語で分析します。

まずは、read.csv関数でデータを読込み、na.omit関数でNA行を削除し、summary関数でデータの統計サマリーを見てみましょう。

f:id:cross_hyou:20190629125006j:plain

Prefの数を見ると、4ですから、4年のデータですね。Yearを見ると、2012年度から2015年度の4年間であることがわかります。

Pop, Prod, Salesの散布図マトリックスを描きましょう。pairs関数を使います。

f:id:cross_hyou:20190629125453j:plain

f:id:cross_hyou:20190629125503j:plain

Prod(県内総生産額)とSales(サービス産業売上高)は相関係数が高そうですね。

cor関数で相関マトリックスをみてみます。

f:id:cross_hyou:20190629125802j:plain

ProdとSalesの相関係数は、0.99です。一番低い相関係数でもPopとSalesで0.88です。

この3つはかなり相関関係が強いということですね。

それででは、サービス産業の売上高 / 県内総生産額 という比率を計算して、どの都道府県が一番サービス産業化しているか見てみましょう。

f:id:cross_hyou:20190629130243j:plain

比率の最小値は、1.207で最大値は5.600です。

都道府県別に最大値を表示してみます。tapply関数です。

f:id:cross_hyou:20190629130645j:plain

なんかよくわからない出力結果になってしまいました。

round関数で小数点以下2桁表示にします。

f:id:cross_hyou:20190629130945j:plain

う~ん、これでもだめですね。。

このtapplyの出力結果を変数にして、データ構造をいろいろ調べてみます。

f:id:cross_hyou:20190629131647j:plain

こうして、tapという変数をつくりました。これを、class関数、mode関数、str関数でデータ構造を調べます。

f:id:cross_hyou:20190629132341j:plain

tapplyで生成されたtapはarrayですね。modeはnumericなので、数値データです。str関数の結果を見ると、dimnamesとして都道府県名が付与されていることがわかりました。tapは配列ですから、次元があるはずです。dim関数で調べましょう。

 

f:id:cross_hyou:20190629132846j:plain

47ですね。どうしましょうか。。?とりあえず、as.data.frame関数でデータフレームにしてみます。

f:id:cross_hyou:20190629134057j:plain

あ、これで見やすくなりますね。列名がtapになっているので、colnames関数でRatioに変換して、大きい順、小さい順に並び替えましょう。

f:id:cross_hyou:20190629134712j:plain

あ~。そっか、tapはデータフレームでも1列しかないからこうなっちゃうですね。rownames(tap)に都道府県名がはいっているはずですから、都道府県名の列を追加してから並び替えましょう。

f:id:cross_hyou:20190629135131j:plain

できました! 東京都が一番、サービス産業の売上高の比率が大きいですね。

一番低いところはどこでしょうか?

f:id:cross_hyou:20190629135451j:plain

奈良県が一番比率が小さいです。

hist関数で分布をみてみます。

f:id:cross_hyou:20190629135656j:plain

f:id:cross_hyou:20190629135709j:plain

一番右にあるのは東京都ですね。東京都を除いてヒストグラムを描いてみます。

f:id:cross_hyou:20190629135931j:plain

f:id:cross_hyou:20190629135943j:plain

この比率と人口の関係を調べてみましょう。

まず、人口の都道府県別の最大値をtapply関数で作ります。

f:id:cross_hyou:20190629140507j:plain

このtpopというデータフレームと、tapというデータフレームをmerge関数で統合します。Prefという列が同じデータですから、これをキーにして統合します。

f:id:cross_hyou:20190629140813j:plain

いいですね。RatioとPopの散布図を描いてみます。

f:id:cross_hyou:20190629141046j:plain

f:id:cross_hyou:20190629141056j:plain

人口が多いほどサービス産業の比率は高まりますね。lm関数で回帰分析をしてみます。

f:id:cross_hyou:20190629141344j:plain

p-valueは2.146e-10ですから統計的に有意なモデルです。R-sauaredは0.5956です。

散布図に回帰直線を重ねてみます。

f:id:cross_hyou:20190629141641j:plain

f:id:cross_hyou:20190629141653j:plain

Popの2乗項を加えて回帰分析してみます。

f:id:cross_hyou:20190629143031j:plain

p-valueは8.693e-16で有意です。調製済みR2は0.7839と上昇しました。anova関数でmodelとmodel2で有意な違いがあるか見てみましょう。

f:id:cross_hyou:20190629143239j:plain

p値は6.518e-08ですからmodelとmodel2は有意な違いがあります。model2のほうがあてはまりがいい、ということですね。

model2で予測した値も散布図に重ねましょう。

f:id:cross_hyou:20190629143923j:plain

f:id:cross_hyou:20190629143933j:plain

今回は以上です。