crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

washdata.orgのデータ分析1 - R言語でExcelデータを読み込む。

washdata.org

https://washdata.org/data/downloads#WLD

WHOとUNICEFのジョイントプログラムのウェブサイトに世界各国の水利用関連のデータファイルがあります。

今回はこのファイルをR言語に読み込んでみようと思います。

Excel

こういうExcelファイルです。

このファイルを読み込んでみます。

データはたくさんあるので、今回はWaterのNationalのデータだけにします。

CSVファイル

こういうCSVファイルにしました。

country: 国または地域の名前

ISO: 国または地域のコード

tear: データの西暦

population: 人口(千人)

urban_rate: 都市に住む人口比率

basic: 水利用がbasicレベル以上の人口比率。basicは"Drinking water from an improved source, provided collection time is not more than 30 minutes for a round trip, including queuing" 30分以内で飲み水が手に入る、ということです。日本に住む我々から見ると想像するのは難しいですが、世界には飲み水を組みに行くのに往復で30分以上の時間がかかる国、地域がいっぱいあります。

limited: 水利用がlimitedレベルの人口比率。"Drinking water from an improved source for which collection time exceeds 30 minutes for a round trip, including queuing"

unimproved: 水利用がunimprovedレベルの人口比率。"Drinking water from an unprotected dug well or unprotected spring" です。dug well は堀り井戸です。unprotectedとあるので、管理されていない、堀り井戸や泉ということでしょうかね。

surface: は水利用がsurface waterレベルの人口比率です。"Drinking water directly from a river, dam, lake, pond, stream, canal or irrigation canal" 自然の川や湖から汲んでいるということですね。

change: basicの年間変化率です。

これらの水利用のレベルは、

https://washdata.org/monitoring/drinking-water

に載っています。

それでは、このCSVファイルをR言語のread.csv関数で読み込みます。

read.csv関数でCSVファイルを読み込む

read.csv関数でファイルを読み込み、str関数でデータの構造を確認しました。basic以下の数値データが文字型として読み込まれています。

as.numeric関数で数値型に変換しましょう。

あ、その前にtidyverseパッケージを読み込んでおきましょう。

tidyverseパッケージ

それではbasic以下の変数を文字列型から数値型に変換します。

mutate関数

mutate関数を使い、その中でas.numeric関数を使いました。数値として認識できない文字列はNAに強制変換されます。

str関数で数値型になったか確認してみます。

str関数でデータの構造を確認

狙いどおり、数値型に変換されています。

sapply関数とfunction関数とis.na関数とsum関数を使って各変数にNAが何個あるか確認しておきます。

sapply関数とfunction関数とis.na関数とsum関数

結構な数がNAですね。sum関数のかわりにmean関数を使うとNAの割合になります。

sapply関数とfunction関数とis.na関数とmean関数

surfaceやchangeは61%がNAですね。

今回は以上です。

 

都道府県別のジニ係数の分析6 - R言語のlm関数で回帰分析

 

www.crosshyou.info

 の続きです。

今回はR言語のlm関数で回帰分析をしてみます。

2014年のincome(二人以上の世帯の年間収入のジニ係数)を、2009年のジニ係数で回帰分析してみます。

はじめに2014年のincome, 2009年のincomeのベクトルを作ります。

%>%処理と.$

income2014とincome2009の散布図を描いてみましょう。

geom_point関数で散布図

散布図

普通にplot(income2009, income2014)で散布図は描けますが、今回はggplot2のgeom_point関数で散布図を作成してみました。あんまり相関関係は無いようですね。

cor.test関数で相関係数を確認してみます。

cor.test関数

p-value = 0.1062と0.05よりも大きいので相関関係があるとは言えないです。

まあ、とりあえず、lm関数で回帰分析モデルを作成してみます。

lm関数で回帰分析

p-value : 0.1062 とcor.test関数と同じp値です。回帰分析モデルも有意とは言えない、ということですね。

説明変数に2009年のsaving(二人以上の世帯の貯蓄現在高のジニ係数)も加えてみましょう。

まず、2009年のsavingのベクトルを作ります。

%>%処理と.$

こうして作成したsaving2009も説明変数に加えた回帰モデルを作りましょう。

lm関数で回帰分析

p-value: 0.2633 と0.05よりも大きいですから、このモデルも有意なモデルではないですね。

つまり、2014年度の二人以上の年間収入のジニ係数は、2009年度の二人以上の年間収入のジニ係数と現在貯蓄現在高のジニ係数では説明できないということですね。

最後にincome2014, income2009, saving2009の散布図マトリックスを描きましょう。

