www.crosshyou.info

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

都道府県別の1住宅当たり延べ面積のデータの分析2 - R言語のデータフレームをいろいろ加工する。

 

www.crosshyou.info

 の続きです。

今回は、R言語のmutate関数を使って、mitsudo: 人口密度、per_capita17: 1人当りの県内総生産額(平成17年基準)、per_capita23: 1人当たりの県内総生産額(平成23年基準)、per_setai: 1世帯当たりの人数を作ります。

f:id:cross_hyou:20210228084827p:plain

 

summary関数でデータフレーム: df1 の概要を見てみます。

f:id:cross_hyou:20210228085453p:plain

yearID, year, prefID, pref, pop, area, mitsudoはNAがありませんが、その他はNAがありますね。それと、yearとprefIDは数字のコードですが、桁数を整えましょう。

f:id:cross_hyou:20210228090420p:plain

yearの最小値が1975で最大値が2018ですから、調査年度は1975年度から2018年度まであることがわかります。

今回の分析では、nobe: 都道府県別の1住宅当たりの延べ面積(m2) が分析対象ですから、nobeを中心にした分析用のデータフレームを作ります。

まず、NAの無い変数とnobeのデータフレームを作り、nobeがNAの調査年度を削除します。

f:id:cross_hyou:20210228091316p:plain

yearは1978年から2018年まであります。具体的にどの年があるのかtable関数でみてみます。

f:id:cross_hyou:20210228091515p:plain

1978年から1983年、1988年と5年ごとにあるのですね。

次は、per_capita17がどの年にデータがあるかを見てみます。

f:id:cross_hyou:20210228091924p:plain

per_capita17がある年は2001年から2014年です。

per_capita23はどうでしょうか?

f:id:cross_hyou:20210228092210p:plain

per_capita23は2006年から2015年です。2015年だけper_capita17が無い年です。

2015年はnobeも無いですから、per_capita17を使うのがいですね。

per_setaiはどうでしょうか

f:id:cross_hyou:20210228092833p:plain

per_setaiは1975年から5年ごとに2015年度まであります。nobeが1978年からなので2年ずれています。仕方がありませんね。per_setaiは2年ずらした値を使いましょう。

以上の分析でわかったことをもとにして、次のようなデータフレームを作ります。

必要な項目は、year: 調査年、pref: 都道府県名, nobe: 1住宅当たりの延べ面積(m2)、

mitsudo: 1ha当たり人口、per_capita17: 1人当たり県内総生産額(平成17年基準)、per_setai: 1世帯当たり人数、です。

per_setai以外は調査年がそろっているので、いったん全てを抜き出してから、na.omit関数でNA行を削除します。これをdf3 としましょう。

そして、df4としてyear, pref, per_setaiのデータフレームを作り、year - 2 で調査年度を揃えます。そして、inner_join関数でdf3とdf4を結合させて、df5としましょう。

f:id:cross_hyou:20210228094055p:plain

f:id:cross_hyou:20210228094539p:plain

f:id:cross_hyou:20210228094950p:plain

これで分析用のデータフレームを作りが完了です。yearは2003年、2008年、2013年と3つの調査年度(per_setaiは実際は2005年、2010年、2015年)があるデータフレームです。

今回は以上です。

次回は、

 

www.crosshyou.info

 です。

 

はじめから読むには、

 

www.crosshyou.info

 です。

都道府県別の1住宅当たり延べ面積のデータの分析1 - R言語のread_csv関数でデータを読み込む。

今回は都道府県別の1住宅当たり延べ面積(m2)のデータを分析しようと思います。

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

www.e-stat.go.jp

f:id:cross_hyou:20210227203753p:plain

47の都道府県を選びます。

f:id:cross_hyou:20210227203820p:plain

1住宅当り延べ面積に関係ありそうなデータとして、人口密度、経済規模、1世帯当たりの人数が関係あるかな、と思いました。なので、その算出に必要なデータを選びました。

f:id:cross_hyou:20210227204037p:plain

こういうファイルです。

これをR言語に読み込んで分析しようと思います。

まずは、とりあえずtidyverseパッケージを読み込んでおきます。

f:id:cross_hyou:20210227204820p:plain

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

f:id:cross_hyou:20210227205113p:plain

skip = 9で10行目から読み込むようにしています。

na = のところで***, -, X はNAとして読み込むようにしています。

locale = のところで、文字のエンコーディングがUTF-8だと指定しています。

str関数で読み込まれたデータを見てみましょう。

f:id:cross_hyou:20210227205409p:plain

