www.crosshyou.info

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

参考文献

このブログの参考文献です。

統計検定やR言語に関する文献です。順不同です。

 

クイック・データアナリシス―10秒でできる実践データ解析法

クイック・データアナリシス―10秒でできる実践データ解析法

 

 

 

Rクックブック

Rクックブック

 

 

 

カテゴリカルデータ解析 (Rで学ぶデータサイエンス 1)

カテゴリカルデータ解析 (Rで学ぶデータサイエンス 1)

 

 

 

Rによるノンパラメトリック検定

Rによるノンパラメトリック検定

 

 

 

現場ですぐに使える! R言語プログラミング逆引き大全 350の極意

現場ですぐに使える! R言語プログラミング逆引き大全 350の極意

 

 

 

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

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

  • 作者: Hadley Wickham,Garrett Grolemund,大橋真也,黒川利明
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/10/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (2件) を見る
 

 

 

An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics)

An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics)

 

 

 

Statistics: An Introduction Using R (English Edition)

Statistics: An Introduction Using R (English Edition)

 

 

 

Regression Analysis with R: Design and develop statistical nodes to identify unique relationships within data at scale

Regression Analysis with R: Design and develop statistical nodes to identify unique relationships within data at scale

  • 作者:Giuseppe Ciaburro
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2018/01/31
  • メディア: ペーパーバック
 

 

 

平均・分散から始める一般化線形モデル入門

平均・分散から始める一般化線形モデル入門

  • 作者:馬場 真哉
  • 発売日: 2015/07/14
  • メディア: 単行本
 

 

 

 

 

 

 

Forecasting: principles and practice

Forecasting: principles and practice

 

 

 

Introductory Econometrics: A Modern Approach

Introductory Econometrics: A Modern Approach

 

 

 

Using R for Introductory Econometrics

Using R for Introductory Econometrics

  • 作者:Heiss, Florian
  • 発売日: 2020/05/24
  • メディア: ペーパーバック
 

 

 

 

 

毎月勤労統計調査の分析6 - 給与の多い業種はどこか。給与の増えた業種はどこか。(order関数)

今回は、毎月勤労統計調査の2018年5月と2010年5月のデータで給与総額の業種別のランキングと、2010年と2018年の比較で給与総額増加・減少のランキングを見てみます。

まずは、csvファイルに保存してあるデータをread.csv関数で読込みましょう。

f:id:cross_hyou:20180730114052j:plain

head関数で始めの6行のデータを表示して、summary関数で各データのサマリーを表示しています。

給与総額、給与と残業、所定内給与、残業代、特別支給の各データの多い業種を見てみましょう。

データの並びかえはorder関数です。

給与総額降順 <- maikin[order(maikin$給与総額, decreasing = TRUE), ]と入力して給与総額の多い順に並び替え、1列目(業種)、3列目(年)、13行目(給与総額)だけを表示するために、head(給与総額[ , c(1,3,13)])と入力しましょう。

f:id:cross_hyou:20180730115030j:plain

金融保険、電気ガス、情報通信、学術研究が給与総額では高いですね。

でも、これでは、2018年と2010年のデータが混在してしまっているので、2018年のデータだけにしましょう。

head(給与総額降順[給与総額降順$年 == 2018, c(1, 3, 13)])としましょう。

f:id:cross_hyou:20180730115508j:plain

2018年は、金融保険、電気ガス、情報通信、学術研究、建設業、製造業の順番で給与総額が多いです。

2010年はどうでしょうか?

f:id:cross_hyou:20180730115755j:plain

2010年は、電気ガス、金融保険、情報通信、学術研究、鉱業採石業、複合サービスの順番でした。

次に、給与総額の低い業種を見てみましょう。

f:id:cross_hyou:20180730120323j:plain

2018年は、宿泊飲食、生活関連、その他サービス、卸売小売、医療福祉、運輸郵便の順番で給与総額が少ないです。2010年はどうでしょうか?

