www.crosshyou.info

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

都道府県別の水質汚濁物排出量総合調査のデータ分析6 - R で水質が改善した都道府県、悪化した都道府県を調べた。

Bing Image Creator で生成: Blue image landscape, Japanese local area, splendid moment, photo style

 

www.crosshyou.info

の続きです。

前回は、R でシミュレーションベースの回帰分析を実行しました。l_quality は l_quantity, l_fuka と関連があることがわかりました。

今回は、l_quality が増えたところ、減ったところがどこかを調べたいと思います。

最初に l_quality: 平均水質【mg/l】の対数変換値をグラフにして全体の傾向をみてみます。

前に、l_quality は年度によって大きな違いは無い、ということは確認していましたが、このグラフでも全体的に大きな変化はなくて、2011 年度と 2019 年度を比べると上昇しているところもあれば下落しているところもありますね。

2011年度だけのデータフレームと2019年度だけのデータフレームを作成します。

こうして作成した 2 つのデータフレームを inner_join() 関数で結合します。

inner_join() 関数で 2 つのデータフレームを結合して、mutate() 関数で差分を計算し、relocate() 関数で変数の順番を並び替えました。

これで、どの都道府県が BOD の平均水質を改善させたかわかります。

佐賀県、大分県、静岡県などは水質が改善しました。和歌山県、福島県、宮城県などは水質が悪化しました。

今回は以上です。

初めから読むには、

www.crosshyou.info

です。

都道府県別の水質汚濁物排出量総合調査のデータ分析5 - R の infer で tidy な 重回帰分析 (Multiple Regression Analysis)

Bing Image Creator で生成: North Area Landscape, breezing wind, photograph style

 

www.crosshyou.info

の続きです。前回は、R の infer パッケージを利用して、ANOVA(Analysis of Variance) 分析をしました。今回は、infer パッケージで Multiple Regression Analysis を実行します。

l_quality: 平均水質【mg/l】の対数変換値を被説明変数にして、その他の変数を説明変数にして重回帰分析をしようと思います。

最初に、どの都道府県が l_quality の値が大きいか / 小さいかをグラフにしてみます。

宮城県が一番水質が悪く、神奈川県が一番水質が良い、ということがわかります。東北の件は比較的、水質が悪い感じです。

変数間の相関係数マトリックスを作成します。

l_quality を説明する変数として、l_num, l_quantity, l_fuka を使おうと思います。

l_quality との相関を考えると、l_num は負の相関、l_quantity は正の相関、l_fuka は正の相関です。

ggcorrplot パッケージを使って、もう少しわかりやすい相関係数マトリックスを作成します。

赤色が濃いと正の相関、青色が濃いと負の相関、とわかりやすいです。

GGally パッケージの ggpairs() 関数で散布図マトリックスを作成します。

ggpairs() 関数は散布図の他に、相関係数も計算してくれて、さらに分布密度も表示してくれます。

それでは、本題、l_quality を l_num, l_quantity, l_fuka で重回帰分析してみましょう。

今回も

Full infer Pipeline Examples • infer

こちらの infer のウェブサイトを参考にしました。

モデルの実際の推定係数をまずだします。

l_quality = 0.00610 - 0.000832 * l_num - 0.997 * l_quantity + 0.998 * l_fuka + u

というモデル式が推定されました。

これらの係数が有意に 0 と違うかどうかが問題です。

null distribution を作成します。

グラフにします。

赤い垂線の位置が実際に推計された係数の位置です。 l_num 以外は null distribution から離れていますので有意に 0 とは違うと思われます。

intercept, l_fuka, l_quantity の p 値は 0.05 よりもうんと小さいです。統計的に有意に 0 とは違うということですね。

bootstrap distribution を生成して、信頼区間を求めましょう。

信頼区間を求めます。

l_fuka と l_quantity は信頼区間が 0 を含んでいませんので、ここでも 0 とは有意に違うことが確認できます。 intercept は 0 を含んでいいますね。

グラフにしてみます。

l_fuka, l_quantity は 0 を含んでいないことがグラフでもわかります。

lm() 関数で理論ベースの重回帰分析もしてみます。

l_quality = 0.0061036 - 0.0008317 * l_num - 0.9973661 * l_quantity + 0.9977523 * l_fuka + u 

という推計結果です。当然ですが、infer の fit() 関数での結果と同じです。

p 値も l_fuka, l_quantity は2.2e-16 なので 0 とほぼ同じですね。

信頼区間も同じような結果ですね。

l_quantity が大きいと、l_quality は下がる、l_fukaは大きいと l_quality は上がる、ということで、l_quality, l_quantity, l_fuka はみな対数変換値なので、他の変数の値が変わらなければ、quantity が 1% 上がると 1% quality は下がり、fuka が 1% 上がると quality は 1% 上がるということです。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

