14

私たちは皆、中央値や四分位範囲などの堅牢な尺度を愛していますが、多くの分野では、箱ひげ図が公開された記事に表示されることはほとんどありませんが、平均値と標準誤差は常に表示されます.

箱ひげ図を描くのは格子、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

4

5 に答える 5

14

最初のプロットは、imachordata.com のブログ投稿で取り上げられたばかりです。( blog.revolution-computing.com のDavid Smith に感謝の意を表します) ggplot2 で Hadley の関連ドキュメントを読むこともできます。

コード例は次のとおりです。

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()

最終的には次のようになります。 代替テキスト

于 2009-09-16T13:13:53.850 に答える
11

この質問は現在ほぼ 2 年前のものですが、実験分野の新しい R ユーザーとして、これは私にとって大きな質問であり、このページは Google の検索結果で目立つようになりました。現在のセットよりも気に入った回答を見つけたので、追加することにしました。

パッケージ sciplot を使用すると、タスクが非常に簡単になります。単一のコマンドでジョブを完了します

#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")

ほとんどデフォルトのオプションで、この非常に実用的なグラフを生成します。誤差範囲はデフォルトで標準誤差ですが、パラメーターは関数を取るため、任意の値にすることができます。mpgデータを含むsciplot bargraph.CI

于 2011-06-30T20:47:09.720 に答える
1

平均とその標準誤差は、 を使用して簡単に自動的に計算されggplot2ます。ダイナマイト プロットではなく、デフォルトのポイント範囲を使用することをお勧めします。位置を手動で指定する必要がある場合があります。方法は次のとおりです。

ggplot(mtcars, aes(factor(cyl), hp, color = factor(am))) +
  stat_summary(position = position_dodge(0.5))

ここに画像の説明を入力

于 2019-03-10T21:25:33.823 に答える
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」パッケージをインストールした後)全体をコピーして貼り付けることができるはずです。

于 2010-01-05T05:08:35.187 に答える