www.crosshyou.info

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

読書記録 - 「バックキャスト思考とSDGs/ESG投資」北川哲雄 編著

 

バックキャスト思考とSDGs/ESG投資

バックキャスト思考とSDGs/ESG投資

 

 バックキャスト思考というのがどういうものかはわからなかったが、SDGsやESG投資については理解できた。

SDGsについては、17のゴールばかりが有名だが、投資家はその下の169のターゲットについて考えを巡らせることが重要だとわかった。

 

上場外食企業の財務データ分析 - 主な上場外食企業を調べてみた。

今回は趣向を変えて、上場している外食企業の財務データを分析してみました。吉野家とかココイチとかすかいらーくとかですね。

日本取引所のホームページから上場企業の財務データがわかるので、それを使いました。

f:id:cross_hyou:20190603214557j:plain

こんな感じのデータです。これの通期決算のデータをExcelに手入力して、こんな感じにまとめました。

f:id:cross_hyou:20190603214949j:plain

Tickerは東証の4桁コードです。9861は吉野家HD、9887は松屋フーズ、7550はゼンショーHDです。

Yearは決算年、Salesは売上高、OPは営業利益、CPは経常利益、NIは純利益です。

www.fb-soken.comのページに乗っている企業の中から、私が行ったことのある企業を調べてExcelファイルにデータを打ち込みました。

R言語のread.csv関数で読み込みます。

f:id:cross_hyou:20190603215837j:plain

100の観測と6つの変数のデータフレームです。Tickerのデータ型がintで整数型になっているので、as.factor関数でファクタ型に変換しましょう。

f:id:cross_hyou:20190603220230j:plain

summary関数でサマリーを表示すると、平均値、中央値などではなく、各値の度数が表示されました。ファクタ型になっていることがわかります。何社のデータがあるのかな?length関数でみてみます。

f:id:cross_hyou:20190603220557j:plain

37社あることがわかります。

Sales、売上高が一番大きい企業はどこでしょうか?

order関数とrev関数とhead関数を使います。

f:id:cross_hyou:20190603220833j:plain

Tickerが7550の会社、ゼンショーHDが6076億7900万円で一番です。次は、3197のすかいらーくHDでその次が2702の日本マクドナルドHDです。

OP、営業利益の大きい会社はどこでしょうか?

f:id:cross_hyou:20190603221504j:plain

3197のすかいらーくHDが2017年に281億0300万円でいちばんです。次が2702の日本マクドナルドHDで250億4500万円です。3番はゼンショーHD(7550)です。この3社が外食業界のビッグ3ですかね?

経常利益、CPも同じかな?

f:id:cross_hyou:20190603222007j:plain

経常利益は2702の日本マクドナルドHDが256億4400万円で一番です。次が3197のすかいらーくHDで3番目が7550のゼンショーHDです。やっぱりこの3社ですね。

NI,純利益も同じでしょうか?

f:id:cross_hyou:20190603223009j:plain

NI(純利益)も2702の日本マクドナルドHDが240億2400万円でいちばんです。2番が3197のすかいらーくHD、3番が7550のゼンショーHDです。

営業利益率(営業利益 / 売上高)を計算してみましょう。

f:id:cross_hyou:20190603224957j:plain

新しいデータフレームを作成しました。OPMの大きい順に並び替えてみます。

f:id:cross_hyou:20190603225317j:plain

3085は、アークランドサービスHDです。これが14.17%で一番です。次は7611、これはハイデイ日高、3395、これはサンマルクHDです。これが3番です。アークランドサービスはとんかつの「かつや」、からあげの「からやま」肉めしの「岡むら屋」を展開している会社です。

売上高とOPMの散布図を描いてみます。plot関数です。

f:id:cross_hyou:20190603230202j:plain

f:id:cross_hyou:20190603230217j:plain

Salesの対数をとって散布図を描いてみます。

f:id:cross_hyou:20190603230447j:plain

f:id:cross_hyou:20190603230523j:plain

OPMとSalesに関係があるのか無いのか。。。

OPMという連続数値をSalesという連続数値とYearというファクター変数で説明するモデルを作りましょう。ANCOVA分析ですね!

Yearをas.factor関数でファクタにします。

f:id:cross_hyou:20190603231253j:plain

まず、OPMとlog10(Sales)の散布図をYearで色分けして描いてみます。

f:id:cross_hyou:20190603231651j:plain

f:id:cross_hyou:20190603231705j:plain

lm関数でANCOVA分析です。

f:id:cross_hyou:20190603232153j:plain

 

f:id:cross_hyou:20190603232208j:plain


一番下の行のp-valueを見ると、0.004933と0.05よりも小さい値なのでこのモデルは有意なモデルです。各変数のp値を見ると、Year2018とYear2019は0.05よりも大きいのでYearはいらないかもしれないですね。Yearなしのモデルを作って、Yearありのモデルをanova関数で比較します。

