www.crosshyou.info

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

就業構造基本調査の分析2 - R言語のdplyrパッケージでデータ変換する練習

 

www.crosshyou.info

 の続きです。

今回は前回データを読み込んだ就業構造基本調査のデータをdplyrパッケージを使っていろいろデータ変換する練習です。参考にする文献は

 

Rではじめるデータサイエンス

Rではじめるデータサイエンス

 

 です。

まず、tidyverseパッケージを読み込みます。

f:id:cross_hyou:20181126205305j:plain

それと前回作成したデータフレームをtibbleにas_tibble関数で変換しておきます。

f:id:cross_hyou:20181126205546j:plain

これで準備完了です。

「男女」「続柄など」「年齢」はデータ型が<fct>となっているのでファクタのデータ型だとわかります。その他の変数は、<int>なので整数のデータ型です。

dplyrパッケージには主要な5つの関数があります。

filter関数:観測値にフィルタをかけてデータを絞りこみます。

arrange関数:行を並び替えます。

select関数:名前で列(変数)を選びます。

mutate関数:既存の変数を操作して新しい変数を作ります。

summarize関数:group_by関数とあわせてデータの要約量を作ります。

まずは、filter関数を練習してみます。

filter関数を使って、総数が0の行を探してみましょう。

f:id:cross_hyou:20181126210824j:plain

A tibble : 3 x 14 となっていますから、総数が0の行は3行ありました。年齢が15~1~というのですね。15~19歳の死別離別ですね。死別離別は結婚して配偶者が死別もしくは離別したということですから、15~19歳では0で当然ですね。

次はarrange関数で行を並び替えてみましょう。総数の大きい順に並び替えてみます。

f:id:cross_hyou:20181126211359j:plain

「男女」総数、「続柄など」総数、「年齢」総数が一番多いですね。1.11e8ですから111,000,000人です。次が女性トータルで57,400,000人ですね。男性トータルは53,500,000人です。

select関数で列を選択することができます。右側にある変数、「通学している者」と「その他」を選択してみましょう。

f:id:cross_hyou:20181126212211j:plain

「男女」「続柄など」「年齢」すべて総数の値でみると、「通学している者」は648万7900人、「その他」は1768万3100人です。「通学している者」って学生ってことですかね?働きながら学校に通っている人もいるからですかね。

mutate関数で新しい変数を作成できます。有業者 / 総数 で「有業率」という変数を作成してみます。

f:id:cross_hyou:20181126213110j:plain

一番上の行、全体でみると有業率は0.597ですね。15~19歳は0.174と低いですね。

summarize関数で有業率を男女別の平均値を計算してみます。summarize関数はgroup_by関数と合わせて使うと威力を発揮します。

f:id:cross_hyou:20181126215331j:plain

mutate関数で作成された変数はそのままでは保存されないので、data_sml <- mutate(~~~)として新に作成して変数を保存します。

そしてgroup_by関数で「男女」の女、総数、男の3つのグループにわけ、summarize関数で女の平均有業率は0.527、総数の平均有業率は0.568、男の平均有業率は0.625と計算できました。count = n()という変数も作成して何個のデータで平均値を計算しているのかわかるようにしています。この場合には144個のデータです。

同じように、年齢ごとの平均有業率を計算しましょう。

f:id:cross_hyou:20181126221020j:plain

一番平均有業率の高い年齢は、30~34歳の0.873ですね。

「続柄など」の属性別の平均有業率も出しましょう。

f:id:cross_hyou:20181126221411j:plain

世帯主の平均有業率が0.623で一番高いことがわかります。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

 

就業構造基本調査の分析1 - R言語で基本統計量を算出

今回は、就業構造基本調査のデータを分析したいと思います。

政府統計の総合窓口(e-Stat)から

f:id:cross_hyou:20181126183730j:plain

平成29年の「男女、世帯主との続き柄・一般・単身世帯・配偶関係、年齢、就業状態・仕事の主従別人口(15歳以上) - 全国」のデータを使ってR言語での分析の練習をします。

ファイルをダウンロードすると、こんな形態でした。

f:id:cross_hyou:20181126184130j:plain

