www.crosshyou.info

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

都道府県別の所定内給与額のデータの分析7 - R言語のlm関数で重回帰分析をする

 

www.crosshyou.info

 の続きです。今回は2017年度の男女の1日当りの所定内給与額の比率を2005年度のデータを使って重回帰分析をしてみたいと思います。

まず、filter関数をつかって2005年度だけのデータフレームを用意します。

f:id:cross_hyou:20210220152628p:plain

このdf_2005というデータフレームとdf2というデータフレームをinner_join関数を使って結合します。

f:id:cross_hyou:20210220152854p:plain

Y2017が被説明変数で、説明変数はY2005, m_salary, f_salary, m_daysにします。f_daysやm_per_day, f_per_dayを入れないのは、Y2005, m_salary, f_salary, m_daysを使えばm_per_dayとf_per_dayは計算できるからです。

lm関数で重回帰分析をしてみます。

f:id:cross_hyou:20210220153449p:plain

p-valueは0.001262と0.05より小さく有意な統計モデルです。でもその説明変数も有意ではないですね。

tidy関数でモデルを出力してみます。

f:id:cross_hyou:20210220153731p:plain

係数の信頼区間がすべて0を含んでいます。

step関数で不要な説明変数を除いてみます。

f:id:cross_hyou:20210220154010p:plain

あら、残った説明変数はY2005: 2005年度の男女の1日当りの所定内給与額の比率 だけでした。p-valueは3.236e-05と0.05よりも低く、Y2005の係数のp値も3.24e-05と0.05よりも低いです。

Y2005の2乗項、3乗項も加えてみたモデルを作ってみましょう。

f:id:cross_hyou:20210220154531p:plain

2乗項、3乗項を加えるのは意味ないようですね。

lm5の残差プロットを見てみます。

f:id:cross_hyou:20210220154751p:plain

f:id:cross_hyou:20210220154805p:plain

今回は以上です。

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の所定内給与額のデータの分析6 - R言語のbroomパッケージを絡ませてlm関数で回帰分析をする。

 

www.crosshyou.info

 今回は、男性の1日当りの所定内給与額と女性の1日当りの所定内給与額の回帰分析をしてみたいと思います。

 

 こちらの本でbroomパッケージを使う方法を学んだので、その練習です。

まずは、全部のデータで、散布図を描いてみましょう。

f:id:cross_hyou:20210220095257p:plain

f:id:cross_hyou:20210220095309p:plain

library(dslabs)とds_theme_set()でグラフの書式を設定しました。

その後にggplot関数とgeom_point関数で散布図を描きました。

年度ごとに分割して散布図を描いてみます。

f:id:cross_hyou:20210220095726p:plain

f:id:cross_hyou:20210220095739p:plain

facet_wap関数で年度別にして、さらにgeom_smooth関数で回帰直線を付け足しました。年度による違いはあまりないようですね。

早速回帰分析をしてみます。

まずは、年度を関係なくしたモデルです。

f:id:cross_hyou:20210220100642p:plain

p-valueは2.2e-16よりも小さく有意なモデルです。R-squaredは0.8314です。

m_per_dayのEstimate(係数)は0.80803です。m_per_dayが1000円上昇すると、f_per_dayは808円上昇します。

broomパッケージを読み込んで、glance関数でこのlm1を見てみましょう。

f:id:cross_hyou:20210220101311p:plain

glance関数で回帰分析モデルを見ると、このようにtibbleとして結果が出力されます。

次は年度ごとにグループ化して回帰分析をしてみましょう。

f:id:cross_hyou:20210220101829p:plain

データフレーム、df2をgroup_by関数でyearでグループ化してから、do関数とtidy関数でlm関数を処理してtibbleとして結果を返しました。

estimateの列を見るとわかりますが、2005年度は0.708だったのが2017年度は0.841と男女の格差が知事待っていることがわかります。

interceptのほうもみてみましょう。

f:id:cross_hyou:20210220102340p:plain

Interceptのほうはp.valueが全て0.05以上ですし、信頼区間も全て0を含んでいます。

それでは、m_per_dayのEstimate(係数)をグラフにしてみます。

f:id:cross_hyou:20210220104341p:plain

f:id:cross_hyou:20210220104325p:plain

geom_errorbar関数で信頼区間のグラフになります。geom_point関数でEstimate(係数)を点で示し、geom_hline関数で0.78の水準に線を引いて信頼区間がかぶっているかどうかをわかりやすくしました。最後にcoord_flip関数で縦横は反転しています。

2005年度と2014年度の信頼区間はかぶっていないことがわかります。

全体のデータにyearも加えて回帰分析してみます。

f:id:cross_hyou:20210220105027p:plain

f:id:cross_hyou:20210220105042p:plain

2005年度が基準です例えば、2005年度の回帰直線は u を誤差項とすると、

f_per_day = -1.237882 + 0.797325 * m_per_day + u です。

2017年度の回帰直線は

f_per_day = -1.237882 + 1.494673 * 0.797325 * m_per_day + u

