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

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

東証の上場会社の資金調達額のデータの分析3 - 資金調達に季節性があるかどうかをシミュレーションで確認する

www.crosshyou.info

の続きです。前回は箱ひげ図を描いてみました。箱ひげ図を見る限りでは、資金調達には季節性があるようです。今回はシミュレーションや統計学の理論で季節性の有無を確認します。

まず、シミュレーションベースでの方法をしますので、inferパッケージの読み込みをします。

複数のカテゴリーがあってそのカテゴリー別の平均値に違いがあるかどうかを検定するのは、ANOVA(分散分析)ですね。inferパッケージのウェブサイト、

Tidy ANOVA (Analysis of Variance) with infer • infer

を参考にして実行します。

株式公募の件数が月ごとに違うかを分析しましょう。まず、F値を計算します。

F値は 18.1 と算出されました。次は、eqy_numとmonthが独立しているとみなしたnull distribution を1000回、シミュレーションで生成して、1000個のF値を計算します。

この1000個のF値をグラフにします。

赤い垂線が実際のF値、18.1の水準です。株式公募の件数が月とは関係が無いと仮定したときのF値の分布がヒストグラムです。こうしてみると、18.1というF値は、もしも件数と月が関係ないとしたら、ありえない大きさのF値ということですね。つまり、件数と月は関係がある、ということです。

p値を計算します。

p値は0となりました。

aov()関数という関数で理論ベースのANOVAも実行できます。

F値が18.07でp値が < 2e-16とinferパッケージのシミュレーションと同じ結果になりました。やっぱり株式公募の件数は、月ごとに違いがある、季節性があるということです。

aov()関数で株式公募の金額や債券発行なども調べてみましょう。

株式公募の件数は四半期別でも違いがあります。(p値は0.000276)

株式公募の件数は月別では違いがありますが、四半期別では違いがあるとは言えません。(月別のp値は0.0351、四半期別のp値は0.474)

債券のほうもaov()関数で検定してみます。

債券による資金調達では、件数、金額ともに月別でも四半期別でもp値はすべて0.05よりも小さい値です。つまり季節性があるということです。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。
#
# inferパッケージの読み込み
library(infer)
#
# eqy_numが月ごとに違うか?
# 1. F値を計算
observed_f_statistics <- df |> 
  specify(eqy_num ~ month) |> 
  hypothesize(null = "independence") |> 
  calculate(stat = "F")
observed_f_statistics
#
# 2. null distributionの生成
set.seed(888)
null_dist <- df |> 
  specify(eqy_num ~ month) |> 
  hypothesize(null = "independence") |> 
  generate(reps = 1000, type = "permute") |> 
  calculate(stat = "F")
#
# 3. null distributionのグラフ
null_dist |> visualize() + 
  shade_p_value(observed_f_statistics,
                direction = "greater")
#
# 4. p値の計算
null_dist |> 
  get_p_value(obs_stat = observed_f_statistics,
              direction = "greater")
#
# 5. aov()関数でのANOVA
aov(eqy_num ~ month, data = df) |> 
  summary()
#
# quarterでは?
aov(eqy_num ~ quarter, data = df) |> 
  summary()
#
# eqy_valは?
aov(eqy_val ~ month, data = df) |> 
  summary()
aov(eqy_val ~ quarter, data = df) |> 
  summary()
#
# bond_numは?
aov(bond_num ~ month, data = df) |> 
  summary()
aov(bond_num ~ quarter, data = df) |> 
  summary()
#
# bond_valは?
aov(bond_val ~ month, data = df) |> 
  summary()
aov(bond_val ~ quarter, data = df) |> 
  summary()
#

 

(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは、Fancy and beautiful nature landscape photograph, close up of a spiderwort flower, blue sky, white clouds. です)