
Exploratoryのv15から、新機能として「カスタムRチャート」が追加されました。この機能を利用することで、標準のチャート機能だけでは実現が難しかったチャートを作ることができます。
今回はその一例として、データのばらつきを可視化する「箱ひげ図」の上に、2つのグループ間の平均値の差を統計的に検証する「t検定」のP値(有意確率)を表示させる具体的な手順を紹介します。
Exploratoryの標準的な箱ひげ図は、データの分布や中央値を視覚的に把握するのには非常に適していますが、描画の裏側で統計的な検定を行っているわけではありません。
そのため、例えば「男性と女性で給与に差があるように見える」といった視覚的な気づきが得られたとしても、その差が統計的に有意(偶然ではないと言えるか)であるかどうかを判断するには、別途アナリティクスビューでt検定を実行し、その結果を確認しに行く必要があります。解決方法
箱ヒゲ図は、中央値・四分位範囲などの代表値を使ってデータのばらつきを表現するチャートです。グループ間でばらつきの違いを比較するのに適していますが、その差が統計的に有意かどうかは読み取ることができません。

たとえば上の図を見ると、女性の方が給料の中央値が高く分布しているように見えます。しかし、これだけでは「偶然の差なのか、それとも本当に差があるのか」は判断できません。
一方で、t検定を使うと、2グループの平均の差が統計的に有意かどうかをp値をもとに判断できます。
このp値を箱ヒゲ図の上に表示することで、分布の見た目と統計的な判断を1つのチャートで同時に伝えることができます。

箱ヒゲ図にt検定の結果を表示するには、グループを表す列と、比較したい数値を表す列(数値型)の2列を持ったデータが必要です。

今回は、1行が1人の従業員を表すデータを使って、性別ごとの給料の分布とt検定の結果を表示していきます。

サンプルデータはこちらからダウンロードいただけます。
チャート・ビューからカスタム (R) チャートを使うと、Rのコードを貼り付けるだけで箱ヒゲ図にt検定の結果を重ねたチャートを作成できます。
チャート・ビューに移動し、チャートタイプの一覧から「カスタム (R) チャート」を選択します。

すると、Rスクリプトを入力するテキストエディタが表示されます。

今回はRで可視化を行う際に一般的によく利用されるパッケージであるggplot2を使います。
Exploratoryにはデフォルトでggplot2がインストールされているため、別途インストールする必要はありません。
続いて、以下のスクリプトをテキストエディタに貼り付けてください。${DATA}
はExploratoryが現在アクティブなデータフレームを自動的に参照する専用の記法です。
library(ggplot2)
df <- ${DATA}
# t検定を実行してp値を取得
test_result <- t.test(給料 ~ 性別, data = df) # 「給料」→ 数値列名、「性別」→ グループ列名
p_value <- test_result$p.value
p_label <- paste0("p = ", format.pval(p_value, digits = 2)) # p値の表示形式(digits で有効桁数を変更)
# 括弧線・p値ラベルのY座標を自動計算
y_max <- max(df$給料, na.rm = TRUE) # 「給料」→ 数値列名
y_bracket <- y_max * 1.05 # 括弧線の高さ。数値を調整すると上下に移動
y_label <- y_max * 1.10 # p値ラベルの高さ。数値を調整すると上下に移動
ggplot(df, aes(x = 性別, y = 給料)) + # 「性別」→ グループ列名、「給料」→ 数値列名
geom_boxplot(aes(fill = 性別)) + # 「性別」→ グループ列名
# 括弧線(不要な場合は以下3行をコメントアウト)
annotate("segment", x = 1, xend = 2, y = y_bracket, yend = y_bracket) +
annotate("segment", x = 1, xend = 1, y = y_bracket, yend = y_bracket * 0.98) +
annotate("segment", x = 2, xend = 2, y = y_bracket, yend = y_bracket * 0.98) +
# p値ラベル(不要な場合はこの行をコメントアウト)
annotate("text", x = 1.5, y = y_label, label = p_label, size = 5) + # size でフォントサイズを変更
theme_minimal(base_family = "HiraginoSans-W3") +
labs(x = "性別", y = "給料") # 軸ラベルのテキスト

スクリプトを貼り付けたら「ビュー」ボタンをクリックすると、箱ヒゲ図にp値が重ねて表示されます。