こういうファイルです。R言語にはこのようなファイルを整理する関数も実装されていますが、私はまだそこまで勉強していないので、エクセル上でデータを整理して下記のようなCSVファイルを作成しました。

f:id:cross_hyou:20181126185725j:plain

このCSVファイルをread.csv関数でR言語に読み込み、summary関数で基本統計量を算出します。

f:id:cross_hyou:20181126190549j:plain

カテゴリ変数は、「男女」「続柄一般単身配関」「年齢」の3種類で、残りは連続変数ですべて人数を表す変数です。

「男女」は"総数", "男", "女"の3種類ですべて同じ144のデータがあります。

「続柄一般単身配関」はsummary関数で表示されているものの他にどんなものがあるでしょうか?table関数で確認しましょう。

f:id:cross_hyou:20181126191642j:plain

まず、「続柄一般単身配関」という変数名は長ったらしいので「続柄など」に変更しました。そしてtable関数でどのような属性があるかをみています。うち単身者、その他の親族世帯員、死者離別、世帯主、世帯主の配偶者、総数、配偶者あり、非親族世帯員、未婚の9種類です。

つぎに「年齢」を同じようにtable関数で処理してみます。

f:id:cross_hyou:20181126192511j:plain

15歳から5歳幅で85歳以上まであることがわかります。それぞれの年代で27データありますが、これは「男女」が3種類、「続柄など」が9種類ですから、3 x 9 で27データですね。「年齢」は16種類ですから全部で 3 x 9 x 16 = 432種類のカテゴリ変数の組合せがあるということです。

summary関数では最小値、第1分位値、中央値、平均値、第3分位値、最大値を表示しますが分散と標準偏差が算出されないので、var関数で分散を、sd関数で標準偏差を計算しましょう。apply関数で複数の変数をいっぺんに計算します。

apply(データ, 2, 関数)で列ごとに、apply(データ, 1, 関数)で行ごとに関数を適用します。data[ , c(-3:-1)]tして1列目、2列目、3列目を除いています。

f:id:cross_hyou:20181126193755j:plain

こうして計算してみても、どれが一番データのばらつきがあるかわかりません。

標準偏差 / 平均値 で計算される変動係数を算出してみましょう。

f:id:cross_hyou:20181126195446j:plain

一番データのバラツキが大きいのは「通学している者」で、一番バラツキの小さいのは「無業者」です。

今回はここまでです。

 次回は

 

www.crosshyou.info

 

です。

読書記録 - 「日本型資本主義 その精神の源」寺西重郎著 中公新書

 

日本型資本主義-その精神の源 (中公新書)
 

 日本の資本主義は欧米で発達したキリスト教を基盤とする資本主義ではなく、鎌倉時代に発展した仏教を基盤とした資本主義である。

欧米型資本主義では、自己と公共世界という関係で、企業がお金を借りる時、株式や債券の発行という形態になるが、日本型資本主義では、自己と身近な他人という関係で、企業が資金を調達する時、身近な銀行からお金を借りる形態になる。

欧米型資本主義では、労働者の人格と労働力は別物なので、簡単に解雇や転職が発生するが、日本型資本主義では、労働者の人格と労働力は一体化しているので、簡単に解雇や転職ができない。

日本型資本主義では、労働を求道的な人格形成の活動とみなす傾向が強い。

このようなことが書かれていました。同じ資本主義でも基盤となる精神構造が違うので日本は欧米を、欧米は日本を相互に理解する必要があると思いました。また、中国などは、日本、欧米とも違い儒教を基盤とした資本主義とのことです。

キリスト教、仏教、儒教という宗教に優劣は無いのだから、欧米型資本主義、日本型資本主義、中国型資本主義に優劣はなく相互に理解し違いを乗り越えていく必要があるということですね。

産業別会社の財務営業比率の分析7 - R言語で2つの変数の関係性を見る(連続変数と連続変数)

 

www.crosshyou.info

 の続きです。

今回は、連続変数と連続変数の関係性を見てみます。具体的には、R言語のggplot関数のgeom_point関数で散布図を作成してみます。

