www.crosshyou.info

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

World Bank DataBankのG7とBRICのGDPなどの分析2 - R言語で国別、地域別、年代別の基本統計量を算出する

 

www.crosshyou.info

 の続きです。今回はR言語で国別、地域別、年代別の平均値などを計算してみましょう。R言語のby関数を実行すると簡単です。

f:id:cross_hyou:20181201110822j:plain

 

このようにby(データフレーム, 分類する列, 実行したい関数)という構文で処理します。

普通にsummary関数を使うと、全ての変数(列)で計算されて、一度に多くの出力がでてしまい、画像を貼り付けできないので、ひとつの変数ずつやってみましょう。

まずは、GDPG(GDP成長率)です。

f:id:cross_hyou:20181201120020j:plain

 

最小成長率が一番小さい国は、アメリカ(USA)で-2.776%です。

最大成長率が一番大きい国は、中国(CHN)で19.300%です。

平均値が一番大きい国は、中国(CHN)で9.030%です。

平均値が一番小さい国は、ロシア(RUS)で0.7214%です。

 

次はインフレ率(IFR)を調べてみましょう。

f:id:cross_hyou:20181201120658j:plain

 

最小インフレ率が一番小さい国は、インド(IND)で-7.634%です。

最大インフレ率が一番大きい国は、ブラジル(BRA)で2947.733%です。

平均インフレ率が一番大きい国は、ブラジル(BRA)で317.377%です。

平均インフレ率が一番小さい国は、ドイツ(DEU)で2.6544%です。

 

失業率(UER)はどうでしょうか?

f:id:cross_hyou:20181201121242j:plain

最小失業率が一番小さい国は、日本(JPN)で2.090%でした。

最大失業率が一番大きい国は、ロシア(RUS)で13.530%でした。

平均失業率が一番大きい国は、フランス(FRA)で9.865%でした。

平均失業率が一番小さい国は、インド(IND)で3.891%でした。

 

経常収支の対GDP比%(CAB)をみてみます。

f:id:cross_hyou:20181201122713j:plain

 

経常収支の対GDP比%の最小値が一番小さい国は、イギリス(GBR)で-5.8424%でした。

経常収支の対GDP比%の最大値が一番大きい国は、日本(JPN)で0.7495%でした。

経常収支の対GDP比%の平均値が一番大きい国は、ロシア(RUS)で5.5714%でした。

経常収支の対GDP比%の平均値が一番小さい国は、アメリカ(USA)で-2.0160%でした。

 

預金金利(DIR)を調べましょう。

f:id:cross_hyou:20181201123628j:plain

 

インド(IND)とアメリカ(USA)は預金金利のデータは無かったのですね。

預金金利の最小値が一番小さい国は、日本(JPN)で0.03558%です。

預金金利の最大値が一番大きい国は、ブラジル(BRA)で9394.293%です。

預金金利の平均値が一番大きい国は、ブラジル(BRA)818.860%です。

預金金利の平均値が一番小さい国は、日本(JPN)で2.21386%です。

 

総人口に対する労働年齢の人口比%(ADR)を調べます。

f:id:cross_hyou:20181201124638j:plain

 

最小労働年齢比率が一番小さい国は、中国(CHN)で35.59%です。

最大労働年齢比率が一番大きい国は、ブラジル(BRA)で86.14%です。

平均労働年齢比率が一番大きい国は、インド(IND)で67.97%です。

平均労働年齢比率が一番小さい国は、ロシア(RUS)で46.20%です。

 

地域別(G7/BRIC)の要約統計量を算出しましょう。これはいっぺんに算出します。

f:id:cross_hyou:20181201125319j:plain

 

平均値だけに注目してBRICとG7を比較すると、

GDP成長率(GDPG)はBRICのほうが高い。

インフレ率(IFR)はBRICのほうが高い。

失業率(UER)はG7のほうが高い。

経常収支比率(CAB)はBRICのほうが高い。

