stripchartの横にエラーバー

ストリップチャート

サンプルサイズが小さい場合には、箱ひげ図よりストリップチャートがお勧めです。

このファイルをdatに格納します(csvファイルの読み込み

dat <- read.csv("welch.csv", header=T, fileEncoding = "UTF-8")

データの確認

head(dat)

縦のデータになっています

groupの列をカテゴリ変数(名義変数)に変更します

dat$group <- as.factor(dat$group)

ストリップチャートを作図します

group変数でグループ分けします(data~group)

stripchart(
    data~group, data = dat, method="jitter", 
    jitter = 0.05, vertical=TRUE, pch=20, cex=1, 
    xlim=c(0.5,2.5), ylim=c(-10, 90),
    xlab="治療", ylab="得点差"
)

(不偏)標準偏差を挿入

#図を追加
par(new=T) 

#平均値
Aの平均 = mean(dat[dat$group=="A","data"])
Bの平均 = mean(dat[dat$group=="B","data"])

#不偏標準偏差
Aの標準偏差 = sd(dat[dat$group=="A","data"]) 
Bの標準偏差= sd(dat[dat$group=="B","data"])

#平均値をプロット
plot(
    c(1.15, 2.15), 
    c(Aの平均, Bの平均), 
    col = "red",
    pch=20,
    ylim=c(-10, 90), xlim = c(0.5, 2.5), 
    xaxt="n", xlab="", ylab="")

#不偏標準偏差の範囲を挿入
arrows(
    1.15: 2.15, 
    c(Aの平均, Bの平均) - c(Aの標準偏差, Bの標準偏差), 
    1.15: 2.15, 
    c(Aの平均, Bの平均) + c(Aの標準偏差, Bの標準偏差),
    lwd=1.0, angle=90, length=0.1, code=3, col="red" #code・・・髭の場所
)

グラフの消去

dev.off()

標準誤差を挿入

#各グループのサンプルサイズ
AN <- dim(subset(dat, dat$group=="A"))[1]
BN <- dim(subset(dat, dat$group=="B"))[1]

#標準誤差
Aの標準誤差 = Aの標準偏差/sqrt(AN)
Bの標準誤差 = Bの標準偏差/sqrt(BN)

さきほどの作図方法の標準偏差を標準誤差に置換

stripchart(
    data~group, data = dat, method="jitter", 
    jitter = 0.05, vertical=TRUE, pch=20, cex=1, 
    xlim=c(0.5,2.5), ylim=c(-10, 90),
    xlab="治療", ylab="得点差"
)

par(new=T) 

#平均値をプロット
plot(
    c(1.15, 2.15), 
    c(Aの平均, Bの平均), 
    col = "red",
    pch=20,
    ylim=c(-10, 90), xlim = c(0.5, 2.5), 
    xaxt="n", xlab="", ylab="")

arrows(
    1.15: 2.15, 
    c(Aの平均, Bの平均) - c(Aの標準誤差, Bの標準誤差), 
    1.15: 2.15, 
    c(Aの平均, Bの平均) + c(Aの標準誤差, Bの標準誤差),
    lwd=1.0, angle=90, length=0.08, code=3, col="red" #code・・・髭の場所
)

グラフの消去

dev.off()

ここまできたら信頼区間も・・・

95%信頼区間を挿入

Aの下限 <- t.test(dat[dat$group=="A", "data"])$conf.int [1]
Aの上限 <- t.test(dat[dat$group=="A", "data"])$conf.int [2]
Bの下限 <- t.test(dat[dat$group=="B", "data"])$conf.int [1]
Bの上限 <- t.test(dat[dat$group=="B", "data"])$conf.int [2]
stripchart(
    data~group, data=dat, method="jitter", 
    jitter = 0.05, vertical=TRUE, pch=20, cex=1, 
    xlim=c(0.5, 2.5), ylim=c(-10, 90),
    xlab="治療", ylab="得点差"
)

par(new=T) 

plot(
    c(1.15, 2.15), 
    c(Aの平均, Bの平均), 
    col = "red",
    pch=20,
    ylim=c(-10, 90), xlim = c(0.5, 2.5), 
    xaxt="n", xlab="", ylab="")

arrows(
    1.15: 2.15, 
    c(Aの平均, Bの平均) - c(Aの平均-Aの下限, Bの平均-Bの下限), 
    1.15: 2.15, 
    c(Aの平均, Bの平均) + c(Aの上限-Aの平均, Bの上限-Bの平均), 
    lwd=1.0, angle=90, length=0.08, code=3, col="red" #code・・・髭の場所
)

グラフの消去

dev.off()

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

タイトルとURLをコピーしました