裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ggplot と base(その4)

2019年12月06日 | ブログラミング

「ggplot では,容易にエラーバーのついた折れ線グラフが描けます!」っていうけど,

ggplot のエラーバーグラフは,エラーバーの横線が長すぎる。

ところで,そのエラーバーは標準偏差なの標準誤差なのそれともそれ以外?それを明示しないと読者を惑わす(書いてあっても,ただしく理解してもらえるかどうか怪しい)。

この図は mean ± sd で描いたもの。

R だって,エラーバー描画は arrows 関数を加えるだけで「簡単に書ける」。

以下の図は,mean ± se で描いたもの。

se = sd / sqrt(サンプルサイズ)

エラーバーの長さは,サンプルサイズが 10  でも当然だが 1/sqrt(10) ≒ 0.3 倍(ほぼ 1/3)になる。

 

library(ggplot2)
library(ggsci)

x <- data.frame(
    date = c(1, 2, 3, 4, 5,
             1, 2, 3, 4, 5,
             1, 2, 3, 4, 5),
    treat = c("A", "A", "A", "A", "A",
              "B", "B", "B", "B", "B",
              "C", "C", "C", "C", "C"),
    mean = c(200, 203, 193, 193, 187,
             192, 211, 223, 232, 243,
             198, 200, 201, 204, 203),
    sd = c(4.2, 3.1, 3.2, 3.6, 3.5,
           4.1, 3.5, 3.6, 4.0, 4.3,
           4.2, 4.4, 4.3, 4.3, 4.1)
)


ggplot(x, aes(x = date, y = mean, color = treat)) +
    geom_line() +
    scale_color_nejm() +
    geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd, width = 0.3))



###################

mean = matrix(c(200, 203, 193, 193, 187,
                192, 211, 223, 232, 243,
                198, 200, 201, 204, 203), ncol = 3)
sd = matrix(c(4.2, 3.1, 3.2, 3.6, 3.5,
              4.1, 3.5, 3.6, 4.0, 4.3,
              4.2, 4.4, 4.3, 4.3, 4.1), ncol = 3)
n = 10             # サンプルサイズ
err = sd / sqrt(n) # 標準誤差(標準偏差で描きたいときは,上で n = 1 とする)
g = ncol(mean) # 群数
d = nrow(mean) # 日数
old = par(mar = c(3, 3, 0.5, 3), mgp = c(1.8, 0.4, 0))
color = rep("gray", g)
lwd = rep(1, g)
color[2] = "red"
lwd[2] = 2
matplot(mean,
    type="l",
    col = color,    # 色
    lwd = lwd,      # 太さ
    lty = 1,        # 線種

    tck = -0.02,    # ティックマークの長さ
    las = 1,        # 縦軸目盛りを水平に
    xlab = "date",
    ylab = "mean",
    bty = "l")     # 枠は描かない
arrows(1:d, mean - err, 1:d, mean + err,
    length = 0.025, angle = 90, code = 3, col = rep(color, each = d), xpd = TRUE)
text(d + 0.05, mean[d, ], paste("treat", LETTERS[1:g], sep = "-"),
    col = color, pos = 4, xpd = TRUE)
par(old)

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ggplot と base(その3) | トップ |  図を描くときに「やるべきこ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事