f:id:cross_hyou:20190603232838j:plain

 

p値は0.4395なので、Year無しのモデルでも変わりは無いということです。summary関数で確認します。

f:id:cross_hyou:20190603233222j:plain

p値は0.00125です。切片と、log10(Sales), I(log10(Sales)^2)の2つの係数のp値は0.05以下です。Salesの2乗項の係数の符号はマイナスですので、Salesはある程度大きくなると、OPMにはマイナスに作用してしまう、ということですね。

でも、このモデルのAdjusted R-squaredは0.1108ですから、OPMを11%しか説明していません。

CP-OPを計算して、この変数をモデルに加えてみます。CP-OPは経常利益 - 営業利益です。これがプラスならば金融収支はプラスということです。金融収支がプラスということは財性的に余裕がある、ということは仕入れなども余裕をもってできる、ということは営業利益率は上がる、という理屈です。

f:id:cross_hyou:20190603234058j:plain

p値が0.1673と0.05よりも大きいのでCOを加えても意味はなかったです。

一応、summary関数で確認しておきましょう。

f:id:cross_hyou:20190603234250j:plain

COの係数のp値は0.16726と0.05よりも大きいですね。

今回は以上です。

県内総生産額と交通事故件数のデータの分析2 - R言語で分析。県内総生産額当りの事故件数は東京都が一番少なく、佐賀県が一番多い。

 

www.crosshyou.info

 の続きです。

まず、データがどんなだったか、summary関数で確認します。

f:id:cross_hyou:20190601112623j:plain

47都道府県の10年間のデータです。

Prodが県内総生産額で、百万円単位です。

Acciが交通事故件数で、1件単位です。

Ratioが県内総生産額100万円当りの交通事故件数です。

まずは、年度ごとのRatioの平均値をtapply関数で算出しましょう。

f:id:cross_hyou:20190601113130j:plain

1975年度などNAがいっぱいですね。これは、Yearによけいなファクタ水準が残っていたからですね。余計なファクタ水準を削除しましょう。as.character関数でいったん文字列にしてから、as.factor関数で再度ファクタに戻します。

f:id:cross_hyou:20190601113453j:plain

これで、もういちどtapply関数をしてみます。

f:id:cross_hyou:20190601113640j:plain

2006年度は0.0018, 2007年度は0.0017...2014年度は0.0012, 2015年度は0.0011と年々減っていることがわかります。

同じように、tapply関数で都道府県ごとのRatioの平均値を算出してみます。

f:id:cross_hyou:20190601114028j:plain

都道府県の数が多くてどれが一番Ratioが高くて、どれが低いかわからないですね。

一旦結果をベクトルにしてsortで並び替えましょう。

f:id:cross_hyou:20190601114403j:plain

東京都が一番Ratioが低く、佐賀県がRatioが一番高いことがわかります。

今回は以上です。

ところで、今回から、結果の画像が少し変わったことにお気づきでしょうか?

今回から、RStudioで結果を表示しています。

 

県内総生産額と交通事故件数のデータの分析1- R言語で分析。交通事故は、県内総生産額10億円当り1.57件発生

政府統計の総合窓口、e-statのウェブページから、県別の県内総生産額と交通事故発生件数のデータを取得しました。

f:id:cross_hyou:20190529203203j:plain

こんな感じのデータです。このデータをR言語を使って分析してみようと思います。

まず、read.csv関数でデータをR言語の読込みます。

f:id:cross_hyou:20190529203927j:plain

str関数でデータ構造を確認すると、2021の観測で5つの変数があります。ただ、Skipは何も入っていないので後で削除します。

head関数ではじめの数行を表示しました。Yearが年度、Prefが都道府県、Prodが県内総生産額、Acciが交通事故件数です。

まず、Skipを削除します。

f:id:cross_hyou:20190529204330j:plain

subset関数でSkipを削除し、summary関数で各変数のサマリーを表示しました。ProdにNAが1551個もあります。これらをna.omitで削除しましょう。

f:id:cross_hyou:20190529204518j:plain

NAが削除されました。Prefを見ると、各県は10回ありますので、10年間のデータだとわかりますね。

ProdとAcciの散布図を描いてみます。plot関数です。

f:id:cross_hyou:20190529204758j:plain

f:id:cross_hyou:20190529204807j:plain

生産額が大きいほど、交通事故件数が多い傾向があるようです。あたりまえと言ったらあたりまえですね。

ProdとAcciの変動係数を計算してみます。

f:id:cross_hyou:20190529205101j:plain

生産額のほうがバラツキが大きいですね。

交通事故件数 / 県内生産額 を計算して、生産額当りの交通事故件数を調べてみましょう。

f:id:cross_hyou:20190529205423j:plain