預金金利(DIR)はBRICのほうが高い。

労働者年齢比率(ADR)はBRICのほうが高い。

となりました。

 

年代別でもやってみましょう。summary関数ではなくて、colMeans関数を使って平均値だけを計算します。

f:id:cross_hyou:20181201130914j:plain

 

GDP成長率は60年代が一番大きく、90年代が一番小さいです。

インフレ率は90年代が一番大きく、2010年代が一番小さいです。

失業率は60年代、70年代、80年代はなくて、90年代が一番大きく、2010年代が一番小さいです。

経常収支比率は2000年代が一番大きく、60年代が一番小さいです。

預金金利は90年代が一番大きく、2010年代が一番小さいです。

労働年齢人口比率は60年代が一番大きく、2000年代が一番小さいです。

今回は以上です。by関数、summary関数、colMeans関数を使いました。

 次回は

 

www.crosshyou.info

 

です。

読書記録 - 「無限のなかの数学」 志賀浩二著 岩波新書

 

無限のなかの数学 (岩波新書)

無限のなかの数学 (岩波新書)

 

 無限といっても大小があることを知った。

例えば、自然数の無限集合と偶数の無限集合は同じ大きさだが、有理数の無限集合と無理数の無限集合では、無理数の無限集合のほうが大きいなど。

ユダヤ人の数学者がいっぱいいて数学が発展してきた。

World Bank DataBankのG7とBRICのGDPなどの分析1 - R言語で基本統計量を算出する

今回はWorld BankのDataBankからデータをダウンロードしてG7とBRICのGDP等のデータを分析してみましょう。

databank.worldbank.orgこれでから、いろいろやってみて以下のようなエクセルファイルをダウンロードしました。

f:id:cross_hyou:20181129185742j:plain

これを加工してR言語に読込みやすいように、このようなCSVファイルにしました。

f:id:cross_hyou:20181129185905j:plain

 

A列は地域を表しています。G7かBRICです。B列は国です。JPNは日本などです。Yearは西暦、Decadeは60年代とか70年代です。

E列のGDPGからJ列のADRまでが変数です。

f:id:cross_hyou:20181129190145j:plain

 

このようになっています。GDPGがGDP成長率、IFRがインフレ率、UERが失業率、CABが経常収支の対GDP%、DIRが預金金利ADRが人口に対する労働年齢の人の率です。

read.csv関数でこのデータをR言語に読込み、summary関数で基本統計量を出してみます。

f:id:cross_hyou:20181129190649j:plain

となります。Region(地域)はBRICとG7です。table関数でCountryを全部表示しましょう。

f:id:cross_hyou:20181129190925j:plain

 

BRA(ブラジル), CAN(カナダ), CHN(中国), DEU(ドイツ), FRA(フランス), GBR(イギリス), IND(インド), JPN(日本), RUS(ロシア), USA(アメリカ)です。

Yearを見ると最小値が1968で最大値が2017なのでこのデータセットは1968年から2017年のデータだとわかります。

GDPG、GDP成長率を見ると、最小値は-14.531%、最大値は19.300%、平均値は3.454%、中央値は3.141%だとわかります。

IFR、インフレ率を見ると、最小値は-7.634%、最大値は2947.733%、平均値は31.497%、中央値は3.839%だとわかります。インフレ率が3000%近くになった国があるのですね。1年で約30倍という物価上昇です。すごいですね。

UER、失業率は最小値は2.090%、最大値は13.53%、平均値は6.916%、中央値は6.720%です。

CAB、経常収支の対GDP%は、最小値は-5.84238%、最大値は17.47435%、平均値は-0.05427%、中央値は-0.45448%です。

DIR、預金金利は最小値は0.036%、最大値は9394.293%、平均値は102.615%、中央値は4.500%です。預金金利の最大値、すごいですね。

ADR、全人口に対する労働年齢人口の割合は最小値は35.59%、最大値は86.14%、平均値は53.95%、中央値は52.01%です。

