
の続きです。前回は百貨店・スーパーの販売額の前年比をグラフにしました。
2021年度よりも、2022年度、2023年度のほうが前年比の平均値は高いようにグラフでは見えました。今回は、統計学的な観点からも確認しましょう。
2021年度、2022年度、2023年度と3つのグループがあってその3つの平均値に統計学的な違いがあるかを調べるのは、ANOVA(分散分析)ですね。シミュレーションベースの方法と理論ベースの方法の2つのアプローチをやってみます。
シミュレーションベースの方法は、inferパッケージを使います。

https://infer.tidymodels.org/articles/anova.html
こちらのサイトを参考にします。
まず、F値を算出します。

次は、year: 年度とyoy: 前年比が関係ないと仮定して1000回シミュレーションでF値を計算します。一言でいうと、Null Distributionを生成します。

生成したNull Distributionの分布をヒストグラムにしてみてみます。


赤い垂線が実際のF値の垂線で、ヒストグラムが、年度と前年比が関係ないという仮定の下でシミュレーションしたF値です。こうしてみると、年度と前年比が関係ないという仮定の下では、実際に起きているF値はあり得ないということがわかります。つまり、年度と前年比が関係あるということですね。p値を計算してみます。

p値はゼロでした。以上、シミュレーションベースのANOVA(分散分析)でした。
続いて、理論ベースのANOVA(分散分析)をしてみます。aov()関数で簡単にできます。

F値は19.41とinferパッケージで計算した値と同じです。p値は3.74e-08とほとんどゼロですね。

今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# inferパッケージの読み込み
library(infer)
#
# F値の算出
observed_F_value <- df_super_depart |>
specify(yoy ~ year) |>
hypothesize(null = "independence") |>
calculate(stat = "F")
observed_F_value
#
# Null Distributionの生成
set.seed(1991)
null_dist <- df_super_depart |>
specify(yoy ~ year) |>
hypothesize(null = "independence") |>
generate(reps = 1000, type = "permute") |>
calculate(stat = "F")
#
# Null Distributionのグラフ
null_dist |>
visualize() +
shade_p_value(observed_F_value,
direction = "greater") +
theme_minimal()
#
# p値の計算
null_dist |>
get_p_value(obs_stat = observed_F_value,
direction = "greater")
#
# 理論ベースのANOVA(分散分析)
aov(yoy ~ year,
data = df_super_depart) |>
summary()
#
# 3.74e-08とは?
format(3.74e-08,scientific = FALSE)
#
(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは Landscape of seaside beach and high cliffs, close up of white and pink mottled camellia flowers, photo です。)