男性の1日当りの所定内給与額が同じだとすると、女性の1日当りの所定内給与額は、2017年度のほうが平均して1500円ぐらい高い、ということですね。

今回は以上です。

次回は

 

www.crosshyou.info

 です。

 

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の所定内給与額のデータの分析5 - R言語で2005年度と2017年度の男女格差を比較する。var.test関数とt.test関数

 

www.crosshyou.info

 の続きです。

今回は2005年度と2017年度の男女格差を比較してみようと思います。

まず、2005年度と2017年度だけのratio: 男女の1日当りの所定内給与額の比率のデータフレームを作ります。

f:id:cross_hyou:20210219193617p:plain

summary関数で概要をみてみます。

f:id:cross_hyou:20210219193725p:plain

2005年度の平均値は1.40なのに対して、2017年度の平均値は1.23と格差が縮小しています。

ggplot2のgeom_histogram関数で分布をみてみます。

f:id:cross_hyou:20210219193928p:plain

f:id:cross_hyou:20210219193945p:plain

あきらかに2017年度のほうが比率が小さいほうに分布していますね。

統計的に有意な違いなのか検定してみます。

まずは分散が同じかどうかをvar.test関数で検定します。

f:id:cross_hyou:20210219194247p:plain

p-valueが0.3と0.05よりも大きいですから、分散が同じ、という帰無仮説を棄却できません。すなわち、分散が同じといってよいです。

分散が同じといってよいので、t.test関数で両者の平均値に違いがあるかどうかを検定します。

f:id:cross_hyou:20210219194533p:plain

p-value < 2e-16と0.05よりも小さいです。「平均値が同じ」、という帰無仮説を棄却して、平均値が同じでないとわかりました。

2005年度から20017年度のあいだの12年間で男女格差は縮小したことがわかります。

今回は以上です。

次回は、

 

www.crosshyou.info

 です。

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の所定内給与額のデータの分析4- R言語で男女の給与額の格差を見る。沖縄県が一番格差が小さい。

 

www.crosshyou.info

 の続きです。

 前回は男女の所定内給与額を見ました。

今回は、その比率を計算することからはじめます。

R言語のmutate関数を使います。

f:id:cross_hyou:20210215184747p:plain

ratio: 男性の1日当りの所定内給与額/女性の1日当りの所定内給与額としましたので、値が大きいほど、男女差があるということですね。

年度ごとの平均値をグラフにしてみます。

f:id:cross_hyou:20210215184938p:plain

f:id:cross_hyou:20210215184951p:plain

年を追うごとに値は小さくなっています。男女格差がだんだんなくなっているということですね。

都道府県別で見てみます。

f:id:cross_hyou:20210215185117p:plain

f:id:cross_hyou:20210215185129p:plain

富山県、福井県、茨城県などは値が大きいですから男女格差が大きいです。

沖縄県、神奈川県、千葉県は値が小さいですから男女格差が小さいです。

2005年度と20017年度を比較してみます。

f:id:cross_hyou:20210215201106p:plain

f:id:cross_hyou:20210215201121p:plain

2017年度の大きさで都道府県を並べていますが、2005年度はけっこうバラバラになっていますね。

例えば、山口県は2005年度は男女格差が大きかったですが、2017年度は下から数えて10番目くらいにまで男女格差が縮まっています。

今回は以上です。

 次回は

 

www.crosshyou.info

 です。

 

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の所定内給与額のデータの分析3 - 女性のほうが会議が長くなるのはわからないが、所定内給与額が低いのは確かだ。

 

www.crosshyou.info

 の続きです。

今回はR言語でヒストグラムを描きます。

一番新しい調査年度のデータで描きましょう。

dfの一番新しい調査年度はいつでしょうか?

f:id:cross_hyou:20210214163201p:plain

2018年度です。

2018年度の所定内給与額の分布状況をヒストグラムでみてみます。

f:id:cross_hyou:20210214163338p:plain

f:id:cross_hyou:20210214163358p:plain

男性のほうが高額ですね。

男女の差が統計的に有意なのかどうか検定してみます。まずは両者の分散が等しいかどうかをvar.test関数で検定します。

f:id:cross_hyou:20210214164132p:plain

p値が0.004846ですので、男性の所定内給与額の分散と女性の所定内給与額の分散は等しいとは言えません。分散が同じではないので、t.test関数ではなくて、wilcox.test関数を使います。

f:id:cross_hyou:20210214164436p:plain

p値は4.191e-16と0.05よりも小さいですので、両者の分布位置が同じという帰無仮説を棄却します。男性と女性では所定内給与額の分布位置はたしかに違うことが確認できました。

次にdf2のデータフレームを使って1日当りの所定内給与額を調べてみます。

まず、df2で一番新しい調査年度を確認します。

f:id:cross_hyou:20210214164738p:plain

2017年度が一番新しい調査年度です。2017年度の1日当りの所定内給与額のヒストグラムを描きます。

f:id:cross_hyou:20210214164918p:plain

f:id:cross_hyou:20210214164935p:plain