平均値と中央値をみくらべてIFR(インフレ率)とDIR(預金金利)が大きく違っていて大きな外れ値があることが推測できます。

summary関数は標準偏差を計算しませんから、標準偏差も計算しましょう。

apply関数とsd関数を組み合わせます。

f:id:cross_hyou:20181129192928j:plain

 

変動係数(標準偏差 / 平均値)も計算しましょう。

f:id:cross_hyou:20181129193142j:plain

 

データのバラツキが一番小さいのはADR、労働年齢比率だとわかります。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

就業構造基本調査の分析6 - R言語のlm関数で線形回帰分析を実行する

 

www.crosshyou.info

 に引き続き、就業構造基本調査のデータ分析をしていきます。

前回までで「仕事者率」「家事者率」「通学者率」という変数を計算し、男性のほうが女性よりも「仕事者率」が高いことがわかりました。

今回は、「仕事者率」を被説明変数にして、「男女」「続柄など」「年齢」の3つを説明変数にするモデルを作成してみたいと思います。できるかな?

いまいちど、data2の確認をします。

f:id:cross_hyou:20181128145800j:plain

「男女」については、「性別」というダミー変数(男=1, 女=0)を設定します。

「続柄など」についてはそれぞれの属性のダミー変数を設定します。例えば、単身(うち単身者=1, その他は0)などです。

「年齢」についても同様にダミー変数を設定します。

まずは「性別」というダミー変数をifelse関数を使って作成します。

f:id:cross_hyou:20181128150447j:plain

このようにできました。まずはこの「性別」だけで仕事者率を表すモデルを作成してみましょう。

モデル式は、仕事者率 = a + b x 性別 + 誤差項

となるのかな?ちょっと自信ないですが。lm関数でモデル式を推測できます。

f:id:cross_hyou:20181128151427j:plain

うまくできました。推測されたモデル式は、仕事者率 = 0.4177 + 0.1635 x 性別 + 誤差項

ですね。0.4177 が女性の仕事者率の平均で、それに0.1635上乗せすると男性の仕事者率の平均になります。

anova関数でANOVA表を表示しています。

「続柄など」のダミー変数を作りましょう。全部の属性についてダミー変数を作るのは面倒なので、世帯主なら1、そうでないなら0というダミー変数を作りましょう。

f:id:cross_hyou:20181128152301j:plain

このようにifelse関数で作成しました。それではこの「世帯主」というダミー変数も加えたモデル式を推測してみましょう。

仕事者率 = a + b1 x 性別 + b2 x 世帯主 + 誤差項

という式です。lm関数で実行します。

f:id:cross_hyou:20181128152917j:plain

推測されたモデル式は、

仕事者率 = 0.41131 + 0.16346 x 性別 + 0.05067 x 世帯主 + 誤差項

です。世帯主だと仕事者率が0.05067だけアップします。

「年齢」もダミー変数を作りましょう。普通に働く年齢の20歳から64歳までを「働年代」としてみましょう。

f:id:cross_hyou:20181128154432j:plain

ifelse関数で複数条件をorでつなぐときは、| を使います。

それではこの「働年代」も加えたモデル式を推測してみましょう。

仕事者率 = a + b1 x 性別 + b2 x 世帯主 + b3 x 働年代 + 誤差項

という式です。lm関数です。

f:id:cross_hyou:20181128155333j:plain

推測されたモデル式は、

仕事者率 = 0.05934 + 0.16346 x 性別 + 0.05402 x 世帯主 + 0.581103 x 働年代 + 誤差項

です。

働く年代かどうかが一番影響していることがわかりました。

それぞれのモデルをsummary関数で処理して決定係数やF統計量をみてみましょう。

f:id:cross_hyou:20181128160022j:plain

一番下の行、F-statisticのp-value が0.0001272 < 0.05なのでこのモデルは有効です。調整決定係数(Adjusted R-squared)は0.05646でした。

