理学療法士がまとめたノート

統計学備忘録(R言語のメモ)

since2016 ときどきTEXのメモ

簡単なエラーバーの描き方

たぶんこれが最も簡単な書き方だと思います

Aの平均 = 2
Bの平均 = 3
Aの標準偏差 = 0.4  #ここに標本標準偏差や不偏標準偏差を代入します
Bの標準偏差 = 0.7
dplot <- plot(c(1,2), c(Aの平均, Bの平均), ylim = c(0,5), xlim = c(0.5, 2.5))
arrows(1:2, c(Aの平均, Bの平均) - c(Aの標準偏差, Bの標準偏差), 1:2,  c(Aの平均, Bの平均) + c(Aの標準偏差, Bの標準偏差), lwd=1.0,angle=90,length=0.1,code=3)

f:id:yoshida931:20200313154424p:plain:w400

データセットから描く場合は、tapply関数で一括処理します

id <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
治療 <- c("A","B","A","B","B","A","A","A","B","B","A","B","A","A","A","B","A","B","B","B")
治療前BP <- c(159,168,140,170,168,135,145,150,158,170,141,159,145,141,149,165,160,168,178,175)
治療後BP <- c(145,160,135,150,157,132,140,139,150,155,130,148,138,140,142,155,145,150,160,158)
BP変化量 <- c(治療後BP - 治療前BP)

meanAB <- tapply(BP変化量,治療,mean)
sdAB <- tapply(BP変化量, 治療, sd)   #不偏標準偏差
dplot <- plot(1:2, meanAB, ylim = c(-25,10), xlim = c(0.5, 2.5))
arrows(1:2, meanAB - sdAB, 1:2, meanAB + sdAB, lwd=1.0,angle=90,length=0.1,code=3)

f:id:yoshida931:20200313155819p:plain:w400

有意差検定の結果

x1 <- 1 # x=Aの位置
x2 <- 2 # x=Bの位置
y1 <- 4 # yの位置
yhA <- y1 - ( meanAB[1] + sdAB[1] ) - 3 # x=A,y=y1から下に伸ばす距離(上限から2メモリ離す)
yhB <- y1 - ( meanAB[2] + sdAB[2] ) - 3
xx <- segments(x0=x1, y0=y1, x1=x2) 
text((x1+x2)/2, 5, paste("*"), cex=2)  #アスタリスクを書く位置
segments(x1, y1, x1, y1-yhA)
segments(x2, y1, x2, y1-yhB)

f:id:yoshida931:20200313155910p:plain:w400