crosshyou

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

県庁所在市・政令指定都市・東京都特別区の人口・面積・課税対象所得・一般行政職員人数の分析2 - 東京都中央区の人口と所得の伸び率はすごい。滋賀県大津市は面積拡大。

 

www.crosshyou.info

 の続きです。今回は、2005年度から2015年度の変化率を調べてみようと思います。

まずは面積の伸びを調べます。

f:id:cross_hyou:20190821181425j:plain

このように、2005年度の面積、2015年度の面積のベクトルを作成します。head関数ではじめの6つを表示しました。五十音順に並んでいるようですね。一応並びが同じか確認します。

f:id:cross_hyou:20190821181959j:plain

names(Area2005) == names(Area2015) でひとつひとつ同じか確認しています。同じだとTRUEで、違うとFALSEです。見ただけで全部TRUEだとわかりますが、sum関数でTRUEの数を数えています。74個なので全部TRUEですね。length関数でデータ個数を確認しています。74個です。これで市の順番がArea2005とArea2015で同じだと確認できました。伸び率を計算します。

f:id:cross_hyou:20190821182510j:plain

滋賀県大津市、24%も面積が増えています!面積が減っているところもありますね。

次は、人口を調べましょう。

f:id:cross_hyou:20190821183118j:plain

東京都中央区の人口が43%も伸びています!

次は、課税対象所得の伸びを調べます。

f:id:cross_hyou:20190821183933j:plain

東京都中央区、63%も伸びています!

一般行政職員人数を調べます。

f:id:cross_hyou:20190821184702j:plain

神奈川県相模原市は職員が4.6%増えています。そして、東京都中野区は25%も減少です!

4つの伸び率を前回作成した、ヒストグラム、箱ひげ図、小さい順グラフをいっぱつで描くsan関数で見える化してみます。

まずは人口伸び率

f:id:cross_hyou:20190821185050j:plain

f:id:cross_hyou:20190821185102j:plain

伸び率の高いほうに外れ値がありますね。

面積はどうでしょうか?

f:id:cross_hyou:20190821185314j:plain

f:id:cross_hyou:20190821185335j:plain

面積も伸び率の高いほうに外れ値があります。

課税対象所得の伸び率を見てみます。

f:id:cross_hyou:20190821185605j:plain

f:id:cross_hyou:20190821185624j:plain

課税所得も伸び率の高いほうに外れ値があります。

一般行政職員人数の伸び率も高いほうに外れ値があるでしょうか?

f:id:cross_hyou:20190821190149j:plain

f:id:cross_hyou:20190821190135j:plain

行政職員数の伸び率には外れ値はありませんでした。グラフになぜか赤い線が無いです。平均値、どうしたのかな?

f:id:cross_hyou:20190821190418j:plain

ほとんど同じなのでグラフでは重なってしまったんですね。

今回は以上です。

 

県庁所在市・政令指定都市・東京都特別区の人口・面積・課税対象所得・一般行政職員人数の分析1 - 神奈川県横浜市は大きい

県庁所在市・政令指定都市・東京都特別区の人口・面積・課税対象所得・一般行政職員人数の分析をします。

まずは、政府統計の総合窓口(www.s-stat.go.jp)からデータを取得します。

f:id:cross_hyou:20190817115601j:plain

このように、特別区、県庁所在市、政令指定都市を指定します。74地域あります。

f:id:cross_hyou:20190817115707j:plain

データ項目として、総人口(人)、総面積(ha)、課税対象所得(千円)、一般行政部門職員数(人)を選択して、CSVファイルにダウンロードします。

f:id:cross_hyou:20190817115843j:plain

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

f:id:cross_hyou:20190817115919j:plain

こうなりました。Yearは年度ですが、2000年、2005年、2010年、2015年の4年のデータがあるようですね。不要なファクタ水準を整理します。

f:id:cross_hyou:20190817120245j:plain

あ、2000年度だけ観測数が73ですね。2000年度を削除したデータフレームを作成します。

f:id:cross_hyou:20190817120500j:plain

さきほどと同じようにして、Yearの2000年度という水準を削除します。