このヒストグラムも男性のほうが高額ですね。

この差が統計的に有意かどうか、検定します。

まず、var.test関数で分散が等しいのかどうかを確認します。

f:id:cross_hyou:20210214165352p:plain

p値が0.3807と0.05よりも大きいので、両者の分散は同じと考えてよいようです。

分散が同じときは、t.test関数で比較できます。

f:id:cross_hyou:20210214165704p:plain

p値が1.805e-11と0.05よりも小さいので、両者の平均値は同じ、という帰無仮説を棄却して、両者の平均値に違いはあるという対立仮説を採用します。

上のt.test関数ではpaired = TRUEを加えていませんでしたが、本当は、東京都の男性の1日当りの所定内給与額、女性の1日当りの所定内給与額とペアになっているデータですので、paired = TRUEを付け加えたほうがより厳密な検定になります。

f:id:cross_hyou:20210214170132p:plain

p値が 2.2e-16よりも小さいとさらに小さな値になります。

今回は以上です。

はじめから読むには、

 

www.crosshyou.info

 です。

都道府県別の所定内給与額のデータの分析2 - R言語のggplot2でグラフを作成する。青森県の男性より、東京都の女性のほうが高給取りだ。

 

www.crosshyou.info

 の続きです。

今回はggplot2パッケージでグラフを描きます。

まずは、年度ごとの所定内給与額の平均値をみてみましょう。

f:id:cross_hyou:20210213204225p:plain

f:id:cross_hyou:20210213204241p:plain

青が男性で赤が女性です。

男性は1996年頃から伸びが頭打ちです。

 

次は、都道府県の平均値です。

f:id:cross_hyou:20210213204105p:plain

f:id:cross_hyou:20210213204129p:plain

こちらも青が男性で赤が女性です。一番したの青、青森県の男性の金額よりも一番上の赤、東京都の女性のほうが金額が多いです。

一日当りの給与額でも同じようにグラフにしてみましょう。

f:id:cross_hyou:20210214090225p:plain

f:id:cross_hyou:20210214090243p:plain

1日当りの給与は、男女ともの2017年度が一番高額ですね。今回はgeom_textではなくて、geom_labelで男性は青、女性は赤を表示しました。

都道府県別の1日当りの給与額はどうでしょうか?

f:id:cross_hyou:20210214091115p:plain

f:id:cross_hyou:20210214091202p:plain

1日当りの給与額でみると、東京都の女性よりも男性の給与額が低いところがいっぱいありますね。

今回は以上です。

次回は、

 

www.crosshyou.info

 です。

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の所定内給与額のデータの分析1 - R言語でデータを読み込む。女性の1日当りの給与額が一番バラツキが大きい。

今回は都道府県別の所定内給与データの分析をしてみたいと思います。

データは、政府統計の総合窓口(e-stat)か取得します。

www.e-stat.go.jp

f:id:cross_hyou:20210213151508p:plain

47都道府県を選択して、

f:id:cross_hyou:20210213151700p:plain

男女別の所定内給与額と労働日数の4つのデータを選択しました。

f:id:cross_hyou:20210213152041p:plain

このようなファイルです。

これをR言語に読み込みます。

まず、tidyverseパッケージの読み込みをしておきます。

f:id:cross_hyou:20210213152522p:plain

read_csv関数でファイルを読み込みます。

f:id:cross_hyou:20210213152750p:plain

year: 調査年度

pref: 都道府県名

m_salary: 男性の所定内給与額(千円)

f_sarary: 女性の所定内給与額(千円)

m_days: 男性の労働日数

f_days: 女性の労働日数

です。

所定内給与額を労働日数で割って1日当りの給与額を算出しておきましょう。

f:id:cross_hyou:20210213153625p:plain

summary関数をつかってデータの基本統計量を確認します。

f:id:cross_hyou:20210213153740p:plain

yearやprefのlengthが2068とありますから、2068のデータ観測数があることがわかります。

m_salaryとf_salaryはNAは無いですね。m_daysなどはNAが1457ありますので、2068-1457=611個のデータですね。611/47=13ですから13年分のデータですね。

na/omit関数でNAの行をなくして、yearをファクター型に変換してしまいます。

f:id:cross_hyou:20210213154444p:plain

もういちどsummary関数を使ってみます。

f:id:cross_hyou:20210213154639p:plain

m_salaryの平均値は302.5、f_salaryの平均値は215.9とかなり差があります。

m_daysの平均値は20.12、f_daysの平均値は18.77です。

m_per_dayの平均値は15.08、f_per_dayの平均値は11.574です。

yearを見ると2005年度からデータがあるようです。

変動係数CVを求めてみます。標準偏差を平均値で割った値です。

f:id:cross_hyou:20210213155424p:plain

f_per_day_cv, つまり女性の1日当りの給与額が一番変動係数が大きいですね。一番データのバラツキが大きいということです。

m_days_cv、男性の労働日数が一番バラツキが小さいです。

今回は以上です。

 次回は

 

www.crosshyou.info

 です。