問題なく読み込んだようです。

変数名を確認しておきます。

year: 調査年コード
yearID: 調査年
prefID: 地域コード
pref: 地域
pop: 総人口【人】
setai: 世帯数【世帯数】
area: 可住地面積【ha】
gdp17: 平成17年基準県内総生産額【百万円】
gdp23: 平成23年基準県内総生産額【百万円】
nobe: 1住宅当たり延べ面積【m2】

nobeが1住宅当たり延べ面積です。これが人口密度や県内総生産額や1世帯当たりの人数によって変わるのかどうかをこれから調べたいと思います。

今回は以上です。

 次回は、

 

www.crosshyou.info

 です。

都道府県別の健康寿命のデータの分析4 - R言語のlm関数で健康寿命を回帰分析する。経済的に豊かなほど、健康寿命は長い。

 

www.crosshyou.info

 の続きです。

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

まず、na.omit関数でNAのないデータフレームを作成します。

f:id:cross_hyou:20210227084243p:plain

yearとprefのlengthが47となっています。一つの調査年度だけということですね。

head関数ではじめの数行をみてみます。

f:id:cross_hyou:20210227084511p:plain

2010年度ですね。

gdp: 県内総生産額やdoctor: 医師数などの変数をpop: 総人口で割って、人口当りの数字に変換します。mutate関数で可能です。

f:id:cross_hyou:20210227085322p:plain

summary関数で平均値などを見てみます。gdpはそのまま人口で割りましたが、その他は1万人当りの数にしました。

f:id:cross_hyou:20210227085415p:plain

gdp_pop: 1人当りの県内総生産額の平均値は354万5千円です。

doctor_pop: 1万人当りの医師数の平均値は23.47人です。

dental_pop: 1万人当りの歯科医師数の平均値は7.164人です。

pharm_pop: 1万人当りの薬剤師数の平均値は19.85人です。

nurese_pop: 1万人当りの看護師数の平均値は82.99人です。

これらの変数間の相関係数を確認しておきます。

f:id:cross_hyou:20210227090511p:plain

一番相関の強い組み合わせはdoctot_popとnurse_popで、0.684です。

df3のデータフレームは、male: 男性の健康寿命、female: 女性の健康寿命と別々の変数になっていましたから、これをjumyouという名前の変数で一つに集めましょう。男性と女性を区別する変数名はgenderにしましょう。gather関数をつかってデータフレームを組み替えます。

f:id:cross_hyou:20210227092135p:plain

区別する変数名はkey = で、集める変数名はvalue = で、そしてどの変数を集めるかを指定します。うまくできているか見てみます。str関数でみてみましょう。

f:id:cross_hyou:20210227092300p:plain

genderのデータ型が文字列なので、ファクター型にfactor関数で変換しておきましょう。

f:id:cross_hyou:20210227092533p:plain

回帰分析するときに便利なbroomパッケージを読み込んでおきます。

f:id:cross_hyou:20210227092725p:plain

では、lm関数でjumyouを回帰分析してみます。

f:id:cross_hyou:20210227093015p:plain

lm関数でlm_1という回帰分析モデルを作りました。summary関数でモデルの概要をみます。

f:id:cross_hyou:20210227093224p:plain

p-valueが < 2.2e-16と0.05よりも小さいですので、有意なモデルです。

gdp_pop, dental_pop, gendermaleの係数のp値が0.05以下ですね。

gdp_popが1、つまり百万円上昇すると、健康寿命は0.29歳上昇するということです。

dental_popが1、つまり1万人当りの歯科医師数が1人増えると、健康寿命は0.2歳ぐらい低くなります。これは、歯科医師数 >>> 健康寿命という関係というよりは、健康寿命 >>> 歯科医師数という関係のような気がします。医師数や薬剤師数、看護師数も係数はみなマイナスですので、健康寿命が長いほど医療関係者は少なくて済む、ということだと思います。gendermaleが-3.3ということは、男性のほうが3.3歳女性よりも健康寿命が短いということですね。

broomパッケージを読み込みましたから、tidy関数でlm_1を表示してみましょう。

f:id:cross_hyou:20210227094504p:plain

tidy関数をつかって回帰分析モデルを出力すると、このように係数の信頼区間も表示してくれます。

今回は以上です。

 

はじめから読むには、

 

www.crosshyou.info

 です。

 

読書記録 - 「新型コロナの科学 パンデミック、そして共生の未来へ」黒木登志夫 著 (中公新書)

 

 厚生労働省が無症状の人へPCR検査をするのに反対していたことや、安倍晋三の取り巻きのダメダメな政策(アベノマスク、小中高の一斉休校)など、ほんとろくでもないことがわかった。

 