f:id:cross_hyou:20190817120807j:plain

これで、欠損の無いデータフレームができました。

人口の分布を見てみましょう。2015年の最新の人口のヒストグラムや箱ひげ図、小さい順に並べたグラフを描きます。まずは、関数を作成します。

f:id:cross_hyou:20190817122806j:plain

みっつグラフを描くので、san()という関数名で定義しました。それぞれのグラフに赤線で平均値、青線で中央値を引くようにしました。

それでは、2015年度の人口(Popu)をグラフにします。

f:id:cross_hyou:20190817123249j:plain

f:id:cross_hyou:20190817123303j:plain

人口はヒストグラムを見ると、右側に裾野が広がっている分布ですね。

面積はどうでしょうか?

f:id:cross_hyou:20190817123619j:plain

f:id:cross_hyou:20190817123635j:plain

面積も人口ほどではないですが、右の裾野が広がっています。

課税対象所得はどうでしょうか?

f:id:cross_hyou:20190817123953j:plain

f:id:cross_hyou:20190817124021j:plain


課税対象所得も前の二つと同じで右側に裾野が広がっています。

最後の一般行政職員数はどうでしょうか?

f:id:cross_hyou:20190817124434j:plain

f:id:cross_hyou:20190817124512j:plain

一般行政職員数も同じですね。

県庁所在市、政令指定都市、東京都特別区の合計74地域は規模にかなりの格差があることがわかりました。

それでは、それぞれのデータ項目の大きいところ、小さいところを見てみます。

f:id:cross_hyou:20190817125650j:plain

tapply関数で2015年度の地域別の平均値を出して、sort関数で並び替えました。2015年度は各地域一つの値しかありませんから平均値=その年度の値になりま。なので、平均値でなくても最小値でも最大値でも中央値でも同じです。東京都千代田区が一番人口が少なく5万8406人、神奈川県横浜市が一番多く372万4844人です。

面積はどうでしょうか?

f:id:cross_hyou:20190817130254j:plain

面積は東京都台東区が一番小さく1011haで、静岡県浜松市が一番広く15万5806haです。今回はtapply関数にmin関数を使いました。

課税対象所得はどうでしょうか?

f:id:cross_hyou:20190817130834j:plain

課税所得が少ないのは鳥取県鳥取市で、2141億7015万5千円です。一番多いのは神奈川県横浜市で、7兆0839憶9176万8千円です。

一般行政職員数をみます。

f:id:cross_hyou:20190817131626j:plain

職員数が一番少ないのは、東京都千代田区で840人です。一番多いのは大阪府大阪市で1万5097人です。

今回はここまでです。神奈川県横浜市は規模が大きいです。

都道府県別の国民医療費の分析3 - 人口密度を説明変数に加えて重回帰分析

 

www.crosshyou.info

 の続きです。

前回までの分析で、一人当りの医療費は、一人当り県内総生産がちいさいほど大きくなることがわかりました。今回は、人口密度を説明変数に加えて分析してみます。

f:id:cross_hyou:20190815192414j:plain

まずは、上のように、平均人口密度を表す変数(avgMits)を作成しました。sort関数で小さい順に並び替えましたが、北海道が人口密度は低く、東京都が高くなっています。当たり前ですね。

前回は東京都を分析からはずしましたが、今回は東京都も含めて分析します。

まず、一人当り医療費とそれぞれの散布図を描いてみます。

f:id:cross_hyou:20190815193240j:plain

f:id:cross_hyou:20190815193252j:plain

どちらも説明変数の値が大きくなるほど、一人当り医療費は下がる傾向が(無理やりですが)あるようです。狭いところに人がたくさんいるのは不健康なのでしょうね。

 

Statistics: An Introduction Using R by Michael J. Crawley(2014-11-24)

Statistics: An Introduction Using R by Michael J. Crawley(2014-11-24)

 

 この Statistics: An Introduction Using R by Michael J. Crawleyの本を参考にして分析します。

まずは、gam関数でgeneralized additive modelというのをするようです。

f:id:cross_hyou:20190815194002j:plain

f:id:cross_hyou:20190815194019j:plain