試しに自己資本比率と労働装備率の散布図を作成してみます。

f:id:cross_hyou:20181124130645j:plain

f:id:cross_hyou:20181124130656j:plain

産業別や年代別を考慮していないと上図のような散布図になります。

color = 産業 というコマンドを追加してみます。

f:id:cross_hyou:20181124131103j:plain

f:id:cross_hyou:20181124131113j:plain

業種によって傾向が違うことがわかります。

shape = 産業 としてみましょう。

f:id:cross_hyou:20181124131430j:plain

f:id:cross_hyou:20181124131440j:plain

あ、これは失敗でした。The shape palette can be deal with a maximum 6 descret valueとあります。産業は9種類あるので全産業、電気業、不動産業が散布図に描かれていません。

facet_wrap(~ 産業, nrow = 2) というコマンドを追加してみます。facetって宝石の切り口の面という意味らしいです。

f:id:cross_hyou:20181124132148j:plain

f:id:cross_hyou:20181124132204j:plain

電気業、不動産業、ガス熱水道業は縦長で、その他は横長って感じですね。

geom_point関数ではなくて、geom_smooth関数を使うとどうなるでしょうか?color = 産業 と合わせてやってみましょう。

f:id:cross_hyou:20181124132953j:plain

f:id:cross_hyou:20181124133004j:plain

お、なんかかっこいいですね。geom_point関数も追加して、個々の点も表示しましょう。

f:id:cross_hyou:20181124133322j:plain

f:id:cross_hyou:20181124133643j:plain

これと同じようにcolor = 年代 でやってみましょう。

f:id:cross_hyou:20181124133957j:plain

f:id:cross_hyou:20181124133925j:plain

color = 産業 のグラフと color = 年代 のグラフを見比べると、産業のグラフのほうがまとまっている、というか、自己資本と労働装備率の関係性は年代よりも産業の影響が大きいとわかります。

今回は以上です。

 

産業別会社の財務営業比率の分析6 - R言語で2つの変数の関係性を見る(カテゴリ変数とカテゴリ変数)

 

www.crosshyou.info

 の続きです。

今回は、カテゴリ変数とカテゴリ変数の関係性をみてみましょう。

とはいってもこの産業別会社の財務営業比率のデータを見ますと、

f:id:cross_hyou:20181117115240j:plain

カテゴリ変数は、「産業」だけです。カテゴリ変数はファクタなので、データの種類が<fct>となっています。

「年代」は<int>なので整数ですね。まずはこれをファクタに変換してしまいましょう。

f:id:cross_hyou:20181117115642j:plain

factor関数で整数のデータをファクタ(カテゴリ変数)に変換できます。

<fct>になっていますね。

カテゴリ変数とカテゴリ変数はtable関数でクロス表を作成できます。

f:id:cross_hyou:20181117115957j:plain

。。。まったく面白みのないクロス表ですね。。

何か、他の変数からファクタを作成することを考えましょう。

買掛金回転期間をsummary関数で処理すると、

f:id:cross_hyou:20181117120430j:plain

このように、Median(中央値)がちょうど1.500なので、1.5未満を短回転、1.5以上を長回転と二分するカテゴリ変数を作ります。ifelse関数を使います。

f:id:cross_hyou:20181117120914j:plain

dataはtibble形式のデータセットなので、ifelse関数で短回転と長回転の2つの値をとる変数を作成してもファクタにはならず、文字列<chr>になってしまいます。

そこで、factor関数で処理してファクタ<fct>にしました。

それでは、産業と回転のクロス表を作成してみましょう。

f:id:cross_hyou:20181117121251j:plain

見事に産業ごとの特徴がでましたね。ガス熱水道業、サービス業、運輸業、電気業は短回転、卸売小売業、建設業、製造業、全産業は長回転、不動産業は半分半分です。

年代と回転ではどうでしょうか?

f:id:cross_hyou:20181117121647j:plain

年代によって差があるようなないような。。。chisq.test関数でカイ自乗検定をじてみます。

f:id:cross_hyou:20181117122215j:plain

p-value = 0.4174 > 0.05 なので、年代と回転に関連性があるとはいえません。

