2009-09-16 10 views
14

私たちはすべて、メジアンや四分位範囲のような堅牢な対策が大好きですが、多くの分野では、公開された記事にボックスプロットがほとんど現れず、手段や標準エラーが常にそうしています。Boxplot schmoxplot:Rの要素によって調整された平均と標準誤差をプロットする方法は?

格子、ggplot2などでボックスプロットを描くのは簡単ですし、ギャラリーはそれらでいっぱいです。カテゴリ変数によって調整された平均的な手段と標準的なエラーを描く方法は同じですか?

私はこれらのようなプロットについて取っている:

http://freakonomics.blogs.nytimes.com/2008/07/30/how-big-is-your-halo-a-guest-post/

または何JMPで(図3を参照)、 "ダイヤモンド意味" と呼ばれています。

http://blogs.sas.com/jmp/index.php?/archives/127-What-Good-Are-Error-Bars.html

答えて

14

最初のプロットをちょうど blog post on imachordata.comで覆われた。 (帽子の先端はDavid Smith on blog.revolution-computing.comread the related documentation from Hadley on ggplot2でもかまいません。

ここではサンプルコードがあります:

library(ggplot2) 
data(mpg) 

#create a data frame with averages and standard deviations 
hwy.avg<-ddply(mpg, c("class", "year"), function(df) 
return(c(hwy.avg=mean(df$hwy), hwy.sd=sd(df$hwy)))) 

#create the barplot component 
avg.plot<-qplot(class, hwy.avg, fill=factor(year), data=hwy.avg, geom="bar", position="dodge") 

#first, define the width of the dodge 
dodge <- position_dodge(width=0.9) 

#now add the error bars to the plot 
avg.plot+geom_linerange(aes(ymax=hwy.avg+hwy.sd, ymin=hwy.avg-hwy.sd), position=dodge)+theme_bw() 

それはこのように見える終わる: alt text http://www.imachordata.com/wp-content/uploads/2009/09/barplot.png

+0

あなたはこの1つだけに私を打ち負かします!私は昨日、www.imachordata.comの記事を読んで、それを以前の同僚に電子メールで送った。 –

+0

Rブログ圏の小さな世界です。 :)私は最近惑星R(http://planetr.stderr.org/)に続き、それは少し圧倒的です。 – Shane

+0

私は怠け者であることをやめて、Rのブログリストを維持し始める必要があります。 –

0

ggplotは美的グラフを生成しますが、私はどのggplot出力を試してみて、公開する機智を持っていませんまだ。

日が来るまで、私は前述のグラフをどのように作っていますか?私は 'gplots'というグラフィックスパッケージを使って標準エラーバーを取得しています(既に計算したデータを使用しています)。このコードは、各クラス/カテゴリの2つ以上の要素を提供することに注意してください。これには、データが行列として入り、 "barplot2"関数の "beside = TRUE"コマンドでバーの積み重ねを維持する必要があります。

# Create the data (means) matrix 
# Using the matrix accommodates two or more factors for each class 

data.m <- matrix(c(75,34,19, 39,90,41), nrow = 2, ncol=3, byrow=TRUE, 
       dimnames = list(c("Factor 1", "Factor 2"), 
           c("Class A", "Class B", "Class C"))) 

# Create the standard error matrix 

error.m <- matrix(c(12,10,7, 4,7,3), nrow = 2, ncol = 3, byrow=TRUE) 

# Join the data and s.e. matrices into a data frame 

data.fr <- data.frame(data.m, error.m) 

# load library {gplots} 

library(gplots) 

# Plot the bar graph, with standard errors 

with(data.fr, 
    barplot2(data.m, beside=TRUE, axes=T, las=1, ylim = c(0,120), 
       main=" ", sub=" ", col=c("gray20",0), 
        xlab="Class", ylab="Total amount (Mean +/- s.e.)", 
       plot.ci=TRUE, ci.u=data.m+error.m, ci.l=data.m-error.m, ci.lty=1)) 

# Now, give it a legend: 

legend("topright", c("Factor 1", "Factor 2"), fill=c("gray20",0),box.lty=0) 

審美的にはかなり普通のジェーンですが、ほとんどの雑誌/老教授が見たいものです。

これらのサンプルデータによって生成されたグラフを投稿したいと思いますが、これはサイトの最初の投稿です。ごめんなさい。 (gplotsパッケージをインストールした後で)問題なく全部をコピー・ペーストできるはずです。

11

この質問はほぼ2歳になりましたが、実験の分野では新しいRユーザーとして大きな質問でした。このページはGoogleの結果で際立っています。私はちょうど私が現在のセットよりも好きな答えを発見したので、私はそれを追加すると思った。

パッケージsciplotは、タスクを簡単にします。 1つのコマンドでジョブを完了させます。

#only necessary to get the MPG dataset from ggplot for direct comparison 
library(ggplot2) 
data(mpg) 
attach(mpg) 

#the bargraph.CI function with a couple of parameters to match the ggplot example 
#see also lineplot.CI in the same package 
library(sciplot) 
bargraph.CI(
    class, #categorical factor for the x-axis 
    hwy, #numerical DV for the y-axis 
    year, #grouping factor 
    legend=T, 
    x.leg=19, 
    ylab="Highway MPG", 
    xlab="Class") 

ほとんどのデフォルトオプションでこの非常に実行可能なグラフが生成されます。エラーバーはデフォルトでは標準エラーですが、パラメータには関数が含まれているため、任意の値にすることができます。 sciplot bargraph.CI with mpg data

8

ゲームには少し遅れていますが、この解決策は将来のユーザーには役立つかもしれません。 Rでロードされたdiamond data.frameを使用し、stat_summaryと2つの(超短い)カスタム関数を利用しています。

require(ggplot2) 

# create functions to get the lower and upper bounds of the error bars 
stderr <- function(x){sqrt(var(x,na.rm=TRUE)/length(na.omit(x)))} 
lowsd <- function(x){return(mean(x)-stderr(x))} 
highsd <- function(x){return(mean(x)+stderr(x))} 

# create a ggplot 
ggplot(diamonds,aes(cut,price,fill=color))+ 
# first layer is barplot with means 
stat_summary(fun.y=mean, geom="bar", position="dodge", colour='white')+ 
# second layer overlays the error bars using the functions defined above 
stat_summary(fun.y=mean, fun.ymin=lowsd, fun.ymax=highsd, geom="errorbar", position="dodge",color = 'black', size=.5) 

bar + error plot http://i41.tinypic.com/ief48o.png

関連する問題