f:id:cross_hyou:20180730120601j:plain

2010年は、宿泊飲食、生活関連、卸売小売、その他サービス、医療福祉、運輸郵便の順番でした。卸売小売とその他サービスの順番が入れ替わっただけですね。

こんどは、2010年と比較して2018年がどれだけ増加・減少したかを調べましょう。

まずは、2018年だけのデータフレーム、2010年だけのデータフレームをsubset関数で作ります。

f:id:cross_hyou:20180730121052j:plain

これが2018年です。

f:id:cross_hyou:20180730121117j:plain

これが2010年です。

そして、2018年の給与総額 - 2010年の給与総額を計算します。

f:id:cross_hyou:20180730121405j:plain

このままでは、どの値がどの業種かわからないので、業種を加えてデータフレームを作ります。

f:id:cross_hyou:20180730121651j:plain

こうなりました。あとは、このデータフレームを給与総額で並び替えれば完了です。

f:id:cross_hyou:20180730122004j:plain

金融保険は、9万円以上も増えています。電気ガス、鉱業採石業、複合サービス、その他サービス、教育学習支援、生活関連は2018年のほうが2010年よりも少ないです。

 

 

毎月勤労統計調査の分析5 - 2010年と比較して2018年の現金給与は良くなったといえるのか?

今回は、毎月勤労統計調査のデータ、2018年5月と2010年5月を比較して、給与と残業、所定内給与、残業代、特別支給のそれぞれが違いがあると言えるほど差があるかを調べます。

前回の分析では、給与総額については、平均値、中央値ともに2018年のほうが増えていましたが、統計的に有意といえるほどの大きな差ではありませんでした。

まずは、read.csv関数でデータを読込み、head関数、summary関数でデータの様子を見てみましょう。

f:id:cross_hyou:20180728133939j:plain

このデータフレームは2018年と2010年がひとつになっていますので、subset関数で2018年だけのデータフレーム、2010年だけのデータフレームを作成します。

f:id:cross_hyou:20180728134155j:plain

f:id:cross_hyou:20180728134208j:plain

これで準備が整いました。

まずは、給与総額から調べましょう。平均値と中央値を確認します。

tapply関数を使いました。

f:id:cross_hyou:20180728134701j:plain

給与と残業の平均値は、2010年は29万1661円、2018年は29万2810円です。2018年のほうが1149円多いです。

中央値は、2010年は29万5221円、2018年は29万7195円です。2018年のほうが1974.5円多いです。

この違いは統計定期に有意な差なのでしょうか?

2つの平均値の検定は、t検定を使います。t.test関数ですね。

f:id:cross_hyou:20180728135244j:plain

p-value = 0.6638 > 0.05 なので、2つの平均値に違いがあるとは言えません。

次は、中央値に違いがあるかです。ウィルコクソン=マン・ホイットニー検定をします。wilcox.test関数です。

f:id:cross_hyou:20180728135641j:plain

p-value = 0.3225 > 0.05 なので、2つの中央値に違いがあるとは言えません。

次は、符号検定(サイン検定)をします。まずが、2018年の給与と残業から2010年の給与と残業を引いて、それぞれの業種ごとの差額を計算してみます。

f:id:cross_hyou:20180728140005j:plain

2018年のほうが増加している業種が11業種、減少している業種が5業種です。

prop.test関数で検定します。

f:id:cross_hyou:20180728140333j:plain

p-value = 0.2113 > 0.05 ですから、増加11、減少5という比率は、増加8、減少8という比率と有意な違いとは言えません。

給与総額と同じく、給与と残業についても2018年は2010年と比べて差がある、とは言えません。

続いて、所定内給与を調べてみましょう。まずは、それぞれの年ごとの平均値と中央値を確認します。tapply関数です。

f:id:cross_hyou:20180728141132j:plain

2010年の平均値は、27万0945円です。2018年の平均値は27万0457円です。なんと、2018年のほうが、488円低いです。

