www.crosshyou.info

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

人口の推移と株価の関係の分析2 - 神奈川県は男性比率が高く、長崎県は低い。東京都は外国人比が高く、徳島県は低い

 

www.crosshyou.info

 の続きです。

今回は各都道府県の男女比率、日本人比率を見てみようと思います。

まず、前回作成したワーキングデータ(wd)のサマリーを確認します。

summary関数です。

f:id:cross_hyou:20190504153540j:plain

今回は、男女比率(M/F)と日本人比率(J/T)を計算して、大きい順、小さい順に表示しようと思います。

f:id:cross_hyou:20190504154203j:plain

MFが男女比率ですが、最低が0.8740で最高が1.0567です。男性がかなり少ない都道府県がありますね。JTは日本人比率です。最低が0.9581で最大が1.0000です。外国人がほとんどいない都道府県があります。

order関数を使って並び替えてみます。

f:id:cross_hyou:20190504154554j:plain

2008年の長崎県が0.8740260で最低の男女比率です。女性100人に対して男性87人です。長崎と鹿児島県ですね。

rev関数をorder関数に使って大きい順に並び替えてみます。

f:id:cross_hyou:20190504154848j:plain

上位10は全部神奈川県ですね。1975年の神奈川県が一番男女比率が高く、1.056737です。女性100人に対して、男性が106人ですね。

日本人比率の小さい順に表示します。

f:id:cross_hyou:20190504155148j:plain

2015年の東京都が一番日本人比率が低いです。0.9580618です。約4%は外国人ということですね。東京都、大阪府、愛知県、千葉県、京都府があります。

日本人比率の大きい順に表示します。

f:id:cross_hyou:20190504155525j:plain

徳島県が1.000000で日本人比率最高です。ほとんど外国人はいないということですね。

全国だけのデータにして、男女比率、日本人比率の推移を見てみましょう。

f:id:cross_hyou:20190504155939j:plain

まず、subset関数で全国だけのデータにします。これで、plot関数でグラフを描きます。

f:id:cross_hyou:20190504160134j:plain

f:id:cross_hyou:20190504160144j:plain

男性比率は2010年ぐらいは低下してきて、その後は横ばいという動きです。

f:id:cross_hyou:20190504160436j:plain

f:id:cross_hyou:20190504160453j:plain

日本人比率も低下してきていますね。2015年、2010年、2005年、2000年と五年ごとに比率の低い年が現れます。なんでかな?

最後のrm関数で分析用データ(ad)を消去して、今回は終わります。

f:id:cross_hyou:20190504161042j:plain

 次回は

 

www.crosshyou.info

 

です。

今回のR言語のコードです。


# ワーキングデータ(wd)のサマリー
summary(wd)

# 分析用データ(ad)の作成
ad <- wd # wdのデータをadにコピー
ad$MF <- ad$M / ad$F # M(男性人口) / F(女性人口)
ad$JT <- ad$J / ad$T # J(日本人人口) / T(総人口)
ad <- subset(ad, select = c(Year1, Pref2, MF, JT)) # 必要な変数だけを選択
summary(ad)

# MFの小さい順
head(ad[order(ad$MF), ], 10)

# MFの大きい順
head(ad[rev(order(ad$MF)), ], 10)

# JTの小さい順
head(ad[order(ad$JT), ], 10)

# JTの大きい順
head(ad[rev(order(ad$JT)), ], 10)

# adを全国だけにする。
ad <- subset(ad, subset = (Pref2 == "全国"))
summary(ad)

# MFの推移
plot(ad$Year1, ad$MF, type = "b")

# JTの推移
plot(ad$Year1, ad$JT, type = "b")

# 分析用データ(ad)の消去
rm(ad)

人口の推移と株価の関係の分析1 - R言語でデータの整理(subset関数やmerge関数)

e-Stat(政府統計の総合窓口)のレイアウトが令和になって変更になりました。

f:id:cross_hyou:20190504112145j:plain

今回は右下の「地域」をクリックしてみます。

f:id:cross_hyou:20190504112220j:plain

クリックすると、上図のような画面になります。データ表示をクリックしてみます。

f:id:cross_hyou:20190504112302j:plain