都道府県別の水質汚濁物排出量総合調査のデータ分析4 - R の infer で tidy な ANOVA(Analysis of Variance) 分析

Bing Image Creator で生成: Photo, landscape of higher mountains and great fall, a few flowers, white clouds, blue sky

 

www.crosshyou.info

の続きです。前回は箱ひげ図を作成して、生活環境項目 5 項目ごとのデータの分布を見ました。前々回はヒストグラムを作成して、年度ごとのデータの分布を見ました。どちらの切り口でも、大幅に変化している、という印象はありませんでした。

そこで今回からは、生活環境項目については、BOD だけに絞って分析していきましょう。

BOD というのは、ウェブサイトを検索してみると、

BOD (生物化学的酸素要求量) は汚染の元となる有機物の量を間接的に示す水質指標ということです。値が大きいほど、汚染されているということですね。

さっそく、BOD  だけのデータフレームを作成します。

df_BOD の summary() 関数の結果を見ると、

five は必要ない、

quality の最小値が 0 よりも大きいので、対数変換ができる。なので、 r_quality : quality の平方根は必要ない、

とわかります。

df_BOD を手直しします。

l_quality : 平均水質【mg/l】の対数変換値の分布をみてみます。

左右対称っぽい分布ですね。

年度ごとの平均値をみてみましょう。

これら年度別の平均値が統計学的に有意な違いなのかどうか、これをシミュレーションベースの推定で確認します。

infer パッケージを使います。

Tidy ANOVA (Analysis of Variance) with infer • infer

こちらのサイトにやり方が書いてあるので、順を追って実行します。

まず、箱ひげ図を描きましょう。

この箱ひげ図を見るかぎり、年度別の違いは無いようです。

次は、F 値を計算します。

F 値は 0.306 です。

次は、何度も何度も元のデータをかき混ぜてランダムな分布を作ります。

こうして作成した、ランダムな F 値の分布をヒストグラムにします。

赤い垂線が実際の F 値です。これを見ると、実際の F 値はありふれた値ですね。つまり、year と l_quality には特別な関係性は無い、ということです。

理論的な F 値の分布も生成します。

これをグラフにします。

この理論ベースの F 値の分布に実際の F 値を重ねたグラフも同じような感じですね。

ランダムに生成した F 値と理論ベースの F 値を重ねるのは、visualize() 関数で、method = "both" にします。

シミュレーションベースの F 値の分布から、実際の観測された F 値がでてくる確率、 p 値を計算します。

p 値は 0.879 です。つまり、l_quality は 年度によって違いが無い、という帰無仮説を棄却できません。l_quality は 年度によって違いがある、とは言えません。

今回は以上です。

次回は、

www.crosshyou.info

です。

初めから読むには、

www.crosshyou.info

です。

 

読書記録 - 「法とは何か 新版」 渡辺 洋三 著 (岩波新書)

旧版は 1979 年に出版され、この新版は 1998 年に出版されています。

新版とはいえ、四半世紀以上昔の本なので、現代の法律制度とは違っている部分があるので、その点は注意が必要かと思いました。

「法とは何か」 ということに、この本の著者は、自然科学が「真理」の探究というならば、法学は「正義」の探求だといっています。この考えに接して、法律に少し興味がわいてきました。

タイトルが「法とは何か」とあるので、教科書的なものかと思っていましたが、内容は、著者の意見的な記述が多かったです。

外国ではこうなっているのに、日本はなっていないからダメだ、というようなことが多かったように感じましたが、私は外国は外国、日本は日本なので是々非々で考えていくほうがいいと思いました。

日本国憲法は戦争の放棄を掲げていてとても良い憲法だという意見には賛成しました。

法律は、力の弱いものためにある、という考えは共感しました。

都道府県別の水質汚濁物質排出量総合調査のデータ分析3 - R で箱ひげ図を作成して、各生活環境項目別のデータを視覚化する

Bing Image Creatorで生成: Landscape, southern islands, green grass, white cloud, tiny flowers, photo

 

www.crosshyou.info

の続きです。前回は各年度別のヒストグラムを作成しました。年度によって大きな違いはなさそうでした。

今回は、five: 生活環境項目5項目別に箱ひげ図を作成してみましょう。

はじめに、group_by() 関数、summarize() 関数を利用して、項目別の平均値を確認しておきます。

各変数とも、そんなに大きな違いはなさそうです。

今回は、対数変換したものと平方根をとったものだけで箱ひげ図を作成します。

l_num: 事業場数の対数変換値 は、そんなにはっきりとした違いは無いようです。

l_quantity: 排水量【千m3/日】の対数変換値も項目別の違いはそんなにないようです。