中央値は、2010年が28万0010円、2018年が27万5059円です。中央値も2018年のほうが4951円も低いです。

では、平均値の検定をしてみます。t.test関数です。

f:id:cross_hyou:20180728141715j:plain

p-value = 0.8491 > 0.05 なので2つの平均値に差があるとは言えません。

中央値の検定をします。wilcox.test関数です。

f:id:cross_hyou:20180728142007j:plain

p-value = 0.9799 > 0.05 なので、2つの中央値に差があるとはいえません。

符号検定(サイン検定)をします。まずは、2018年と2010年の所定内給与の差を計算します。

f:id:cross_hyou:20180728142232j:plain

増加の数は、8で、減少の数も8です。これでは、検定をする必要なく2018年と2010年の給与総額に差があるとは言えないとわかります。

所定内給与についても、2018年と2010年では差があるとは言えないとわかりました。

こんどは残業代について調べてみましょう。

まずはそれぞれの年別の平均値と中央値の確認です。tapply関数をつかわず、普通に算出してみましょう。

f:id:cross_hyou:20180728142859j:plain

2010年の残業代の平均値は、2万0716円です。2018年は2万2354円です。

2018年のほうが1638円ほど多いですね。

f:id:cross_hyou:20180728143407j:plain

残業代の中央値については、2010年は1万8767円、2018年が2万1263円です。

2018年のほうが2495円50銭多いです。

では、残業代が2010年と2018年で違いがあると言えるのかどうか、検定してみましょう。

まずは、平均値の検定です。t.test関数を使います。

f:id:cross_hyou:20180728143959j:plain

p-value = 0.09515 > 0.05 ですから、2010年と2018年の平均値に有意な違いがあるとは言えません。

中央値はどうでしょうか?wilcox.test検定です。

f:id:cross_hyou:20180728144259j:plain

p-value = 0.1046 > 0.05 ですから、2010年と2018年の中央値に有意な違いがあるとは言えません。

符号検定(サイン検定)をします。まずは、2018年と2010年の残業代の差額を計算します。

f:id:cross_hyou:20180728144559j:plain

増加した業種は、10業種、減少した業種は6業種です。prop.test関数を用います。

f:id:cross_hyou:20180728144955j:plain

p-value = 0.4533 > 0.05 ですから、残業代が増えた業種が多いとは言えないですね。(たまたまこうなった、かもしれないという意味です。)

残業代についても、2010年と2018年で違いがあると胸を張って言えることはありませんでした。

最後は、特別支給です。平均値と中央値を確認します。

f:id:cross_hyou:20180728145850j:plain

平均値は、2010年は1万2688円で、2018年は1万9310円です。

2018年のほうが6622円も多いです。これは有意な差かもしれませんね。

f:id:cross_hyou:20180728150533j:plain

中央値は、2010年が6037円で、2018年が1万1729円です。

2018年のほうが5692円と倍ちかく多いです。

それは検定していきましょう。

平均値の検定(t検定)です。t.test関数です。

f:id:cross_hyou:20180728150843j:plain

p-value = 0.2973 > 0.05 ですから、「2つの平均値が同じである」という帰無仮説を棄却できませんでした。

中央値を検定します。ウィルコクソン=マン・ホイットニー検定です。wilcox.test関数を使います。

f:id:cross_hyou:20180728151311j:plain

p-value = 0.2744 > 0.05 なので、2010年の中央値と2018年の中央値に違いがあるとは言えませんでした。

符号検定(サイン検定)をします。まずは、2018年と2010年の特別支給の差額をそれぞれの業種ごとに算出します。

f:id:cross_hyou:20180728152004j:plain

いままでは、増加の数、減少の数を目で数えていましたが、データの数が多くなると、そういうことはできなくなります。そういうときは、cut関数でデータをカテゴリカル変数に変更してしまいましょう。

f:id:cross_hyou:20180728152905j:plain