都道府県別の健康寿命のデータの分析3 - R言語でデータフレームの並び替え。山梨県が一番長く、大阪府が一番短い。

 

www.crosshyou.info

 の続きです。

今回はどの都道府県が健康寿命が長いのかを調べます。

2010年度の男性の健康寿命の長い上位の都道府県はどこでしょうか?

f:id:cross_hyou:20210223090502p:plain

愛知県と静岡県が71.7歳でトップです、千葉県、茨城県、山梨県、長野県と続きます。

2010年度の女性の健康寿命の長いところはどこでしょうか?

f:id:cross_hyou:20210223090744p:plain

静岡県と群馬県が75.3歳でトップです。愛知県、栃木県、沖縄県、島根県と続きます。

2013年度の男性の健康寿命が長いところはどこでしょうか?

f:id:cross_hyou:20210223091144p:plain

山梨県が72.5歳でトップです。沖縄県、静岡県、石川県、宮城県、福井県と続きます。

2013年度の女性の健康寿命の長いところはどこでしょうか?

f:id:cross_hyou:20210223091424p:plain

山梨県が75.8歳でトップです。静岡県、秋田県、宮崎県、群馬県、茨城県と続きます。

2013年度は男女ともに山梨県がトップでした。

2016年度の男性の健康寿命の長いところはどこでしょうか?

f:id:cross_hyou:20210223091721p:plain

山梨県が76.2歳でトップです。埼玉県、愛知県、岐阜県、石川県、静岡県と続きます。

2016年度の女性の健康寿命の長いところはどこでしょうか?

f:id:cross_hyou:20210223092037p:plain

愛知県と三重県が76.3歳でトップです。山梨県、富山県、島根県、栃木県と続きます。

こんどは、2010年度、2013年度、2016年度の平均値をとって上位の都道府県をみてみましょう。

f:id:cross_hyou:20210223092429p:plain

山梨県が72.3歳でトップです。愛知県、静岡県、千葉県、石川県、福井県と続きます。

健康寿命が下位のところもみてみます。

f:id:cross_hyou:20210223092732p:plain

高知県が70.2歳で一番短いです。青森県、徳島県、大阪府、愛媛県、岩手県と続きます。

女性のほうもみてみましょう。2010年度、2013年度、2016年度の平均の健康寿命の上位はどこでしょうか?

f:id:cross_hyou:20210223093146p:plain

山梨県が75.5歳でトップです。山梨県は男性も女性もトップですね。静岡県、愛知県、群馬県、栃木県、茨城県と続きます。

下位の都道府県も見てみましょう。

f:id:cross_hyou:20210223093524p:plain

広島県が73.0歳で一番短いです。大阪府、滋賀県、徳島県、京都府、兵庫県と続きます。近畿の府県が目立ちます。

 

最後に男性、女性も併せた2010年度、2013年度、2016年度の平均値もみてみます。

まずは上位の都道府県から。

f:id:cross_hyou:20210223094028p:plain

山梨県が73.9歳でトップです。静岡県、愛知県、茨城県、群馬県、福井県と続きます。

下位の都道府県はどこでしょうか?

f:id:cross_hyou:20210223094402p:plain

大阪府が71.8歳で一番短いです。徳島県、広島県、京都府、高知県、兵庫県と続きます。

今回は以上です。

次回は、

 

www.crosshyou.info

 です。

はじめから読むには、

 

www.crosshyou.info

 です。

都道府県別の健康寿命のデータの分析2 - 健康寿命は女性のほうが長く、年を経るごとに伸びている。

 

www.crosshyou.info

 の続きです。

今回は調査年度別の健康寿命の値を見てみます。

f:id:cross_hyou:20210221085044p:plain

R言語のgroup_by関数で調査年度別にグループ化してから、summarise関数の中でmean関数で平均値、sd関数で標準偏差、length関数でデータ数、qt関数などで信頼区間を計算しています。

average_mが男性の健康寿命ですが、2010年度は70.4, 2013年度は71.2, 2016年度は72.0と伸びていることがわかります。

average_fが女性の健康寿命です。こちらも73.7, 74.4, 74.9 と年度を経るごとに伸びていますね。

グラフでみてみましょう。

まずは男性の健康寿命です。

f:id:cross_hyou:20210221085548p:plain

f:id:cross_hyou:20210221085604p:plain

geom_errorbar関数とgeom_point関数で信頼区間と平均値の値をグラフにしています。