pairs関数を使います。

pairs関数

散布図マトリックス

今回は以上です。

 

都道府県別のジニ係数データの分析5 - R言語のgeom_point関数とgeom_text関数で散布図を描く。

 

www.crosshyou.info

 の続きです。

今回は、R言語のggplot2パッケージを読み込んでgeom_point関数とgeom_text関数で散布図を描いてみましょう。

まずは、2014年度のincome(二人以上の世帯の年間収入のジニ係数)とsaving(二人以上の世帯の貯蓄現在高のジニ係数)の散布図です。

geom_point関数とgeom_text関数

散布図

incomeのジニ係数は東京都が一番大きく、savingのジニ係数は沖縄県が一番大きいことがわかります。

incomeとincome_work(二人以上の勤労者世帯の年間収入のジニ係数)はどうでしょうか?

geom_point関数とgeom_text関数

散布図

東京都がincomeのジニ係数は一番大きく、沖縄県がincome_workのジニ係数は一番大きいことがわかります。

savingとsaving_work(二人以上の勤労者世帯の現在貯蓄現在高のジニ係数)の散布図を描いてみます。

geom_point関数とgeom_text関数

散布図

savingとsaving_workは同じくらいの値が多いので、geom_abline関数で切片が0、傾きが1の直線も追加してみました。

沖縄県がジニ係数は一番大きく、富山県が一番小さいことがわかります。

今回は以上です。

 

都道府県別のジニ係数データの分析4 - 沖縄県は格差が大きな県だとわかる。

 

www.crosshyou.info

 の続きです。

今回はR言語のarrange関数を使って、ジニ係数の大きい順、小さい順に都道府県を並べてみます。

income(二人以上の世帯の年間収入のジニ係数)の大きい都道府県はどこでしょうか?

arrange関数

2014年度の東京都が一番大きい、つまり格差が大きいということです。

 

arrange関数

2009年度の京都府が一番小さいです。

 

income_work(二人以上の勤労者世帯の年間収入のジニ係数)はどうでしょうか?

arrange関数

2009年度の沖縄県が一番格差が大きいです。

arrange関数

2009年度の京都府が一番格差が小さいです。

 

saving(二人以上の世帯の貯蓄現在高のジニ係数)を見てみましょう。

arrange関数

2014年度の沖縄が一番格差が大きいですね。

arrange関数

2009年度の秋田県が一番格差が小さいです。

 

saving_work(二人以上の勤労者世帯の貯蓄現在高のジニ係数)はどうでしょうか?

arrange関数

2014年度の沖縄県が一番格差が大きいです。

arrange関数

2009年度の富山県が一番格差が小さいです。

こうしてみると、沖縄県は格差が大きな県であるとわかります。

今回は以上です。

都道府県別のジニ係数データの分析3 - R言語で2009年度と2014年度で違いがあるかどうかを検定する。

 

www.crosshyou.info

 の続きです。

前回のヒストグラムを見ると、現在貯蓄現在高のジニ係数は2014年度のほうが大きくなっているようでした。

今回はR言語で統計的に有意に違っているのかを検定してみます。

はじめに、group_by関数+summarize関数+mean関数で年度ごとの平均値を見てみます。

group_by関数とsummarise関数

income, income_workはあんまり平均値に差はないようですが、saving, saving_workには差があるようですね。

下準備として、データフレーム、dfを都道府県順に並べておきましょう。

arrange関数を使います。

arrange関数

愛知県、愛媛県、茨城県、、と順番に並びました。

平均値を比べるには、まず分散が同じかどうかを確認しないといけません。var.test関数で検定します。

var.test関数

p-value = 0.9094と0.05よりも大きいので、帰無仮説(分散は同じ)を棄却できません。

つまり、2009年度と2014年度でincome(二人以上の世帯の年間収入のジニ係数)の分散は同じとみなして問題ありません。

分散が同じならば、t.test関数で平均値に違いがあるかどうかを検定できます。2009年度の愛知県と2014年度の愛知県、2009年度の愛媛県と2014年度の愛媛県と比較するのでpaired = TRUEにします。

t.test関数

p-value = 0.448と0.05よりも大きいです。帰無仮説(2009年度と2014年度で平均値は同じ)を棄却できません。つまり、incomeは2009年度と2014年度で違いがあるとは言えません。

 

同じように、income_work(二人以上の勤労者世帯の年間収入のジニ係数)を調べてみます。

var.test関数

p-value = 0.448と0.05よりも大きいですので、分散に違いがあるとは言えません。

t.test関数