どうなんでしょうね。左の一人当り県内総生産は直線的な回帰曲線ですが、右の人口密度はカーブしていますね。

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

まずは、2乗項や交差項の入った複雑なモデルです。

f:id:cross_hyou:20190815195346j:plain

p-valueが.0004032なので有意なモデルですね。I(avgMits^2)は関係なさそうなので削除したmodel2を調べましょう。

f:id:cross_hyou:20190815195733j:plain

p-valueが0.0001462とさらに小さい値になりました。Adjusted R2も0.3542と改善しています。

切片以外の変数の係数のp値は0.05以下です。前回のavgHGDPだけで回帰したモデルよりも説明力(Adjusted R-squared)が大きくなっています。

avgHGDPもavgMitsも大きい値が外れ値っぽくなっていましたから、対数をとって同じように重回帰分析してみます。

f:id:cross_hyou:20190815200517j:plain

まずは対数にした変数を作成しました。

f:id:cross_hyou:20190815200739j:plain

対数で回帰したモデルでも、I(lnMits^2)はいらないようです。

f:id:cross_hyou:20190815201035j:plain

p値が0.0003877とmodel3の0.0003693よりも大きくなってしまいました。

anova関数でmodel3とmodel4で有意な違いがあるか調べます。

f:id:cross_hyou:20190815201246j:plain

p値が0.1226と0.05よりも大きいですから、model3とmodel4は有意な違いは無いということです。なのでmodel4を採用します。

model2とmodel4の残差プロットを描いてみます。

f:id:cross_hyou:20190815201744j:plain

f:id:cross_hyou:20190815201756j:plain

今回は以上です。

 

読書記録 - 「科学技術の現代史 - システム、リスク、イノベーション」佐藤靖 著 (中公新書)

 

科学技術の現代史-システム、リスク、イノベーション (中公新書 (2547))

科学技術の現代史-システム、リスク、イノベーション (中公新書 (2547))

 

 第二次世界大戦後の米国の科学技術の進歩の歩みが書いてある。

その時代時代での政府の方針が科学技術政策に反映される。

 

都道府県別の国民医療費の分析2 - R言語のlm関数で回帰分析。一人当り医療費と一人当り県内総生産の関係を調べる。

 

www.crosshyou.info

 の続きです。

前回は埼玉県、千葉県、神奈川県は一人当り医療費が少なく、高知県、長崎県、鹿児島県は一人当り医療費が多いことがわかりました。

今回は、一人当り医療費と一人当り県内総生産との関係を調べてみます。

まず、一人当り県内総生産を計算します。

f:id:cross_hyou:20190814192519j:plain

summary関数で平均値を調べると、372万6251円です。

次に、複数年度ある一人当り医療費、一人当り県内総生産の都道府県ごとに平均値を計算します。tapply関数を使います。

f:id:cross_hyou:20190814193035j:plain

plot関数で散布図を見てみます。

f:id:cross_hyou:20190814193235j:plain

f:id:cross_hyou:20190814193249j:plain

右端にポツンと一つはぐれプロットがありますね。一人当り県内総生産が突出して高い都道府県があるのですね。sort関数で並び替えて確認します。

f:id:cross_hyou:20190814193525j:plain

東京都が突出して一人当り県内総生産が大きいですね。

東京都を削除して散布図を描いてみます。

f:id:cross_hyou:20190814193853j:plain

f:id:cross_hyou:20190814193905j:plain

散布図はまんべんなく散らばっている感じですね。なんとなく、一人当り県内総生産が大きいほど、一人当り医療費は小さい感じですね。回帰分析をしてみます。

まずは、東京都を除外した変数を用意します。

f:id:cross_hyou:20190814194409j:plain

length関数でデータの観測数を確認しています。46なので一つ、東京都が除外されていることがわかります。

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

f:id:cross_hyou:20190814194649j:plain

p-valueは0.02855なので0.05よりも小さいですから有意なモデルです。

といってもR-squaredが0.1043ですから、説明力は10%ぐらいしかないです。

avgHGDP2の係数の符号はマイナスですから、やはり一人当り県内総生産が大きいほうが一人当り医療費は少ない、という関係です。