「区切り」という変数を作って、-30000より大きく0以下、0より大きく100000以下という2つ区間に分けています。このように「減少」「増加」のデータに変換してから、table関数でそれぞれの数を集計しています。減少が6で、増加が10です。

増加10、標本数16、基準比率0.5でprop.test関数を適用します。

f:id:cross_hyou:20180728153738j:plain

p-value = 0.4533 > 0.05 ですから2018年の特別支給が2010年の特別支給よりも増加しているとは言えないです。

前回の分析と今回の分析の結果を見ると給与に関するすべてのデータで2010年と2018年で差があるとは言えない結果になりました。アベノミクスで景気が良くなったと安倍首相はおっしゃっていますが、現金給与を見る限り、2010年と比較して大きく増えたとは言えない状態です。

 

 

毎月勤労統計調査の分析4 - 給与総額は2010年と比べて2018は増えているのか?(t.test関数, wilcox.test関数, prop.test関数)

今回は、毎月勤労統計調査のデータで、2018年5月の給与総額と2010年5月の給与総額を比較したいと思います。

まずは、csvファイルに保存されているデータを読込みましょう。

f:id:cross_hyou:20180727160126j:plain

read.csv関数でファイルを読込み、head関数で始めの6行を表示して、summary関数で最小値、第1分位値、中央値、平均値、第3分位値、最大値を表示しました。

2010年の給与総額と2018年の給与総額を比較したいので、subset関数で2018年だけのデータ、2010年だけのデータを作ります。

f:id:cross_hyou:20180727160507j:plain

2018年だけのデータです。

f:id:cross_hyou:20180727160611j:plain

この結果を見ると、2018年の給与総額は平均値は、31万2121円です。

2010年の給与総額の平均値は、30万4350円です。2018年のほうが7771円ほど多いですね。この差は有意な差なのでしょうか?

2つのグループの平均値が差があるかどうかを検定するには、t.test関数を使います。

今回は業種ごとに、2010年5月の給与総額、2018年5月の給与総額と一つの業種に2つのデータがある、対応のある標本ですので、paired = TRUEというオプションを付け足します。

f:id:cross_hyou:20180727162041j:plain

p = 0.2917 > 0.05 ですから、2010年と2018年の給与総額の平均は違いがない、という帰無仮説を棄却できません。

しかし、この給与総額のデータは、それぞれ16個しかデータがありませんから、t検定は適切ではないかもしれません。

そこで今回は、ノンパラメトリック検定のウィルコクソン=マン・ホイットニー検定をしてみます。関数は、wilcox.testです。

これは2つの標本の中央値に違いがあるかどうかを検定します。

2018年の給与総額の中央値は、30万9490円です。

2010年の給与総額の中央値は、30万5241円です。差は、4249円です。

f:id:cross_hyou:20180727163138j:plain

p-value = 0.4332 > 0.05なので、2つの中央値に違いがある、という帰無仮説を棄却できません。

最後に符号検定(サイン検定)をしてみましょう。

まずは、2018年の給与総額から2010年の給与総額を引き算します。

f:id:cross_hyou:20180727164308j:plain

給与総額が増えているデータの個数は、10個です。

給与総額が減っているデータの個数は、6個です。

つまり、10増6減です。

もしも2018年と2010年で給与総額が変わっていなければ、8増8減が普通です。

この10増6減がどれほどの確率で起きるか、prop.test関数で検定します。

標本の大きさは、16

増加の数は、10

検定する比率は、0.5です。

porop.test(10, 16, 0.5)と入力します。

f:id:cross_hyou:20180727164953j:plain

p-value = 0.4533 > 0.05 ですから、10増6減では、8増8減と有意な差ではないことがわかります。

今回のデータ分析では、その他サービスという人が一人いて、その人の給与総額が2018年はxxxx円、2010年はzzzz円、医療福祉という人が一人いて、その人の給与総額が2018年はyyyy円、2010年はwwww円というように見なして分析しました。

