Rで何かをしたり、読書をするブログ

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

東証一部の規模別・業種別PERとPBRデータの分析5 - R言語で製造業と非製造業を分析

 

www.crosshyou.info

 の続きです。

今回は、製造業と非製造業でPERとPBRを比べてみたいと思います。

まずは、製造業と非製造業のLevelを確認しましょう。

f:id:cross_hyou:20190328071925j:plain

Manuf(製造業)と非製造業(NonManuf)はLevelは4ですね。早速、Level4だけのデータフレームを作成しましょう。

f:id:cross_hyou:20190328072333j:plain

Levelは不要なので削除します。

f:id:cross_hyou:20190328072721j:plain

こんどは、Typeにいらないファクタ水準(AirやAutoなど)が残っていいるので、整理します。

f:id:cross_hyou:20190328073113j:plain

いったん、as.character関数で文字列に変換し、factorでファクタに再変換しました。

aggregate関数で製造業と非製造業に分けて平均値を出してみましょう。

f:id:cross_hyou:20190328073927j:plain

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

f:id:cross_hyou:20190328074556j:plain

f:id:cross_hyou:20190328074608j:plain

赤い水平線が非製造業のPERの平均、黒い水平線が製造業の平均です。

黒点が製造業、赤点が非製造業です。なんだかこの前の規模別のときと同じように製造業で30以上のときがいくつかあります。確認しましょう。

f:id:cross_hyou:20190328075023j:plain

規模別のときと同じように、2013年と2014年ですね。

年ごとのPERをグラフで表示してみます。

f:id:cross_hyou:20190328080025j:plain

年を経るとPERが低くなる傾向です。

箱ひげ図でも表示してみましょう。

f:id:cross_hyou:20190328080411j:plain

f:id:cross_hyou:20190328080431j:plain

今回は、非説明変数をPER、説明変数をYear(数値データ)とType(ファクタ)の二つとみなして、ANCOVA(Analysis of Covariance)分析をしてみたいと思います。

参考書は前回と同じく

 

Statistics: An Introduction Using R (English Edition)

Statistics: An Introduction Using R (English Edition)

 

 です。

まず、製造業と非製造業別でPERの箱ひげ図を描きます。

f:id:cross_hyou:20190328081134j:plain

f:id:cross_hyou:20190328081147j:plain

製造業のほうがバラツキが大きく、平均値が大きいです。

summary関数とaov関数でManfとNonManfでPERに有意な違いがあるか確認しましょう。

f:id:cross_hyou:20190328081659j:plain

p値は0.00221です。有意です。

まずは、TypeとYearが関係したモデルを考えます。

f:id:cross_hyou:20190328082132j:plain

Year, Type, Year * Typeの三つともPERに有意な影響があります。

係数を確認しましょう。

f:id:cross_hyou:20190328082857j:plain

こうなります。

つまり、製造業のときのモデル式は、

PER = 5024.2018 - 2.4817 * Year (製造業のときの回帰式)

非製造業のときのモデル式は、

PER = 5024.2018 - 2559.9594 - 2.4817 * Year + 1.2688 * Year

整理すると、

PER = 2464.242 - 1.2129 * Year  (非製造業のときの回帰式)

です。

plot関数とabline関数で描いてみましょう。

f:id:cross_hyou:20190328084255j:plain

f:id:cross_hyou:20190328084308j:plain

製造業のほうがPERの低下が激しいですね。

今回は以上です。

 

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


# head関数ではじめの10行を表示
head(df, 10)

# Level4(ManufとNonManuf)だけのデータフレーム
df4 <- df[df$Level == 4, ]
str(df4)
summary(df4)

# Levelの削除
df4 <- df4[ , -3]
str(df4)
summary(df4)

# Typeの水準を整理
df4$Type <- as.character(df4$Type)
df4$Type <- factor(df4$Type)
str(df4$Type)

# 製造業と非製造業別の平均値
aggregate(df4[ , c(4:8)], # df4を対象に
list(df4$Type), # ManufとNonManufごとに
mean)            # 平均値を算出

# PERのグラフ
plot(df4$PER, pch = 21, bg = as.numeric(df4$Type))
abline(h = mean(df4$PER[df4$Type == "Manuf"]), col = 1, lwd = 3)
abline(h = mean(df4$PER[df4$Type == "NonManuf"]), col = 2, lwd = 3)

# PERが30以上を表示
df4[df4$PER > 30, ]

# X軸Year, Y軸PER
plot(df4$Year, df4$PER, pch = 21, bg = as.numeric(df4$Type))

# 箱ひげ図
plot(as.factor(df4$Year), df4$PER)

# ManfとNonManfのPERの箱ひげ図
plot(df4$Type, df4$PER, col = "lightgreen")

# ManfとNonManfで有意な違いがあるかどうか
summary(aov(df4$PER ~ df4$Type))

# YearとTypeの関連したモデル
model1 <- lm(df4$PER ~ df4$Year * df4$Type)
summary.aov(model1)

# モデルの係数の確認
summary(model1)

# plotとabline
plot(df4$Year, df4$PER, pch = 21, bg = as.numeric(df4$Type),
main = "Black:Manuf, Red*NonManuf")
abline(5024.2018, -2.4817, col = "black", lwd = 2)
abline(2464.242, -1.2129, col = "red", lwd = 2)