一人当り県内総生産が大きいということは、一人ひとりの生産額が大きい、つまり病気でない、つまり医療費は少ない、ということでしょうかね。

残差のグラフを描いてみます。

f:id:cross_hyou:20190814195259j:plain

f:id:cross_hyou:20190814195317j:plain

最後に散布図を回帰直線を重ねて描いてみます。

f:id:cross_hyou:20190814195619j:plain

f:id:cross_hyou:20190814195636j:plain

今回は以上です。

 

都道府県別の国民医療費の分析1 - 一人当りの医療費は埼玉県、千葉県、神奈川県が少なく、高知県、長崎県、鹿児島県が多い

今回は都道府県別の国民医療費の分析をします。

f:id:cross_hyou:20190810141635j:plain

政府統計の総合窓口(e-stat) www.e-stat.go.jp からデータを取得します。

47都道府県を選択します。

f:id:cross_hyou:20190810141727j:plain

総人口(人)、総面積(ha)、県内総生産額(百万円)、国民医療費(億円)を選択してデータをダウンロードします。

f:id:cross_hyou:20190810141841j:plain

こんな感じです。このファイルをR言語のread.csv関数で読み込んで分析します。

f:id:cross_hyou:20190810141940j:plain

2008年、2011年、2014年、2015年の4年分のデータがあるようです。

Yearはファクタですが、余計なファクタ水準があるので、削除します。

f:id:cross_hyou:20190810142408j:plain

全部の年度でデータの個数は47個ですから、全ての年度で47都道府県のデータがあります。

まずは、医療費の基本統計量を調べましょう。

summary関数をもう一度実行します。

f:id:cross_hyou:20190810145148j:plain

 最小値は1710憶円、最大値は4兆1433億円、平均値は8328憶円、中央値は5481憶円です。var関数で分散を、sd関数で標準偏差を算出しています。標準偏差は7785億円ぐらいです。

hist関数でヒストグラム、boxplot関数で箱ひげ図、sort関数で金額順に並び替えてからplot関数でグラフにしてみます。

f:id:cross_hyou:20190810145937j:plain

f:id:cross_hyou:20190810145953j:plain

abline関数で平均値の水準に赤い線を入れました。こうしてみると、医療費は、金額が大きい都道府県が全体の4分の1ぐらいあってそれらの都道府県が平均値を大きくしているようだとわかります。

f:id:cross_hyou:20190810150907j:plain

医療費が平均値未満のデータフレーム、dflowと平均値以上のデータフレーム、dfhighを作成してみました。

この2つのデータフレームで同じようにグラフを作成してみます。

f:id:cross_hyou:20190810151415j:plain

まず、3つのグラフを描く関数を自作しました。

それでは、平均値未満の都道府県の医療費のグラフです。

f:id:cross_hyou:20190810151842j:plain

f:id:cross_hyou:20190810151859j:plain

真ん中の箱ひげ図を見ると、外れ値が無くなっていることがわかります。自作関数もうまく動きました。

f:id:cross_hyou:20190810152159j:plain

f:id:cross_hyou:20190810152222j:plain

平均値以上の医療費のデータフレームでは、上方向の外れ値が3つあります。おそらく東京でしょうが、確認してみましょう。

f:id:cross_hyou:20190810152552j:plain

やはり、東京が医療費が多いですね。

医療費が少ない都道府県も確認しておきましょう。

f:id:cross_hyou:20190810152828j:plain

鳥取県が医療費が少ない県です。

一人当りの医療費で分析するほうがいいかもしれませんね。

f:id:cross_hyou:20190810153713j:plain

一人当りの医療費をHitoという変数名で作成しました。単位は円です。

最小値は、22万6426円、最大値は44万3925円、中央値は31万6738円、平均値は32万0295円です。

グラフでデータの分布を見てみます。

f:id:cross_hyou:20190810154058j:plain

f:id:cross_hyou:20190810154114j:plain

箱ひげ図を見ると、上に一つだけ外れ値がありますが、ヒストグラムや金額順のグラフを見ると、平均値周辺にデータが集まっていることがわかります。