f:id:cross_hyou:20181128160426j:plain

p-value = 0.0004779 < 0.05 なので、このモデルは有効です。調整済み決定係数は0.05503でした。

f:id:cross_hyou:20181128160930j:plain

p-value < 2.2e-16 < 0.05ですから、このモデルも有効です。調整済み決定係数が0.7903と3つのモデルの中では一番高いです。

今回は以上です。

 

 

就業構造基本調査の分析5 - R言語で男女の仕事者率の平均値・分布の位置に差があるかを検定する

 

www.crosshyou.info

 の続きです。

前回の分析で、仕事者比率が男性のほうが女性よりも高いことがわかりました。

これを統計学的に検定してみましょう。

下記のように、男性の平均仕事者率は0.581で女性は0.418です。

f:id:cross_hyou:20181128075311j:plain

男性、女性の仕事者率の分布をヒストグラムで見てみましょう。ggplot関数のgeom_histogram関数を使ってみます。

f:id:cross_hyou:20181128075831j:plain

f:id:cross_hyou:20181128075843j:plain

分布の形状が山型ではなく、いくつもの小さい山が集合している感じですね。こういう場合に平均値を比較してもいいのかな?よくわからないですがやってみます。二つの平均値に差があるかどうかはt検定で、R言語ではt.test関数ですね。

まず、男性の仕事者率のベクトルを作成しましょう。

f:id:cross_hyou:20181128080756j:plain

はじめにMaleという男性だけのデータセット(tibble形式)を作成して、それをもとにselect関数でMale_Workという仕事者率だけのtibbleを作成し、それをas.matrix関数でマトリックスに変換し、作成されたマトリックスをas.vector関数でベクトルに変換しました。ひとつNaNのデータがありますね。これを削除してしまいましょう。is.na関数を使います。

f:id:cross_hyou:20181128081729j:plain

同じようにFemale_Workという名前で女性の仕事者率のベクトルを作成しましょう。

f:id:cross_hyou:20181128082021j:plain

NaNがありますので同じようにis.na関数を使って削除します。

f:id:cross_hyou:20181128082223j:plain

これで用意が整いました。t.test関数を使います。

f:id:cross_hyou:20181128082507j:plain

p-value = 0.0001276 < 0.05 なので男性の仕事者率の平均値と女性の仕事者率の平均値には差があると言えます。

分布の位置に差があるかを検定しましょう。Mann-Whitney検定を用います。wilcox.test関数です。

f:id:cross_hyou:20181128083455j:plain

p-value = 3.522e-06 < 0.05 ですから、男性の仕事者率の分布位置と女性の仕事者率の分布位置に違いがあるといえます。

summary関数で両者の基本統計量、var関数で分散、sd関数で標準偏差を算出しておきましょう。

f:id:cross_hyou:20181128083936j:plain

f:id:cross_hyou:20181128084056j:plain

f:id:cross_hyou:20181128084247j:plain

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

 

 

就業構造基本調査の分析4 - R言語で仕事者率、家事者率、通学者率を計算する

 

www.crosshyou.info

 の続きです。data_exの変数を改めてみてみます。

f:id:cross_hyou:20181127230142j:plain

変数で、「仕事が主な者」「家事が主な者」「通学が主な者」と~~が主な者という変数があります。これと「総数」を組み合わせて、、仕事が主な者の割合、家事が主な者の割合、通学が主な者の割合を計算してみましょう。

f:id:cross_hyou:20181127231230j:plain

data2という新しいデータを格納する箱を作り、select関数でカテゴリ変数と計算に必要な変数を選択し、mutate関数で新しい変数を作成します。再びselect関数でカテゴリ変数と作成した~~率という変数だけに絞り込むみました。

男女別の平均値を計算してみましょう。group_by関数とsummarise関数ですね。

f:id:cross_hyou:20181127232842j:plain

