0

我在这里生成了一组随机数据,因为我无法发布自己的数据。这不是很好的数据,但它应该说明我正在尝试做的事情。

具体来说,我有三种治疗方法,每年都会测量它们的效果。每个处理每年重复6次。

我想使用 ggplot2 绘制治疗对因变量 (DV) 的影响与年份(即在研究过程中)

我努力了:

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

这对我生成的随机数据很有效,但对于我的实际数据,框的大小变化更大,而且图表很难解释。为了简化事情,我想做的是用年份(而不是使用方框)绘制处理均值,并将标准误差添加到这些处理均值中。我还想将这些治疗方法与每年每种治疗方法的平均值之间的直线连接起来。有谁知道这样做的方法?

提前致谢!

4

1 回答 1

4

一种方法是在绘制新数据框之前重新计算平均值和标准差值。另一种方法是定义自己的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 回答