0

独自のデータを投稿できないため、ここでランダムなデータ セットを生成しました。素晴らしいデータではありませんが、私がやろうとしていることを説明するはずです。

具体的には、私は 3 つの治療を受けており、その効果は毎年測定されています。各処理は毎年 6 回繰り返されます。

ggplot2 を使用して、従属変数 (DV) に対する治療の効果を年ごとに (つまり、研究の過程で) プロットしたい

私が試してみました:

ggplot(test, aes(x = factor(Year), y = DV, fill = factor(Grp))) + 
geom_boxplot()

これは、私が生成したこのランダム データではうまく機能しますが、実際のデータでは、ボックスのサイズははるかに可変であり、グラフを解釈するのは非常に困難です。物事を単純化するために私がやりたかったことは、代わりに(ボックスを使用するのではなく)年で処理平均をプロットし、これらの処理平均に標準誤差を追加することでした. また、これらの処理手段を、毎年の各処理の平均値の間の直線で結合したいと考えています。これを行う方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1

4

1 つの方法は、新しいデータ フレームにプロットする前に、平均値と sd 値を再計算することです。stat_別の方法は、独自の関数を定義することです。以下はstat_summary()ヘルプページの修正例です。これにより、毎年の各処理の平均と信頼区間が計算され、 としてプロットされgeom="pointrange"ます。行は と で追加されstat_summary()ますgeom="line"

stat_sum_df <- function(fun, geom="crossbar", ...) {
      stat_summary(fun.data=fun, geom=geom, width=0.2, ...)
  }

ggplot(test, aes(x = factor(Year), y = DV, colour=Grp,group=Grp)) + 
  stat_sum_df("mean_cl_normal",geom="pointrange")+
  stat_summary(fun.y="mean",geom="line")

ここに画像の説明を入力

アップデート

標準エラーを取得するには、新しい関数を作成する必要があります。と名付けましたstat_mean_sd()。内でこの関数を使用しますstat_summary()

stat_mean_sd<-function(x){
  cal.df<-data.frame(
    y=mean(x),
    ymin=mean(x)-sd(x)/sqrt(length(x)),
    ymax=mean(x)+sd(x)/sqrt(length(x)))
  return(cal.df)
}

ggplot(test, aes(x = factor(Year), y = DV, colour=Grp,group=Grp)) + 
  stat_summary(fun.data=stat_mean_sd,geom="pointrange")+
  stat_summary(fun.y="mean",geom="line")

ここに画像の説明を入力

于 2013-07-15T18:09:58.960 に答える