ここまでは、クロス表を作成して分析してきましたが、ggplot関数のgeom_count関数で視覚化できます。

f:id:cross_hyou:20181117122644j:plain

f:id:cross_hyou:20181117122700j:plain

グラフの円の大きさが個数を表しています。

dplyパッケージのcount関数で個数を数えることもできます。

f:id:cross_hyou:20181117123009j:plain

1行目は1970年代で短回転は30個、2行目は1970年代で長回転は42個と読めます。

ggplot関数のgeom_tile関数で視覚化できます。

f:id:cross_hyou:20181117123510j:plain

f:id:cross_hyou:20181117123551j:plain

明るいタイルが個数が多く、暗いタイルが個数が少ないことを表しています。

今回は以上です。

 次回は

 

www.crosshyou.info

 です。

産業別会社の財務営業比率の分析5 - R言語で2つの変数の関係性を見る(カテゴリ変数と連続変数)

 

www.crosshyou.info

 の続きです。今回は2つの変数間の関係性を見てみようと思います。

2つの変数というと、パターンは、

カテゴリ変数と連続変数

カテゴリ変数とカテゴリ変数

連続変数と連続変数

の3つのパターンが考えられますが、今回はカテゴリ変数と連続変数の組み合わせを見たいと思います。

産業(カテゴリ変数)と手元流動性(連続変数)でやってみます。

あらかじめ、library(tidyverse)とコマンド入力して、tidyverseパッケージを呼び出しておきます。

ggplot関数のgeom_freqpoly関数を使ってみます。

f:id:cross_hyou:20181116123319j:plain

f:id:cross_hyou:20181116123343j:plain

ある産業が散らばりが多いですね。

geom_boxplot関数を使ってみます。

f:id:cross_hyou:20181116123730j:plain

f:id:cross_hyou:20181116123744j:plain

不動産業が他の産業と比較して手元流動性の値が大きいとわかりますね。

reorder関数で産業を並び替えてグラフにすることができます。

f:id:cross_hyou:20181116124313j:plain

f:id:cross_hyou:20181116124328j:plain

手元流動性の中央値の小さい産業から順に左から表示しています。

coord_flip関数を利用して、グラフを90度回転させることができます。

f:id:cross_hyou:20181116124838j:plain

f:id:cross_hyou:20181116124857j:plain

今回は以上です。

 次回は

 

www.crosshyou.info

 です。

 

産業別会社の財務営業比率の分析4 - R言語のgroup_by関数とsummarize関数でグループごとの平均値などを算出する

 

www.crosshyou.info

 の続きです。

今回はgroup_by関数とsummarize関数で産業別、年代別の平均値などを算出したいと思います。

データセットはこういうものでした。

f:id:cross_hyou:20181115093625j:plain

早速、group_by関数とsummarize関数を使って、借入金利子率の産業別の平均値を算出してみます。

f:id:cross_hyou:20181115094118j:plain

group_by関数で産業別にデータをまとめて、select関数で産業と借入金利子率だけを選択し、summarize関数で借入金利子率の平均を計算し、arrange関数で値の小さい順に表示しました。不動産業が一番、利子率が低く、運輸業が高いとわかります。

年代別ではどうでしょうか?

f:id:cross_hyou:20181115095136j:plain

利子率は年代が新しくなるほど低くなっています。このことを全産業だけの利子率のグラフを作成して確認してみましょう。

f:id:cross_hyou:20181115100618j:plain

f:id:cross_hyou:20181115100633j:plain

filter関数でdata3という全産業だけのデータセットを作り、ggplot関数のgeom_line関数でグラフにしました。ご覧のとおり、借入金利子率は長期的に低下傾向であることがわかります。

いちおう、全ての産業で利子率が低下傾向なのかをグラフにして確認しておきましょう。

f:id:cross_hyou:20181115101656j:plain

f:id:cross_hyou:20181115101713j:plain

ggplot関数のgeom_line関数で折れ線グラフを描き、facet_wrap関数で産業別に表示しています。すべての産業で利子率の低下傾向が確認できました。

今回は以上です。

 次回は

 

www.crosshyou.info

 です。