都道府県別の人口を選択して、データを表示します。

f:id:cross_hyou:20190504112343j:plain

このようなデータですね。ダウンロードします。

f:id:cross_hyou:20190504112424j:plain

こんなファイルです。10行目に私が独自の変数名を付けました。

これをread.csvファイルでR言語で読み取りましょう。

f:id:cross_hyou:20190504113230j:plain

株価と人口の関係を調べたいので、株価のファイル、も読込みます。

株価のファイルは下図のようなものです。

f:id:cross_hyou:20190504113522j:plain

これもread.csv関数で読込みます。6行目から読み込むので、skip = 5 としてやります。

f:id:cross_hyou:20190504113840j:plain

株価のデータでは、Timeという変数が西暦を表していて、人口のデータでは、Year1が西暦を表していますが、西暦を百万倍して10万を足した数になっています。これを西暦に直します。

f:id:cross_hyou:20190504114510j:plain

上図のように、うまく変換できました。

次は、merge関数を使って、wdとkabukaを合体させます。

f:id:cross_hyou:20190504115216j:plain

kabukaにYear1という名前で西暦を表す変数を作ってやり、Year1をキーにしてwdとkabukaをmerge関数で統合しました。head関数で始めの数行を表示していますが、1975年がwdは複数行あり、kabukaでは1行だけですが、ちゃんとkabukaのデータがどの1975年にも入っています。

summary関数で基本統計量を表示します。

f:id:cross_hyou:20190504115621j:plain

f:id:cross_hyou:20190504115652j:plain

ここで、分析に必要な変数だけにしておきましょう。必要な変数は、Year1, Pref2, T, M, F, J, JM, JF, KabukaとKabuka1Yです。subset関数を使います。

f:id:cross_hyou:20190504120335j:plain

これでデータの整理は終わりました。

wd, ワーキングデータは、2064の観測と10の変数があります。このうち、KabukaとKabuka1Yがresponse(被説明変数)で、残りがexplanatory(説明変数)です。

1975年から2017年までのデータで、全国と47都道府県のデータです。
Tが総人口、Mが男の総人口、Fが女の総人口、Jが日本人の総人口、JMが男の日本人人口、JFが女の日本人人口です。なので、TとJの差が外国人ということですね。KabukaはTopixの値、Kabuka1Yは1年後の騰落です。1.1だと10%上昇した、ということですね。

これらの人口のデータで株価を説明できるかどうかをこれから調べていきたいと思います。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

今回のR言語のコードです。

# ファイルの読込み オリジナルデータ = od
od <- read.csv("jinkou.csv", skip = 9, na.strings = c("***", "-", "X"))
str(od)
head(od)
summary(od)

# 株価データの読込み
kabuka <- read.csv("KABUKA_YEARLY.csv", skip = 5)
str(kabuka)
head(kabuka)
summary(kabuka)

# オリジナルデータのYear1を4桁の西暦に直す
wd <- od # オリジナルデータ(od)をワーキングデータ(wd)にコピー
wd$Year1 <- (wd$Year1 - 100000) / 1000000 # 4桁の西暦に変換
head(wd$Year1) # 変換できたか確認

# wdとkabukaの統合
kabuka$Year1 <- kabuka$Time # Timeと同じデータでYear1という変数をkabukaに追加
wd <- merge(wd, kabuka, by = "Year1") # Year1をキーにしてwdとkabukaを統合
str(wd)
head(wd)
summary(wd)

# 必要な変数だけにする
wd <- subset(wd, select = c(Year1, Pref2, T, M, F, J, JM, JF, Kabuka, Kabuka1Y))
str(wd)
head(wd)
summary(wd)

 

読書記録 - 「統計でウソをつく法 - 数式を使わない統計学入門」

 

統計でウソをつく法―数式を使わない統計学入門 (ブルーバックス)

統計でウソをつく法―数式を使わない統計学入門 (ブルーバックス)

 

 私が生まれる前に出版された本です。

平均値が算術平均なのか中央値なのか?という現在ではあまり有効でない記述もありましたが、グラフでウソをつく法などは参考になります、というか昔と全然変わっていないなと思いました。

最終章の統計のウソを見破る五つのカギは心に留めておきたいです。