p-value = 0.09813と0.05よりも大きいので、2009年度と2014年度で二人以上の勤労者世帯の年間収入のジニ係数に違いがあるとは言えません。

 

saving(二人以上の世帯の貯蓄現在高のジニ係数)をどうでしょうか?

var.test関数

p-value = 0.448と0.05よりも大きいので、分散に違いがあるとは言えません。

t.test関数で平均値に違いがあるかどうかを検定します。

t.test関数

p-value = 2.16e-11と0.05よりも小さいです。つまり、平均値に違いがあるといえます。

 

 

saving_work(二人以上の勤労者世帯の貯蓄現在高のジニ係数)はどうでしょうか?

var.test関数

p-value = 0.5242と0.05よりも大きいので、分散に違いがあるとは言えません。

t.test関数で平均値に違いがあるかどうかを検定します。

t.test関数

p-value = 3.608e-10と0.05よりも小さいので、平均値に違いがあるといえます。

 

年間収入のジニ係数は2009年度も2014年度も同じような値といえますが、現在貯蓄現在高のジニ係数は2014年度のほうが有意に大きいです。つまり、格差が拡大しています。

稼ぎの格差は拡大していないが、保有の格差は拡大していました。

今回は以上です。

 

都道府県別のジニ係数データの分析2 - 現在貯蓄現在高のジニ係数は2014年のほうが大きくなっている。

 

www.crosshyou.info

 の続きです。

今回は4つのジニ係数データのヒストグラム描いてみます。

geom_histogram関数でヒストグラムを作り、facet_grid関数で年度を別にしています。

geom_histogram関数でヒストグラム

geom_histogram関数でヒストグラム

bins=30となっていますが、少し多すぎるようです。bins=10にしてみます。

geom_histogram関数でヒストグラム

ヒストグラム

2009年度よりも2014年度のほうが分布形状が幅があるようになっていますね。

二人以上の世帯の勤労者世帯の年間収入のジニ係数はどうでしょうか?

geom_histogram関数でヒストグラム

ヒストグラム

勤労者世帯の年間収入のジニ係数は上のようになりました。fill="blue"として色を青色にしてみました。

貯蓄現在高のジニ係数のヒストグラムを見てみます。

geom_histogram関数でヒストグラム

ヒストグラム

2014年度のほうが2009年度よりも分布の位置が右に移動しています。つまりジニ係数が大きく、格差が大きくなっているということですね。

saving_work(二人以上の世帯、勤労者世帯の貯蓄現在高のジニ係数)のヒストグラムを描きます。

geom_histogram関数でヒストグラム

ヒストグラム

こちらも2014年度のほうが分布が右側にあります。

年間収入ははっきりしませんが、貯蓄現在高は明らかに2014年度のほうがジニ係数が拡大しているようです。

今回は以上です。

都道府県別のジニ係数データの分析1 - ジニ係数は0に近づくほど平等、1に近づくほど不平等。

今回は都道府県別のジニ係数データの分析をしようと思います。

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

www.e-stat.go.jp

 

ジニ係数データ

年間収入のジニ係数、貯蓄現在高のジニ係数があって、二人以上の世帯、二人以上の世帯のうち勤労者世帯の二種類なので、合計4種類のジニ係数です。

ジニ係数

こんな感じのCSVファイルです。

9行目は私が変数名として挿入しています。

このCSVファイルをR言語のread.csv関数で読み込みます。

read.csv関数でCSVファイルを読み込む

str関数でデータ構造を確認します。

str関数でデータの構造を確認

94の観測(observations)と6の変数(variables)が読み込まれた。データの型を47都道府県で94の観測ですから、2年分のデータですね。

tidyverseパッケージを読み込んでおきましょう。

tidyverseパッケージ

yearをfactor関数で文字列型からファクター型に変換します。

文字列型からファクター型に変換

summary関数でデータの基本統計値を確認します。

summary関数

2009年度と2014年度のデータがあります。4つのジニ係数の中で平均値が一番大きいのは、saving(二人以上の世帯の現在貯蓄現在高のジニ係数)ですね。

ところで、ジニ係数って何でしょうか?

https://www.e-stat.go.jp/koumoku/koumoku_teigi/L#L4602

ジニ係数の定義

ジニ係数は不平等度を表す係数で、0に近づくほど平等、1に近づくほど不平等ということだそうです。ということは、平均値が一番大きい、saving(二人以上の世帯の現在貯蓄現在高のジニ係数)が一番不平等ということですね。

これから一番不平等度が大きい都道府県はどこか?2009年度と2014年度ではどちらが不平等度が大きいか?などを調べていきます。