その結果では、t検定、ウィルコクソン=マン・ホイットニー検定、符号検定(サイン検定)の3つの検定ですべて、統計的に有意な違いはみられない、という結果になりました。

 

 

毎月勤労統計調査の分析3 - データをヒストグラムで見える化する。(par関数, hist関数)

今回は、毎月勤労統計調査のデータをグラフにしてみたいと思います。

まずは、データをread.csv関数でR言語に読込み、head関数、summary関数を適用してみます。

f:id:cross_hyou:20180726185127j:plain

このファイルは、2018年5月のデータと2010年5月のデータが合わさっています。

2018年のデータ、2010年のデータと分けて読み込ませましょう。subset関数を使います。

f:id:cross_hyou:20180726185932j:plain

f:id:cross_hyou:20180726190036j:plain

給与総額のヒストグラムを作成してみましょう。

par(mfrow=c(2,1))としてから、hist関数を適用すると、1つの画面に二つのヒストグラムを並べることができます。

f:id:cross_hyou:20180726191802j:plain

f:id:cross_hyou:20180726191910j:plain

2018年のほうが給与総額の一番右の部分、4e+05~5e+05のところの度数が多いですね。2018年のほうが給与総額が多い感じですね。

給与と残業はどうでしょうか?

f:id:cross_hyou:20180726192801j:plain

f:id:cross_hyou:20180726192729j:plain

2018年は25万~30万のところが6件と集中していますね。

f:id:cross_hyou:20180726193041j:plain

f:id:cross_hyou:20180726193118j:plain

2018年は25万から30万が一番多いクラスですが、2010年は30万~35万が一番多いクラスです。

残業代はどうでしょうか?

f:id:cross_hyou:20180726193417j:plain

f:id:cross_hyou:20180726193450j:plain

残業代は2018年のほうが右に偏っている感じですね。

最後は、特別支給です。

f:id:cross_hyou:20180726193729j:plain

f:id:cross_hyou:20180726193806j:plain

特別支給は、2010年のほうが右に偏っている感じですね。

 

毎月勤労統計調査の分析2 - 基本統計量 2018年5月と2010年5月(summary関数, subset関数, tapply関数, mean関数)

前回の分析データは、2018年5月の各業種(大分類)のトータルだけでした。これではあまり面白くないので、2010年5月のデータも加えて分析することにしました。

そこでもう一度、データをread.csv関数で読込みしなおしてhead関数、summary関数を走らせてみましょう。

f:id:cross_hyou:20180725124339j:plain

のちのちの分析で必要になるかもしれないので、2018年だけのデータフレーム、2010年だけのデータフレームを作成しておきましょう。subset関数を使います。

f:id:cross_hyou:20180725124657j:plain

年のところを見ると、すべて2018になっているので、2018年だけのデータフレームであることがわかります。

f:id:cross_hyou:20180725125107j:plain

こちらの年のところは、2010だけですので、2010年だけのデータフレームだとわかります。

給与総額の平均値(Mean)の値を見てみましょう。

2018年は、31万2121円です。

2010年は、30万4350円です。

2018年のほうが給与総額が増えていますね。

これは、もともとのデータフレームでtapply関数を使ってもできます。

f:id:cross_hyou:20180725130046j:plain

tapply関数(処理するデータ, グループ分けのデータ, 処理する関数)

という構文です。

 

読書記録 - 「EVと自動運転 クルマをどう変えるか」 鶴原吉郎 岩波新書

 

EVと自動運転――クルマをどう変えるか (岩波新書)

EVと自動運転――クルマをどう変えるか (岩波新書)

 

 電動化 + 自動化 + コネクテッド化 = サービスとしてのクルマ

読んで思ったのは、未来のクルマは、瞬間移動ではない「どこでもドア」になるんだな、と思いました。

私はクルマを運転できないので、そういう未来が楽しみです。