crosshyou

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

東証一部の規模別・業種別PERとPBRデータの分析3 - R言語で規模別のPERに有意な違いがあるかを見る

 

www.crosshyou.info

 の続きです。

前回は全体のPERとPBRを見てみました。今回は規模別のPERやPBRを見てみましょう。まずは、作業しやすいように、規模別のデータだけに絞り込みます。

まず、head関数でデータフレームのはじめの数行を表示しましょう。

f:id:cross_hyou:20190327161109j:plain

規模別は、Large, Mid, Smallの3種類で、Levelは2ですね。なので、Levelが2だけのデータフレームを作成しましょう。

f:id:cross_hyou:20190327161517j:plain


できました。aggregate関数でType別の平均値を算出します。

f:id:cross_hyou:20190327161820j:plain

PER、PBRともにMidが一番高いですね。PERはSmallが2番目でLargeが一番低く、PBRはLargeが2番目でSmallが一番低いです。

今回は、

 

Statistics: An Introduction Using R (English Edition)

Statistics: An Introduction Using R (English Edition)

 

 を参考にして、ANOVA(Analysis of Variance)をやってみます。

規模によって、PERの水準は違うのかどうか?です。

まずは、PERをplot関数でグラフにしてみたいと思います。

その前にTypeには余計なファクタ水準が残っているので整理します。

f:id:cross_hyou:20190327164816j:plain

こうしてファクタ水準をSmall, Mid, Largeの3つだけにしました。

これでplot関数でPERをグラフにします。上記のCrawleyの本を参考にして、Type別に色分けをしてみます。

f:id:cross_hyou:20190327170005j:plain

 

できました。水平線はそれぞれの規模別の平均値です。

MidがPERの高いときがいくつかありますね。いつでしょうか?

f:id:cross_hyou:20190327170252j:plain

2013年と2014年ですね。

それでは規模によってPERの平均値は有意な差があるのかどうか、aov関数とsummary関数で確かめましょう。

f:id:cross_hyou:20190327170811j:plain

p値は1.5e-14なので0.05よりも小さいです。Small, Mid, LargeではPERの平均値は有意な差があることがわかりました。

plot関数で視覚化します。

f:id:cross_hyou:20190327171525j:plain

f:id:cross_hyou:20190327171538j:plain

 

今回は以上です。

次回は

 

www.crosshyou.info

 

です。

 

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

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

# 規模別だけのデータフレーム
df2 <- df[df$Level == 2, ]
summary(df2)

# Type別の平均値
aggregate(df2[ , c(5:9)], list(Kibo = df2$Type), mean)

# Typeの水準を整理
df2$Type <- as.character(df2$Type)
df2$Type <- factor(df2$Type, levels = c("Small", "Mid", "Large"), ordered = TRUE)
levels(df2$Type)

# PERのグラフ
plot(df2$PER, pch = 21, bg = as.numeric(df2$Type),
main = "Small-Black, Mid-Red, Large-Green")
abline(h = mean(df2$PER[df2$Type == "Small"]))
abline(h = mean(df2$PER[df2$Type == "Mid"]), col = "red")
abline(h = mean(df2$PER[df2$Type == "Large"]), col = "green")

# PERが30以上
df2[df2$PER > 30, ]

# aov関数とsummary関数
summary(aov(df2$PER ~ df2$Type))

# aov関数とplot関数
par(mfrow = c(2, 2))
plot(aov(df2$PER ~ df2$Type))