・誰がそう言っているのか?(統計の出所に注意)

・どういう方法で分かったのか?(調査方法に注意)

・足りないデータはないか?(隠されている資料に注意)

・いっていることが違ってやしないか?(問題のすりかえに注意)

・意味があるかしら?(どこかおかしくないか?)

 

東証一部の規模別・業種別PERとPBRのデータの分析9 - R言語で1社当たりのIncomeとNetAsset

 

www.crosshyou.info

 の続きです。

今回は1社当たりのIncomeとNetAssetの推移を調べてみます。まずは1社当たりのIncome, NetAssetの変数を作成します。

f:id:cross_hyou:20190502162913j:plain

MedianとMeanの値が離れていますね。単位は億円なので、最大の赤字が865億円、最大の黒字が2576億円、平均が216億円、中央値が129億円です。hist関数でヒストグラムを確認します。

f:id:cross_hyou:20190502163132j:plain

f:id:cross_hyou:20190502163143j:plain

だいたい100億円以内のところに集中していますね。

NetAssetはどうでしょうか?

f:id:cross_hyou:20190502163652j:plain

最小は363億円、最大は2兆6264億円、平均値は3244億円、中央値は1988億円です。こちらもhist関数でヒストグラムを描いてみます。

f:id:cross_hyou:20190502164035j:plain

f:id:cross_hyou:20190502164047j:plain

右のすそ野が広い分布ですね。

33業種の中で一番1社当たりの利益が大きい業種はどこでしょうか?

まず、Levelが5だけに絞って、Income1で業種ごとの平均値を出し、小さい順に表示します。

f:id:cross_hyou:20190502165232j:plain

Marine,海運が一番Income1が低く、1社当たり118億円の赤字です。Hoken、保険が一番大きく、1社当たり896億円です。

NetAsset1はどうでしょうか?

f:id:cross_hyou:20190502165617j:plain

Suisan, 農林・水産が一番小さく、1社当たり620億円、Hokenが一番大きく、1社当たり1兆5906億円です。

今回は以上です。

次回は

 

www.crosshyou.info

 

です。

今回のR言語のコードです。


# 1社当たりのIncomeの作成
df$Income1 <- df$Income / df$Number
summary(df$Income1)

# Income1のヒストグラム
hist(df$Income1)

# 1社当たりのNetAssetの作成
df$NetAsset1 <- df$NetAsset / df$Number
summary(df$NetAsset1)

# NetAsset1のヒストグラム
hist(df$NetAsset1)

# 33業種別のIncme1
wdf <- df[df$Level == 5, ] # 作業用のデータフレーム、wdfを作成
wdf <- tapply(wdf$Income1, wdf$Type, mean, na.rm = TRUE) # 業種別のIncome1の平均値
sort(wdf) # 小さい順に表示
rm(wdf) # wdfを消去

# 33業種別のNetAsset1
wdf <- df[df$Level == 5, ] # 作業用のデータフレーム、wdfを作成
wdf <- tapply(wdf$NetAsset1, wdf$Type, mean, na.rm = TRUE) # 業種別のNetAsset1の平均値
sort(wdf) # 小さい順に表示
rm(wdf) # wdfを消去

東証一部の規模別・業種別PERとPBRのデータの分析8 - R言語で時系列チャートを作成

 

www.crosshyou.info

 の続きです。

今回は、YearとMonthを合わせて、Timeという変数を作ろうと思います。

というのもstr関数でおおもとのデータフレーム、dfを確認すると、

f:id:cross_hyou:20190430164550j:plain

となっていて、YearとMonthが別々になっているので、横軸を時間にして縦軸をPBRとかでグラフを描くのに不便だからです。

Time = Year + (Month - 0.5)/12 という計算式で作成します。

f:id:cross_hyou:20190430165203j:plain

これでX軸をTimeにして、Y軸を様々な変数にしてチャートが作成できます。

まずは、NumberをY軸にしましょう。

f:id:cross_hyou:20190430165952j:plain

f:id:cross_hyou:20190430170008j:plain

col = df$Levelとして、Levelごとに色を分けてグラフにしました。

全般に右肩上がりですね。