f:id:cross_hyou:20190529205435j:plain

hist関数でヒストグラムを描きました。山型の分布です。

分子の単位は百万円なので、百万円当り0.001件というレベルですね。

もう少しわかりやすくいうと、1千万円当り0.01件、1億円当り0.1件、10億円当り1件ということですね。

平均値、標準偏差、変動係数を計算します。

f:id:cross_hyou:20190529205933j:plain

交通事故は、県内総生産額10億円当たり1.57件ですね。

変動係数は0.386で県内総生産額、交通事故件数よりもバラツキは小さいです。

今回は以上です。

次回は、

 

www.crosshyou.info

です。

 

全国輸出入コンテナ貨物流動調査のデータの分析3 - R言語で主成分分析

 

www.crosshyou.info

 の続きです。

 

Rクックブック

Rクックブック

 

 今回はこの本を参考にして、主成分分析を行ってみようと思います。

主成分分析はデータセットの変数を減らすことのようです。

データセットにN個の変数がある場合に主成分分析によって変数の数をN個よりも少なくできるかもしれないです。

早速やってみます。

まずは、データがどんなのか、確認します。

f:id:cross_hyou:20190526123627j:plain

str関数でデータ構造を確認しました。22の観測で変数の数が6つですから多い気がします。

prcomp関数を使うようです。

f:id:cross_hyou:20190526124223j:plain

まず、attach関数で、df_Analysisをアタッチします。

f:id:cross_hyou:20190526124311j:plain

prcomp関数の結果をsummary関数で呼び出しました。PC1で分散が72%、PC2で分散が24%でこの二つで分散の98%を占めていますので、6つも変数はいらず、2つの変数でdf_Analaysisのデータは説明できるということかな?

plot関数でグラフを描いてみます。

f:id:cross_hyou:20190526124641j:plain

f:id:cross_hyou:20190526124654j:plain

predict関数でデータを主成分へ回転するらしいです。

f:id:cross_hyou:20190526125143j:plain

よくわからないです。。。PC1とPC2だけのデータフレームを作ります。

f:id:cross_hyou:20190526125710j:plain

PC1とPC2の散布図を描きます。

f:id:cross_hyou:20190526130002j:plain

f:id:cross_hyou:20190526130020j:plain

この散布図に港の名前を表示したいですね。どうするのかな?

text関数で港の名前を追加すればいいですね。

f:id:cross_hyou:20190526131042j:plain

f:id:cross_hyou:20190526131106j:plain

できました。〇が表示されていると、文字と重なって見えにくくなるので、〇は表示しないで、文字だけにしましょう。

f:id:cross_hyou:20190526131615j:plain

f:id:cross_hyou:20190526131626j:plain

できました。

高松、堺泉北、石狩湾新などは似ている港、ということですね。

今回は以上です。

最後のdf_PC12をデタッチしておきましょう。

f:id:cross_hyou:20190526131911j:plain

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

# df_Analysisの確認
str(df_Analysis)

# attach関数でdf_Analysisをアタッチ
attach(df_Analysis)

# prcomp関数で主成分分析
r <- prcomp( ~ ExAmt + ExPx + ExPxT + InAmt + InPx + InPxT)
summary(r)

# plot関数で視覚化
plot(r)

# predict関数
predict(r)

# PC1とPC2だけのデータフレーム
df_PC12 <- predict(r)
df_PC12 <- as.data.frame(df_PC12)
df_PC12 <- df_PC12[ , c(1,2)]
rownames(df_PC12) <- rownames(df_Analysis)
df_PC12

# detach関数でdf_Analysisをデタッチ
detach(df_Analysis)

# attach関数でdf_PC12をアタッチ
attach(df_PC12)

# plot関数でPC1とPC2の散布図
plot(PC1, PC2)

# text関数で港の名前を追加
text(PC1, PC2,labels=rownames(df_PC12))

# plot関数で港の名前だけを表示
plot(PC1, PC2, type = "n")
text(PC1, PC2, labels = rownames(df_PC12))

# df_PC12をデタッチ
detach(df_PC12)

全国輸出入コンテナ貨物流動調査のデータの分析2 - R言語のhist関数でヒストグラム、pairs関数で散布図マトリックス、cor関数で相関係数マトリックス

 

www.crosshyou.info

 の続きです。前回はデータファイルを整えるので終わってしまいました。

R言語のstr関数でデータフレームの構造を確認します。

f:id:cross_hyou:20190525153727j:plain

ExPxとInPxがなぜか数値ではなく、ファクターとして取り込まれています。

数値データに変換してみましょう。

まず、ファクタ型から文字列型に変換します。as.character関数ですね。

f:id:cross_hyou:20190525154126j:plain

次に、as.numeric関数で数値型に変換します。

f:id:cross_hyou:20190525154327j:plain

