Ggplot2 の箱ひげ図で外れ値にラベルを付ける方法
このチュートリアルでは、ggplot2 の箱ひげ図で外れ値にラベルを付ける方法のステップバイステップの例を提供します。
ステップ 1: データフレームを作成する
まず、3 つの異なるチームの 60 人の異なるバスケットボール選手が獲得したポイントに関する情報を含む次のデータ フレームを作成しましょう。
#make this example reproducible
set. seeds (1)
#create data frame
df <- data. frame (team=rep(c('A', 'B', 'C'), each= 20 ),
player=rep(LETTERS[1:20], times= 3 ),
points=round(rnorm(n=60, mean=30, sd=10), 2))
#view head of data frame
head(df)
team player points
1 AA 23.74
2AB 31.84
3 AC 21.64
4AD 45.95
5 AE 33.30
6 FY 21.80
注: この例を再現できるようにするために、set.seed()関数を使用しました。
ステップ 2: 外れ値を特定する関数を定義する
ggplot2 では、次の 2 つの要件のいずれかを満たしている場合、観測値は外れ値として定義されます。
- 観測値は、第 1 四分位 (Q1) より下の四分位範囲の 1.5 倍です。
- 観測値は、第 3 四分位 (Q3) より上の四分位範囲の 1.5 倍です。
R で次の関数を作成して、観測値がこれら 2 つの要件のいずれかを満たしている場合に外れ値としてラベルを付けることができます。
find_outlier <- function (x) {
return (x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}
関連: 四分位範囲を解釈する方法
ステップ 3: ggplot2 の箱ひげ図の外れ値にラベルを付ける
次に、次のコードを使用して、ggplot2 の箱ひげ図の外れ値にラベルを付けることができます。
library (ggplot2)
library (dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), points, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 )
グラフでは 2 つの外れ値にラベルが付けられていることに注意してください。
最初の外れ値は7.85ポイントを獲得したチーム A のプレーヤーで、もう 1 つの外れ値は10.11ポイントを獲得したチーム B のプレーヤーです。
別の変数を使用してこれらの外れ値にラベルを付けることもできることに注意してください。
たとえば、 mutate()関数でplayerのポイントを交換して、プレイヤーの名前に基づいて外れ値にラベルを付けることができます。
library (ggplot2)
library (dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), player, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 )
チーム A の外れ値にはラベルNが付けられ、チーム B の外れ値にはラベルDが付きます。これは、これらはポイントの外れ値を持つプレーヤーの名前を表すためです。
注: geom_text()のhjust引数は、ラベルがプロット ポイントと重ならないように、ラベルを水平方向に右に移動するために使用されます。
追加リソース
次のチュートリアルでは、ggplot2 で他の一般的なタスクを実行する方法を説明します。