2.4 基本記述統計グラフ
2.4.5 箱型図 boxplot()
boxplot()
はデータ(
グループ)
から箱型図(
箱ヒゲ図,boxplot, box and whisker
plot)
を画く.箱型図は現代統計学の最も基本的な記述統計用グラフの一つである.書式
:
boxplot(x, ...)
#
クラスformula
に対するS3
メソッドboxplot(formula, data=NULL, ..., subset, na.action=NULL)
#
既定のS3
メソッドboxplot(x, ..., range=1.5, width=NULL, varwidth=FALSE, notch=FALSE, outline=TRUE, names, plot=TRUE, border=par("fg"), col=NULL, log="", pars=list(boxwex=0.8, staplewex=0.5, outwex=0.5), horizontal=FALSE, add=FALSE, at=NULL)
引数:
formula y ~ grp
といった公式.ここでy
はグルーピング変数(
普通因子) grp
に よってグループ化される数値データdata formula
中の変数含まれるデータフレームもしくはリストsubset
プロットされる観測値の部分集合を指定するオプションベクトルna.action
データに欠損値があるときの処理を指定する関数.既定では欠損値は無視される
x
箱型図を書くべきデータ.数値ベクトルかそうしたベクトルを含む単一のリス ト.任意個の名前無しの追加引数は別のデータを指定し,それぞれ一つの箱型図 に対応する.NA
値があっても良い... formula
メソッドに対しては既定のメソッドに引き渡される名前付きの引数.既定メソッドでは名前ラベル無しの引数は追加データ
(x
がリストなら無視される)
とされ,名前ラベル付きの引数は関数bxp()
に渡される引数と作画パラメータ(pars
で指定されたパラメータを上書きする)
range
ヒゲが箱からどれだけ延びるかを決める.もしrange
が正なら,ヒゲは箱からIQR
のrange
倍を越えない最も離れたデータ位置まで引かれる.0
ならヒゲは最大・最小値まで延びる
width
箱の相対的な幅を決めるベクトルvarwidth
もしTRUE
なら,箱はグループ中の観測値の数の平方根に比例する幅になるnotch
もしTRUE
なら,箱の両側面に切り欠け(notch)
が描かれる.もし二つの箱型図の切り欠けが重ならなければ,対応データの中央値が異なる可能性が高い
outline
もしFALSE
なら外れ値は描かれないnames
各プロットの下に書かれるグループのラベル.文字列ベクトルでも表現式でも良い
(plotmath()
を参照)
boxwex
全ての箱に適用されるスケール因子.もしグループ数が少なければ,箱の幅を狭くした方が見栄えが良くなる
staplewex
ステープル線(
ヒゲの先端部)
の幅拡大率,箱幅への比例率outwex
外れ値線の幅拡大率,箱幅への比例率plot
もしTRUE (
既定値)
なら箱型図が描かれる.もしFALSE
なら箱型図情報の要約 が出力されるborder
箱型図の外側線に対する色のベクトル.もし箱型図の数より少なければリサイクル使用される
col
もしNULL
でなければ,箱型図の本体を彩色する色情報を含むとされる.既定で は背景色とされるlog x
座標,y
座標もしくは双方を対数スケールでプロットするかどうかを指示する 文字pars
追加の作図パラメータのリスト.例えばboxwex
やoutpch
.plot=TRUE
なら これらはbxp()
に渡されるhorizontal
箱型図を水平に描くかどうかを指示する論理値.FALSE
なら垂直add
論理値.TRUE
なら現在のプロットに箱型図が追加されるat
箱型図が描かれる位置を与える数値ベクトル(
特にadd=TRUE
の時意味を持つ)
. 既定ではn
を箱の数として1:n
返り値: 以下の成分を持つリスト:
stats
行列で,各列は各箱の下側のヒゲの端点位置,下側ヒンジ,中央値,上側ヒンジ,上側ヒゲの端点位置を含む.もし全ての入力データが同じクラス属性を持て ば,この成分も同じクラス属性を持つ
n
各グループ中の観測値数のベクトルconf
行列で,各列は切り欠けの下側,上側端点位置を含むout
ヒゲの外側にある全てのデータ点の値group out
と同じ長さのベクトルで,各外れ値がどのグループに属するかを指示するnames
グループの名前のベクトル総称的な関数
boxplot()
は現在既定メソッド関数boxplot.default()
と公式による インタフェイス関数boxplot.formula()
を持つ.もし複数のグループが複数引数もし くは公式で与えられると,平行箱型図が引数もしくは因子の水準の順序で描かれる.欠損 値は無視される.関数bxp()
は箱型図情報から箱型図を画く.# 因子G=c("a","b","c")で変数Aをグループ化し三つの箱型図を描く x <- data.frame(A=rgamma(100, shape=3),
G=sample(letters[1:3], 100, replace=TRUE)) boxplot(A ~ G, data=x)
# ベクトルを並べる.中央値の比較用に切り欠けを加える
x1 <- rnorm(100); x2 <- rnorm(100)+1; x3 <- rnorm(100)+2 boxplot(x1,x2,x3, notch = TRUE)
# 数値行列の各列を箱型図に(先ずデータフレームに変換する) x <- matrix(runif(1e3), nrow=100, ncol=10) dfx <- as.data.frame(x)
boxplot(dfx)
# help(boxplot)中の例(二つのboxplot命令を重ねる).組み込みデータフレームToothGrowth使用 boxplot(len ~ dose, data = ToothGrowth,
boxwex = 0.25, at = 1:3 - 0.2, # 箱幅と位置を指定
subset = supp == "VC", col = "yellow", # 黄色で塗りつぶし main = "Guinea Pigs’ Tooth Growth", # 主タイトル xlab = "Vitamin C dose mg", # x軸ラベル
ylab = "tooth length", # y軸ラベル xlim = c(0.5, 3.5), ylim = c(0, 35), # x,y軸範囲指定
yaxs = "i") # y軸タイプ指定
boxplot(len ~ dose, data = ToothGrowth, add = TRUE, # 二つ目の箱型図を重ねる
boxwex = 0.25, at = 1:3 + 0.2, # 少しずらして画く
subset = supp == "OJ", col = "orange") # オレンジ色で塗りつぶし legend(2, 9, c("Ascorbic acid", "Orange juice"),
fill = c("yellow", "orange")) # 凡例を加える
a b c
0246810
1 2 3
−2−101234
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
0.0 0.2 0.4 0.6 0.8 1.0 0.5 1 2
05101520253035
Guinea Pigs’ Tooth Growth
Vitamin C dose mg
tooth length
0.5 1 2
05101520253035
Ascorbic acid Orange juice
例示用コードの出力箱型図