警告メッセージ: 強制変換により NA が生成されました と表示されました。

これは、数値として認識されなかった観測がNAに強制的に変換されたということですね。head関数でどんな感じになってるかみてみます。

f:id:cross_hyou:20190525154615j:plain

summary関数で基本統計量ををみてみます。

f:id:cross_hyou:20190525154757j:plain

NAの無い変数はないですね。na.omit関数でNAある行を削除します。

f:id:cross_hyou:20190525154957j:plain

summary関数でみてみます。

f:id:cross_hyou:20190525155142j:plain

head関数もみてみましょう。

f:id:cross_hyou:20190525155253j:plain

行の名前にPortのデータを入れて、Portの列を削除します。

f:id:cross_hyou:20190525155708j:plain

できました。6つの変数が揃っている港ってこれだけなんですね。

まずは、それぞれの変数をorder関数で並び替えて表示します。

f:id:cross_hyou:20190525160011j:plain

小樽が輸出数量が一番少なく、那覇が一番多いです。ExPxはどうでしょうか?

f:id:cross_hyou:20190525160202j:plain

小樽のコンテナの価格が一番安く、舞鶴が一番高いです。重さ当りの価格はどうでしょうか?

f:id:cross_hyou:20190525160418j:plain

那覇が一番安く、小樽が一番高いです。

輸入量はどうでしょうか?

f:id:cross_hyou:20190525160646j:plain

三池が一番少なく、堺泉北が一番多いです。コンテナ当りの価格はどうでしょうか?

f:id:cross_hyou:20190525160917j:plain

小樽が安く、浜田が高いです。

重さ当りの価格はどうでしょうか?

f:id:cross_hyou:20190525161121j:plain

堺泉北が一番安く、石狩湾新が一番高いです。

今度はそれぞれの変数のヒストグラムを描いてみましょう。

f:id:cross_hyou:20190525161437j:plain

f:id:cross_hyou:20190525161448j:plain

attach関数でdf_Analysisをアタッチしたので、hist(df_Analysis$ExAmt)とせずに、hist(ExAmt)でヒストグラムが描けます。

次は、ExPXです。

f:id:cross_hyou:20190525161842j:plain

f:id:cross_hyou:20190525161852j:plain

次は、ExPxTです。

f:id:cross_hyou:20190525162019j:plain

f:id:cross_hyou:20190525162029j:plain

あ、これは二極化していますね。
次は、InAmtです。

f:id:cross_hyou:20190525162154j:plain

f:id:cross_hyou:20190525162204j:plain

InPXはどうでしょうか?

f:id:cross_hyou:20190525162339j:plain

f:id:cross_hyou:20190525162349j:plain

InPxTはどうでしょうか?

f:id:cross_hyou:20190525162522j:plain

f:id:cross_hyou:20190525162535j:plain

 

ExPxTが二極化しているほかは山型の分布ですね。

pairs関数で散布図を描きます。

f:id:cross_hyou:20190525162938j:plain

f:id:cross_hyou:20190525162952j:plain

cor関数で相関マトリックスを表示します。

f:id:cross_hyou:20190525163238j:plain

今回は以上です。最後にdetach関数で、df_Analysisをデタッチしておきます。

f:id:cross_hyou:20190525163423j:plain

今回は以上です。

 次回は

 

www.crosshyou.info

です。

 

 

全国輸出入コンテナ貨物流動調査のデータの分析1 - データファイルを整えるのに苦労する。

いつものように、e-Stat:政府統計の総合窓口を見てみました。

f:id:cross_hyou:20190523201151j:plain

いくつか新着情報がありました。この中で一番マニアックな感じのする、全国輸出入コンテナ貨物流動調査をクリックしてみました。

f:id:cross_hyou:20190523201352j:plain

本調査は、我が国の貿易額の約4割を占める、とあります。コンテナ貨物での貿易って結構需運用難ですね。ファイルをクリックしてみました。

f:id:cross_hyou:20190523201546j:plain

さらにクリックします。

f:id:cross_hyou:20190523201607j:plain

2018年と2013年のデータがあります。2018年を選びました。

f:id:cross_hyou:20190523201747j:plain

たくさん、表がありましたが、この中の表1-4 船積港・船卸港別貨物量 /申告件数/申告価格という表です。

変数名の行を追加しまし不要な行を削除しました。

f:id:cross_hyou:20190523202705j:plain



このファイルをR言語に読込んでデータ分析をしてみます。

まず、read.csv関数で読込みます。

f:id:cross_hyou:20190523202829j:plain

ExPxとInPxが数値型のデータではなく、ファクタ型になってしまっています。

これは問題ですね。

次回に何とかしましょう。

今回は以上です。

次回は

 

www.crosshyou.info

 

です。

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

# データの読込み
df <- read.csv("container.csv")
str(df)