l_fuka: 負荷量【kg/日】の対数変換値もそれほど大きな差は無いようです。窒素含有量は、小さい値の外れ値がいくつかあります。

r_quality: 平均水質【mg/】の平方根も大きな違いは無いようです。

以上から、各変数は、生活環境項目によって大きな違いは無いことが確認できました。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

都道府県別の水質汚濁物質排出量総合調査のデータ分析2 - R でヒストグラムを作成して、各年度の分布を視覚化する

Bing Image Creatorで生成: Photo, Landscape in Summer season, quiet sense of wonder, hibiscus flowers

www.crosshyou.info

の続きです。

前回は各変数の度数や平均値などの統計量を調べました。

今回は変数のデータを視覚化してみます。

num: 事業場数のヒストグラムです。年度別にヒストグラムにしています。特段、大きな変化はなさそうです。

l_num: 事業場数の対数変換値も年度による違いは無い感じです。

quantity: 排水量【千m3/日】も年度による大きな違いは無いようです。

l_quantity: 排水量【千m3/日】の対数のヒストグラムも年度による大きな違いは無いように見えます。

fuka: 負荷: 【kg/日】のヒストグラムです。右の裾野が広く、はっきりとしたことは言えませんが、こちらも年度による大きな違いは無さそうです。

l_fuka: 負荷【kg/日】の対数のヒストグラムです。年度による大きな変化はないようです。

quality: 平均水質【mg/l】のヒストグラムです。こちらも年度による大きな違いは無いようです。

r_quality: 平均水質【mg/l】の平方根のヒストグラムです。年度による違いはなさそうです。

以上から、数値型の変数は年度による違いは無いようですね。

変数は、年度の他に、five: 生活環境項目5項目 という切り口もあります。この切り口は次回のポストで検証しましょう。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

 

都道府県別の水質汚濁物質排出量総合調査のデータ分析1- R に CSV ファイルのデータを読み込み、分析用のデータフレームを作成する。

Bing Image Creatorで生成: Photo, Spring Landscape, quiet flower garden
今回は、都道府県別の水質汚濁物質排出量総合調査のデータを分析してみようと思います。政府統計の総合窓口(www.e-stat.go.jp)からデータを取得します。

こんな感じのデータです。

これをExcelに出力します。

8行目に変数名を挿入しました。

これを、R に読み込んで分析します。

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

read_csv() 関数でCSVファイルのデータを読み込みます。

glimpse() 関数でデータの様子をみてみます。

各変数の意味は、

title : 表章項目
five : 生活環境項目5項目
year : 時間軸(年度)
pref : 都道府県
num : 事業場数
quantity : 排水量【千m3/日】
fuka : 負荷量【kg/日】
quality : 平均水質【mg/l】

です。

title から pref までが文字列のデータ、num から quality までが数値データです。

文字列データは度数を、数値データは平均値などを調べてみましょう。

title はすべて「汚濁負荷量」でした。なのでこの title は削除してもいいですね。

five は「BOD」「COD」「SS」「窒素含有量」「燐含有量」の5つの種類があって、どれも 235 の観測数があります。five はファクター型にしたほうがいいですね。

year は「2011年度」「2013年度」「2015年度」「2017年度」「2019年度」の5つの年度で、それぞれ 235 の観測数です。year もファクター型にしたほうがいいですね。

pref は都道府県です。各都道府県 25 の観測数です。これは、five が 5 種類で、year も 5 年なので、5 * 5 = 25 ということですね。

数値の変数は summary() 関数で様子をみましょう。

 

num は最小値は 37.0 で最大値は 1526 です。中央値は 272 で、平均値は 334.9 です。右の裾野が広い分布であることが推測されます。

quantity は最小値は 55.9 で最大値は 47765.9 です。中央値は 1651.4 で、平均値は 5596.2 です。num よりもさらに右の裾野が広い分布であることが推測されます。

fuka は最小値は 3.6 で最大値は 801757.6 です。中央値は 6846.2 で、平均値は 22285.5 です。これも右の裾野が広い分布であると推測されます。

quality は最小値は 0.000 で最大値は 199.5 です。中央値は 4.2 で平均値は 6.125 です。これも右の裾野が広そうな分布ですね。

数値のデータは、num, quantity, fuka は 0 より大きい値なので、対数変換した変数も分析には有効かもです。quality は 0 の値があるので、平方根をとった値がいいかもです。

これらを踏まえて、分析用のデータフレームを作成します。

それでは、df を summary() 関数で処理してみます。

l_num から r_quality の変数の中央値と平均値を見ると、中央値と平均値の値が同じくらいの水準になっていることが確認できます。

次回は、

www.crosshyou.info

です。

 

今回は以上です。