平均仕事者率と平均通学者率は男性のほうが高く、平均家事者率は女性が高いですね。

続柄別の平均値はどうなるでしょうか?

f:id:cross_hyou:20181127232859j:plain

平均仕事者率がいちばん高いのは世帯主、平均家事者率がいちばん高いのは世帯主の配偶者、平均通学者率がいちばん高いのは未婚です。

年齢別の平均値を出してみましょう。

f:id:cross_hyou:20181127233500j:plain

今回は * 100 を加えてパーセント表示にしてみました。

平均仕事者率が一番高い年齢は30~34歳です。

平均家事者率が一番高い年齢は65~69歳です。

平均通学者率が一番高い年齢は15~19歳です。

今回は以上です。

 

就業構造基本調査の分析3 - R言語のggplot2パッケージでヒストグラム、箱ひげ図を作図する

 

www.crosshyou.info

 の続きです。

今回はR言語のggolot2パッケージの関数を使ってヒストグラムや箱ひげ図を作図してみようと思います。

まず、「男女」「年齢」「続柄など」の3つのカテゴリ変数に"総数"という値があるので、これを削除したデータセット(tibble)を作成しましょう。

f:id:cross_hyou:20181127154322j:plain

filter関数を使って、"総数"以外を選択しました。table関数で"総数"が0になっていることが確認できます。

まずは、data_exの確認をします。

f:id:cross_hyou:20181127154849j:plain

このようなデータですね。「総数」のヒストグラムを作図してみましょう。ggplot関数のgeom_histgram関数です。

f:id:cross_hyou:20181127155729j:plain

f:id:cross_hyou:20181127155743j:plain

男女で色分けしたヒストグラムを作成してみましょう。color = 男女 というのを加えてみます。

f:id:cross_hyou:20181127160318j:plain

f:id:cross_hyou:20181127160335j:plain

すこしわかりにくいですね。fill = 男女 を試してみましょう。

f:id:cross_hyou:20181127160639j:plain

f:id:cross_hyou:20181127160834j:plain

こちらのほうがわかりやすいですね。でもヒストグラムが重なっているので、どうしても見にくいですね。geom_freqpoly関数を使ってみましょう。

f:id:cross_hyou:20181127161348j:plain

f:id:cross_hyou:20181127161400j:plain

こちらのほうがわかりやすいですね。

さらに、縦軸を個数ではなく、密度で表示してみましょう。y = .. density.. を追加します。

f:id:cross_hyou:20181127161943j:plain

f:id:cross_hyou:20181127162112j:plain

あんまり代わり映えしなかったですね。

geom_boxplot関数を使って箱ひげ図を作図してみます。

f:id:cross_hyou:20181127162527j:plain

f:id:cross_hyou:20181127162537j:plain

x = 男女 として男女別の箱ひげ図を作成しましょう。

f:id:cross_hyou:20181127163105j:plain

f:id:cross_hyou:20181127163124j:plain

女性のほうが中央値が高い位置にあり、男性のほうが外れ値が多いことがわかります。

x = 続柄など としてみましょう。

f:id:cross_hyou:20181127163446j:plain

f:id:cross_hyou:20181127163507j:plain

続柄によって分布に違いがありますね。x軸の表示が重なって読めなくなっているので、coord_flip()を追加します。

f:id:cross_hyou:20181127164116j:plain

f:id:cross_hyou:20181127164202j:plain

これで、どの箱ひげ図がどの属性なのかわかります。さらに中央値を基準にして並び替えて表示しましょう。

f:id:cross_hyou:20181127165154j:plain

f:id:cross_hyou:20181127165318j:plain

これでかなりわかりやすくなりました。

x = 年齢 でもやってみましょう。

f:id:cross_hyou:20181127165719j:plain

f:id:cross_hyou:20181127165744j:plain

きれいにできました。

今回は以上です。

次回は

 

www.crosshyou.info

 

です。