Rで標準偏差のエラーバーをつけた棒グラフを描く

最近Rという統計専門のプログラミング言語に出会いました。というか先生に無理やりやれと言われて使い出したのだけど、これが実はかなり便利だったんだよね。

ただ、棒グラフにエラーバーを付けようとしたらそれは標準ではできないらしくて、いろいろ探してあったと思ったらインストールできませんと言われて、結局自分で作らされた。

以下、外れ値を除外して標準偏差のエラーバーが付いた棒グラフをプロットする関数。引数はベクトルを要素として持つリストと、各棒グラフにつけるラベル(文字列)を要素に持つベクトルとエラーバーの横幅を指定して入れる。

rm.outlier <- function(data,n=3){
s <- sd(data)
m <- mean(data)
out <- F
for(i in data){
if(abs(m-i)>s*n){
data <- data[-match(i,data)]
out <- T
}
}
if(out){
return(rm.outlier(data,n))
} else {
return(data)
}
}

barplot.error.sd <- function(datalist,datanames,error.w=0.25){
len <- length(datalist)
meanlist <- sdlist <-as.list(NA)

for(i in c(1:len)) datalist[[i]] <- rm.outlier(datalist[[i]])
for(i in c(1:len)){
meanlist[[i]] <- mean(datalist[[i]])
sdlist[[i]] <- sd(datalist[[i]])
}

means <- unlist(meanlist)
error.l <- unlist(sdlist)
ylim.u <- ylim.d <- 0
for(i in c(1:len)){
if(ylim.u < means[i]+error.l[i]) ylim.u <- means[i]+error.l[i]
if(ylim.d > means[i]-error.l[i]) ylim.d <- means[i]-error.l[i]
}
error.x <- barplot(means,names.arg=datanames,ylim=c(ylim.d,ylim.u))

arrows(error.x,means,error.x,means+error.l,angle=90,length=error.w)
arrows(error.x,means,error.x,means-error.l,angle=90,length=error.w)
}
posted by 右京 | R
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。