次は、PERを描いてみます。

f:id:cross_hyou:20190430170901j:plain

f:id:cross_hyou:20190430170915j:plain

あら。。。Level5だけしか見えないですね。。Level5を除いてグラフにしましょう。

f:id:cross_hyou:20190430171313j:plain

f:id:cross_hyou:20190430171331j:plain

2014年の途中からPERの分布の様子に違いがありますね。

PBRもLevel5を除いてグラフにしてみます。

f:id:cross_hyou:20190430171834j:plain

f:id:cross_hyou:20190430171846j:plain

PBRは14年の途中で分布の様子が変わったということはないですね。

Incomeはどうでしょうか?

f:id:cross_hyou:20190430172209j:plain

f:id:cross_hyou:20190430172226j:plain

Incomeも2014年の途中から水準がバーンと上がっていますね。

NetAssetはどうでしょうか?

f:id:cross_hyou:20190430172524j:plain

f:id:cross_hyou:20190430172538j:plain

こんなグラフになりました。

今回は以上です。
次回は

 

www.crosshyou.info

 

 

です。

 

今回のR言語のコードです。


# dfをstr関数で確認
str(df)

# Timeという変数を作成
df$Time <- df$Year + (df$Month - 0.5) / 12
head(df$Time)

# Y軸をNumberにしたチャート
plot(df$Time, df$Number, pch = 21, col = df$Level,
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

# Y軸をPERにしたチャート
plot(df$Time, df$PER, pch = 21, bg = df$Level,
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

# Y軸をPERにしたチャート(Level5を除く)
plot(df$Time[df$Level != 5], df$PER[df$Level != 5],
pch = 21, bg = df$Level[df$Level != 5],
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

# Y軸をPBRにしたチャート(Level5を除く)
plot(df$Time[df$Level != 5], df$PBR[df$Level != 5],
pch = 21, bg = df$Level[df$Level != 5],
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

# Y軸をIncomeにしたチャート(Level5を除く)
plot(df$Time[df$Level != 5], df$Income[df$Level != 5],
pch = 21, bg = df$Level[df$Level != 5],
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

# Y軸をNetAssetにしたチャート(Level5を除く)
plot(df$Time[df$Level != 5], df$NetAsset[df$Level != 5],
pch = 21, bg = df$Level[df$Level != 5],
main = "Level 黒:1, 赤:2, 緑:3, 青:4, 水色:5")

 

東証一部の規模別・業種別PERとPBRデータの分析7 - R言語でヒストグラムを描く

 

www.crosshyou.info

 の続きです。

今回は33業種別のデータで、各変数のヒストグラムを描いてみます。

head関数で基になるデータフレームの始めの15行を表示します。

f:id:cross_hyou:20190430114445j:plain

33業種はLevelが5ですから、まずLevelが5だけのデータフレームを作成します。

f:id:cross_hyou:20190430114734j:plain

まずは、Number、会社数のヒストグラムです。hist関数です。

f:id:cross_hyou:20190430115149j:plain

f:id:cross_hyou:20190430115203j:plain

次は、PERです。

f:id:cross_hyou:20190430115359j:plain

f:id:cross_hyou:20190430115412j:plain

あらら、よくわからないヒストグラムになってしまいましたね。大きな値のPERがあるためでしょう。summary関数で見てみましょう。

f:id:cross_hyou:20190430115620j:plain

最大値で875.70というのがあるからですね。PERが50以下の値だけでヒストグラムを描いてみましょう。

f:id:cross_hyou:20190430115908j:plain

f:id:cross_hyou:20190430115921j:plain

次はPBRのヒストグラムです。

f:id:cross_hyou:20190430120120j:plain

f:id:cross_hyou:20190430120134j:plain

次は、Incomeです。

f:id:cross_hyou:20190430120327j:plain

f:id:cross_hyou:20190430120341j:plain

最後はNetAssetです。

f:id:cross_hyou:20190430120518j:plain

f:id:cross_hyou:20190430120530j:plain

Number, PER, PBR, Income, NetAsset、この5つの変数でバラツキが一番大きい変数は何でしょうか?変動係数を計算してみましょう。変動係数は、標準偏差÷平均値です。

apply関数を使って5つの変数の変動係数をいっぺんに計算しましょう。

f:id:cross_hyou:20190430121856j:plain

こうしてみるとPBRが一番バラツキが小さく、以下、Number、NetAsset、PER、Incomeの順番でバラツキが大きくなっていくことがわかります。

5つの変数間の相関関係はどうでしょうか?cor関数で相関係数を算出してみます。

f:id:cross_hyou:20190430122418j:plain

cor関数を使う前に、na.omit関数でNAのある行を削除しています。

NumberとIncome, NetAssetが以外にも0.5以上の相関係数です。あ、以外でもなんでもないですね。会社数が多ければそれだけ利益や総資産は大きくなりますね。

一社当たりのIncome, NetAssetを計算してみましょう。

f:id:cross_hyou:20190430123033j:plain

この一社当たりのIncome, NetAssetのヒストグラムも描いてみましょう。

まずは、Income1です。

f:id:cross_hyou:20190430123250j:plain

f:id:cross_hyou:20190430123301j:plain

NetAsset1のヒストグラムも描いてみます。

f:id:cross_hyou:20190430123549j:plain

f:id:cross_hyou:20190430123602j:plain

Income1とNetAsset1の変動係数も計算しましょう。

f:id:cross_hyou:20190430125247j:plain

Income1, NetAsset1ともにIncome, NetAssetよりもバラツキは小さくなっています。

変数間の相関係数を見てみましょう。

f:id:cross_hyou:20190430125557j:plain

NumberとIncome1, NetAsset1の相関はマイナス0.2ぐらいとなりました。

今回は以上です。

次回は

 

www.crosshyou.info

 

です。

 

 今回のR言語のコードです。

# はじめの15行を表示
head(df, 15)

# 33業種だけのデータフレームを作成
df7 <- df[df$Level == 5, ]
head(df7, 15)

# Numberのヒストグラム
hist(df7$Number)

# PERのヒストグラム
hist(df7$PER)

# PERのサマリー
summary(df7$PER)

# 50以下のPERのヒストグラム
hist(df7$PER[df7$PER <= 50])

# PBRのヒストグラム
hist(df7$PBR)

# Incomeのヒストグラム
hist(df7$Income)

# NetAssetのヒストグラム
hist(df7$NetAsset)

# 変動係数の計算
apply(df7[ , c(5:9)], 2, sd, na.rm = TRUE) /
apply(df7[ , c(5:9)], 2, mean, na.rm = TRUE)

# 5つの変数間の相関関係
df8 <- na.omit(df7) #df8は33業種でNAの無いデータフレーム
round(cor(df8[ , c(5:9)]), 3)

# 一社当たりのIncomeとNetAsset
df8$Income1 <- df8$Income / df8$Number
df8$NetAsset1 <- df8$NetAsset / df8$Number

# Income1のヒストグラム
hist(df8$Income1)

# NetAsset1のヒストグラム
hist(df8$NetAsset1)

# Income1の変動係数
sd(df8$Income1) / mean(df8$Income1)

# NetAsset1の変動係数
sd(df8$NetAsset1) / mean(df8$NetAsset1)

# 変数間の相関係数
round(cor(df8[ , c(5:11)]), 3)

 

読書記録 - 「HOPE -- 都市・企業・市民による気候変動総力戦」

 

HOPE――都市・企業・市民による気候変動総力戦

HOPE――都市・企業・市民による気候変動総力戦

  • 作者: マイケル・ブルームバーグ,カール・ポープ
  • 出版社/メーカー: ダイヤモンド社
  • 発売日: 2018/10/18
  • メディア: Kindle版
  • この商品を含むブログを見る
 

 気候変動に対応するには、国家だけでなく都市・企業・市民が自発的に取り組まなくてはならない。そのためには、気候変動を儲かるビジネスにする仕組みを作らなければならない。

この本には世界各国の都市・企業・市民が気候変動問題にいかにして対応しているかの事例が豊富にあるが、残念ながら日本の都市・企業・市民についての言及が一切ない。

それと、マイケルブルームバーグは原子力発電推進派のようだが、福島の原子力発電所の事故とその後の地域住民の生活を知っているのだろうか?