一人当り医療費の多い都道府県、少ない都道府県はどこかみてみましょう。

f:id:cross_hyou:20190810155026j:plain

2015年度のデータでみると、埼玉県、千葉県、神奈川県が医療費が少ないです。

head(df2[order(df2$Year == "2015年度", ]$Hito), ])の仕組みを忘れないように書いておきます。

df2[df2$Year == "2015年度, ] で2015年度だけにします。

order(df2[df2$Year == "2015年度, ]$Hito) でHitoの小さい順の列を取得します。

df2[order(df2[df2$Year == "2015年度", ]$Hito), ]でHitoの小さい順に並びかえます。

head(df2[order(df2[df2$Year == "2015年度", ]$Hito), ])で始めの6行を表示します。

一人当り医療費の多い都道府県はどこでしょうか?

f:id:cross_hyou:20190810160436j:plain

高知県が一番多いです。長崎県、鹿児島県、山口県、大分県、北海道と続きます。

今回は以上です。

 

都道府県別のボランティア活動行動者率の分析4 - R言語のlm関数で重回帰分析をしてみたら単回帰分析になった。

 

www.crosshyou.info

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

反応変数は、ボランティア活動行動者率(VOLU)です。説明変数は人口(POP), 面積(AREA), 県内総生産(GDP)です。

前回の分析で、対数値をとったほうがよさそうだとわかりましたので、対数値を説明変数にします。

f:id:cross_hyou:20190808073819j:plain

p-valueは3.441e-06ですので有意なモデルです。しかし、どの変数のp値も0.05よりも大きいですね。とりあえず、log(POP):log(AREA):log(GDP)を削除したmodel2を調べましょう。

f:id:cross_hyou:20190808074152j:plain

p-valueは2.855e-06で有意です。model1とmodel2で大きな違いがあるかどうかanova関数でみてみます。

f:id:cross_hyou:20190808074337j:plain

p値は0.1641なので、二つのモデルに有意な違いは無い、ということです。

model2からlog(AREA):log(GDP)を削除したモデル、model3を調べましょう。

f:id:cross_hyou:20190808074711j:plain

p-valueが9.141e-07なので有意なモデルです。

model2とmodel3を比較します。

f:id:cross_hyou:20190808074910j:plain

p値が0.8274なので、model2とmodel3には有意な違いは無いです。

log(POP):log(GDP)を削除したmodel4を調べます。

f:id:cross_hyou:20190808075203j:plain

p-valueは3.567e-07なので有意なモデルです。

model3とmodel4をanova関数で比較します。

f:id:cross_hyou:20190808075409j:plain

p値が0.3977なので、二つのモデルに有意な違いは無いです。

log(POP):log(AREA)を削除したmodel5を調べます。

f:id:cross_hyou:20190808075813j:plain

p-value = 1.5e-07なので有意なモデルです。Intercept, log(POP), log(AREA)の係数のp値が0.05以下になりましたね。

model4とmodel5を比較します。

f:id:cross_hyou:20190808080807j:plain

p値が0.2802なので、二つのモデルに有意な違いはありません。

log(GDP)を削除したmodel6を調べます。

f:id:cross_hyou:20190808081146j:plain

p-valueは1.344e-07なので有意なモデルです。

model5とmodel6を比較します。

f:id:cross_hyou:20190808081357j:plain

p値は0.0796と0.05以上なので有意な違いは無いです。

さらに、log(AREA)を削除したmodel7を調べます。model7はlog(POP)だけが説明変数の単回帰モデルです。

f:id:cross_hyou:20190808081730j:plain

p-valueは9.204e-08なので有意です。

model6とmodel7を比較します。

f:id:cross_hyou:20190808082010j:plain

p値が0.07129なので有意な違いは無いです。

重回帰分析をしたつもりが、最終的には、log(POP)だけが説明変数の単回帰分析になってしまいました。

VOLU = 66.195 - 2.628 * log(POP)

という回帰式です。

VOLUとPOPの散布図に、回帰式の曲線を重ねてみます。

f:id:cross_hyou:20190808083330j:plain

f:id:cross_hyou:20190808083356j:plain

今回は以上です。