バックキャスト思考というのがどういうものかはわからなかったが、SDGsやESG投資については理解できた。
SDGsについては、17のゴールばかりが有名だが、投資家はその下の169のターゲットについて考えを巡らせることが重要だとわかった。
バックキャスト思考というのがどういうものかはわからなかったが、SDGsやESG投資については理解できた。
SDGsについては、17のゴールばかりが有名だが、投資家はその下の169のターゲットについて考えを巡らせることが重要だとわかった。
今回は趣向を変えて、上場している外食企業の財務データを分析してみました。吉野家とかココイチとかすかいらーくとかですね。
日本取引所のホームページから上場企業の財務データがわかるので、それを使いました。
こんな感じのデータです。これの通期決算のデータをExcelに手入力して、こんな感じにまとめました。
Tickerは東証の4桁コードです。9861は吉野家HD、9887は松屋フーズ、7550はゼンショーHDです。
Yearは決算年、Salesは売上高、OPは営業利益、CPは経常利益、NIは純利益です。
www.fb-soken.comのページに乗っている企業の中から、私が行ったことのある企業を調べてExcelファイルにデータを打ち込みました。
R言語のread.csv関数で読み込みます。
100の観測と6つの変数のデータフレームです。Tickerのデータ型がintで整数型になっているので、as.factor関数でファクタ型に変換しましょう。
summary関数でサマリーを表示すると、平均値、中央値などではなく、各値の度数が表示されました。ファクタ型になっていることがわかります。何社のデータがあるのかな?length関数でみてみます。
37社あることがわかります。
Sales、売上高が一番大きい企業はどこでしょうか?
order関数とrev関数とhead関数を使います。
Tickerが7550の会社、ゼンショーHDが6076億7900万円で一番です。次は、3197のすかいらーくHDでその次が2702の日本マクドナルドHDです。
OP、営業利益の大きい会社はどこでしょうか?
3197のすかいらーくHDが2017年に281億0300万円でいちばんです。次が2702の日本マクドナルドHDで250億4500万円です。3番はゼンショーHD(7550)です。この3社が外食業界のビッグ3ですかね?
経常利益、CPも同じかな?
経常利益は2702の日本マクドナルドHDが256億4400万円で一番です。次が3197のすかいらーくHDで3番目が7550のゼンショーHDです。やっぱりこの3社ですね。
NI,純利益も同じでしょうか?
NI(純利益)も2702の日本マクドナルドHDが240億2400万円でいちばんです。2番が3197のすかいらーくHD、3番が7550のゼンショーHDです。
営業利益率(営業利益 / 売上高)を計算してみましょう。
新しいデータフレームを作成しました。OPMの大きい順に並び替えてみます。
3085は、アークランドサービスHDです。これが14.17%で一番です。次は7611、これはハイデイ日高、3395、これはサンマルクHDです。これが3番です。アークランドサービスはとんかつの「かつや」、からあげの「からやま」肉めしの「岡むら屋」を展開している会社です。
売上高とOPMの散布図を描いてみます。plot関数です。
Salesの対数をとって散布図を描いてみます。
OPMとSalesに関係があるのか無いのか。。。
OPMという連続数値をSalesという連続数値とYearというファクター変数で説明するモデルを作りましょう。ANCOVA分析ですね!
Yearをas.factor関数でファクタにします。
まず、OPMとlog10(Sales)の散布図をYearで色分けして描いてみます。
lm関数でANCOVA分析です。
一番下の行のp-valueを見ると、0.004933と0.05よりも小さい値なのでこのモデルは有意なモデルです。各変数のp値を見ると、Year2018とYear2019は0.05よりも大きいのでYearはいらないかもしれないですね。Yearなしのモデルを作って、Yearありのモデルをanova関数で比較します。
p値は0.4395なので、Year無しのモデルでも変わりは無いということです。summary関数で確認します。
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は経常利益 - 営業利益です。これがプラスならば金融収支はプラスということです。金融収支がプラスということは財性的に余裕がある、ということは仕入れなども余裕をもってできる、ということは営業利益率は上がる、という理屈です。
p値が0.1673と0.05よりも大きいのでCOを加えても意味はなかったです。
一応、summary関数で確認しておきましょう。
COの係数のp値は0.16726と0.05よりも大きいですね。
今回は以上です。
の続きです。
まず、データがどんなだったか、summary関数で確認します。
47都道府県の10年間のデータです。
Prodが県内総生産額で、百万円単位です。
Acciが交通事故件数で、1件単位です。
Ratioが県内総生産額100万円当りの交通事故件数です。
まずは、年度ごとのRatioの平均値をtapply関数で算出しましょう。
1975年度などNAがいっぱいですね。これは、Yearによけいなファクタ水準が残っていたからですね。余計なファクタ水準を削除しましょう。as.character関数でいったん文字列にしてから、as.factor関数で再度ファクタに戻します。
これで、もういちどtapply関数をしてみます。
2006年度は0.0018, 2007年度は0.0017...2014年度は0.0012, 2015年度は0.0011と年々減っていることがわかります。
同じように、tapply関数で都道府県ごとのRatioの平均値を算出してみます。
都道府県の数が多くてどれが一番Ratioが高くて、どれが低いかわからないですね。
一旦結果をベクトルにしてsortで並び替えましょう。
東京都が一番Ratioが低く、佐賀県がRatioが一番高いことがわかります。
今回は以上です。
ところで、今回から、結果の画像が少し変わったことにお気づきでしょうか?
今回から、RStudioで結果を表示しています。
政府統計の総合窓口、e-statのウェブページから、県別の県内総生産額と交通事故発生件数のデータを取得しました。
こんな感じのデータです。このデータをR言語を使って分析してみようと思います。
まず、read.csv関数でデータをR言語の読込みます。
str関数でデータ構造を確認すると、2021の観測で5つの変数があります。ただ、Skipは何も入っていないので後で削除します。
head関数ではじめの数行を表示しました。Yearが年度、Prefが都道府県、Prodが県内総生産額、Acciが交通事故件数です。
まず、Skipを削除します。
subset関数でSkipを削除し、summary関数で各変数のサマリーを表示しました。ProdにNAが1551個もあります。これらをna.omitで削除しましょう。
NAが削除されました。Prefを見ると、各県は10回ありますので、10年間のデータだとわかりますね。
ProdとAcciの散布図を描いてみます。plot関数です。
生産額が大きいほど、交通事故件数が多い傾向があるようです。あたりまえと言ったらあたりまえですね。
ProdとAcciの変動係数を計算してみます。
生産額のほうがバラツキが大きいですね。
交通事故件数 / 県内生産額 を計算して、生産額当りの交通事故件数を調べてみましょう。
hist関数でヒストグラムを描きました。山型の分布です。
分子の単位は百万円なので、百万円当り0.001件というレベルですね。
もう少しわかりやすくいうと、1千万円当り0.01件、1億円当り0.1件、10億円当り1件ということですね。
平均値、標準偏差、変動係数を計算します。
交通事故は、県内総生産額10億円当たり1.57件ですね。
変動係数は0.386で県内総生産額、交通事故件数よりもバラツキは小さいです。
今回は以上です。
次回は、
です。
の続きです。
今回はこの本を参考にして、主成分分析を行ってみようと思います。
主成分分析はデータセットの変数を減らすことのようです。
データセットにN個の変数がある場合に主成分分析によって変数の数をN個よりも少なくできるかもしれないです。
早速やってみます。
まずは、データがどんなのか、確認します。
str関数でデータ構造を確認しました。22の観測で変数の数が6つですから多い気がします。
prcomp関数を使うようです。
まず、attach関数で、df_Analysisをアタッチします。
prcomp関数の結果をsummary関数で呼び出しました。PC1で分散が72%、PC2で分散が24%でこの二つで分散の98%を占めていますので、6つも変数はいらず、2つの変数でdf_Analaysisのデータは説明できるということかな?
plot関数でグラフを描いてみます。
predict関数でデータを主成分へ回転するらしいです。
よくわからないです。。。PC1とPC2だけのデータフレームを作ります。
PC1とPC2の散布図を描きます。
この散布図に港の名前を表示したいですね。どうするのかな?
text関数で港の名前を追加すればいいですね。
できました。〇が表示されていると、文字と重なって見えにくくなるので、〇は表示しないで、文字だけにしましょう。
できました。
高松、堺泉北、石狩湾新などは似ている港、ということですね。
今回は以上です。
最後のdf_PC12をデタッチしておきましょう。
今回の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)
の続きです。前回はデータファイルを整えるので終わってしまいました。
R言語のstr関数でデータフレームの構造を確認します。
ExPxとInPxがなぜか数値ではなく、ファクターとして取り込まれています。
数値データに変換してみましょう。
まず、ファクタ型から文字列型に変換します。as.character関数ですね。
次に、as.numeric関数で数値型に変換します。
警告メッセージ: 強制変換により NA が生成されました と表示されました。
これは、数値として認識されなかった観測がNAに強制的に変換されたということですね。head関数でどんな感じになってるかみてみます。
summary関数で基本統計量ををみてみます。
NAの無い変数はないですね。na.omit関数でNAある行を削除します。
summary関数でみてみます。
head関数もみてみましょう。
行の名前にPortのデータを入れて、Portの列を削除します。
できました。6つの変数が揃っている港ってこれだけなんですね。
まずは、それぞれの変数をorder関数で並び替えて表示します。
小樽が輸出数量が一番少なく、那覇が一番多いです。ExPxはどうでしょうか?
小樽のコンテナの価格が一番安く、舞鶴が一番高いです。重さ当りの価格はどうでしょうか?
那覇が一番安く、小樽が一番高いです。
輸入量はどうでしょうか?
三池が一番少なく、堺泉北が一番多いです。コンテナ当りの価格はどうでしょうか?
小樽が安く、浜田が高いです。
重さ当りの価格はどうでしょうか?
堺泉北が一番安く、石狩湾新が一番高いです。
今度はそれぞれの変数のヒストグラムを描いてみましょう。
attach関数でdf_Analysisをアタッチしたので、hist(df_Analysis$ExAmt)とせずに、hist(ExAmt)でヒストグラムが描けます。
次は、ExPXです。
次は、ExPxTです。
あ、これは二極化していますね。
次は、InAmtです。
InPXはどうでしょうか?
InPxTはどうでしょうか?
ExPxTが二極化しているほかは山型の分布ですね。
pairs関数で散布図を描きます。
cor関数で相関マトリックスを表示します。
今回は以上です。最後にdetach関数で、df_Analysisをデタッチしておきます。
今回は以上です。
次回は
です。
いつものように、e-Stat:政府統計の総合窓口を見てみました。
いくつか新着情報がありました。この中で一番マニアックな感じのする、全国輸出入コンテナ貨物流動調査をクリックしてみました。
本調査は、我が国の貿易額の約4割を占める、とあります。コンテナ貨物での貿易って結構需運用難ですね。ファイルをクリックしてみました。
さらにクリックします。
2018年と2013年のデータがあります。2018年を選びました。
たくさん、表がありましたが、この中の表1-4 船積港・船卸港別貨物量 /申告件数/申告価格という表です。
変数名の行を追加しまし不要な行を削除しました。
このファイルをR言語に読込んでデータ分析をしてみます。
まず、read.csv関数で読込みます。
ExPxとInPxが数値型のデータではなく、ファクタ型になってしまっています。
これは問題ですね。
次回に何とかしましょう。
今回は以上です。
次回は
です。
今回のR言語のコードです。
# データの読込み
df <- read.csv("container.csv")
str(df)