信頼区間のバーが重なっていませんから、調査年度によって健康寿命の平均値は有意に違うことがわかります。

一応、aov関数とsummary関数で確認しておきます。

f:id:cross_hyou:20210221090457p:plain

p値は2e-16よりも小さいことがわかります。

女性の健康寿命の信頼区間のグラフを描きましょう。

f:id:cross_hyou:20210221090639p:plain

f:id:cross_hyou:20210221090653p:plain

女性も男性と同じように、年度を経るごとに健康寿命が延びていて、信頼区間が重なっていないですね。

こちらもaov関数とsummary関数でANOVA分析をします。

f:id:cross_hyou:20210221090954p:plain

p値が3.22e-12と0.05よりも小さいです。こちらもyearによってfemale: 女性の健康寿命は有意に違うことが確かめられました。

最後に男性と女性の健康寿命の信頼区間のグラフを合わせて描いてみます。

f:id:cross_hyou:20210221091156p:plain

f:id:cross_hyou:20210221091214p:plain

男性と女性の健康寿命の信頼区間は重なっていないですね。男性と女性でも有意に違うことがわかります。

男性の健康寿命の平均値と女性の健康寿命の平均値が有意に違うかどうかをvar.test関数で分散に違いがあるとはいえないことを確認し、t.test関数で検定します。

f:id:cross_hyou:20210221091608p:plain

var.test関数の結果はp-value = 0.6692と0.05よりも大きいので両者の分散に違いがあるとはいえないです。

t.test検定の結果は、p-value < 2.2e-16と0.05よりも大きいので両者の平均値が同じではないことがいえます。

今回は以上です。

次回は、

 

www.crosshyou.info

 です。

はじめから読むには、

 

www.crosshyou.info

 です。

 

都道府県別の健康寿命のデータの分析1 - R言語でデータを読み込む。2016年度の熊本県のデータが欠損している。

今回は都道府県別の健康寿命のデータについて調べてみようと思います。

データはいつものように、政府統計の総合窓口e-statから取得します。

データ表示 | 都道府県データ | 社会・人口統計体系 | 地域から探す | 政府統計の総合窓口 (e-stat.go.jp)

f:id:cross_hyou:20210220170648p:plain

地域は47度道府県を選択しました。

f:id:cross_hyou:20210220170806p:plain

データは健康寿命の他に、総人口、県内総生産額、医師数、歯科医師数、薬剤師数、看護指数を選択しました。

f:id:cross_hyou:20210220171007p:plain

こういうCSVファイルです。9行目に変数名を挿入しています。

year: 調査年度

pref: 都道府県名

pop: 総人口(人)

gdp: 県内総生産額(百万円)

male: 男性の健康寿命

female: 女性の健康寿命

doctor: 医師数(人)

dental: 歯科医師数(人)

pharm: 薬剤師数(人)

nurse: 看護師数(人)

です。

このファイルをR言語で読み込みます。

まず、tidyverseパッケージを読み込んで、read_csv関数を使います。

f:id:cross_hyou:20210220172057p:plain

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

f:id:cross_hyou:20210220172406p:plain

まず、読み込みたいファイル名を指定して、skip = 8 で8行はスキップして9行目から読み込みます。na = c("***", "-", "X") で***, -, X はNAとして読み込みます。

locale = locale(encoding = "UTF-8")でエンコードをUTF-8だと指定しています。

健康寿命がNAの行はいらないので、filter関数でフィルターします。

f:id:cross_hyou:20210220173000p:plain

summary関数でdf2を確認します。

f:id:cross_hyou:20210220173239p:plain

maleは最小値が68.95で最大値が73.21で平均値が71.22です。

femaleは最小値が72.37で最大値が76.32で平均値が74.35です。

nrow関数でdf2の行数を確認しておきましょう。

f:id:cross_hyou:20210220173703p:plain

140行ということは3年分のデータでしょうかね。47 * 3 = 141 なので1つだけデータが無かった都道府県がありますね。どこでしょうか?

f:id:cross_hyou:20210220174005p:plain

group_by関数で都道府県ごとにグループ化して、summarise関数とn関数でデータの数を数えます。arrange関数でデータの数の少ない順に並び替えて、head関数ではじめの6行だけ表示しています。

熊本県がデータ数が2です。1年データがなかった年があったということですね。

どの年が無かったのかも確認しておきます。

f:id:cross_hyou:20210220174349p:plain

2016年度が46個のデータです。2016年度の熊本県のデータが無いということですね。

今回は以上です。