以下场景已成为调查者(I),审阅者/编辑者(R,与CRAN不相关)和我(M)这三者中的最常见问题解答,是情节创建者。我们可以假设(R)是典型的医学大老板评论者,他只知道每个图都必须有误差条,否则是错误的。当涉及到统计审查员时,问题就不那么重要了。
情境
在典型的药理交叉研究中,测试了两种药物A和B对葡萄糖水平的影响。每位患者均按随机顺序进行两次测试,并且假定没有残留。主要终点是葡萄糖(BA)之间的差异,我们假设配对t检验就足够了。
(I)想要显示两种情况下的绝对葡萄糖水平的图。他担心(R)对误差条的需求,并要求在条形图中出现标准误差。让我们不要在这里开始条形图战争。
(I):那不是真的。条形重叠,并且我们有p = 0.03?那不是我在高中学到的。
(M):我们在这里有一个配对的设计。要求的误差线完全不相关,计数的是配对差异的SE / CI,图中未显示。如果我可以选择,并且没有太多数据,那么我希望使用以下图表
新增1:这是几个响应中提到的平行坐标图
(M):这些线显示了配对,并且大多数线都向上,这是正确的印象,因为斜率才是最重要的(好吧,这是绝对的,尽管如此)。
(I):那张照片令人困惑。没有人理解它,并且没有错误条(R在潜伏)。
(M):我们还可以添加另一个图,以显示差异的相关置信区间。距零线的距离给人以效果大小的印象。
(I):没人做
(R):它浪费了珍贵的树木
(男):(作为一个好德国人):是的,在树上指点了。但是,当我们进行多种处理和多种对比时,我还是会使用它(并且永远不会将其发布)。
有什么建议吗?如果要创建绘图,R代码在下面。
# Graphics for Crossover experiments
library(ggplot2)
library(plyr)
theme_set(theme_bw()+theme(panel.margin=grid::unit(0,"lines")))
n = 20
effect = 5
set.seed(4711)
glu0 = rnorm(n,120,30)
glu1 = glu0 + rnorm(n,effect,7)
dt = data.frame(patient = rep(paste0("P",10:(9+n))),
treatment = rep(c("A","B"), each=n),glucose = c(glu0,glu1))
dt1 = ddply(dt,.(treatment), function(x){
data.frame(glucose = mean(x$glucose), se = sqrt(var(x$glucose)/nrow(x)) )})
tt = t.test(glucose~treatment,paired=TRUE,data=dt,conf.int=TRUE)
dt2 = data.frame(diff = -tt$estimate,low=-tt$conf.int[2], up=-tt$conf.int[1])
p = paste("p =",signif(tt$p.value,2))
png(height=300,width=300)
ggplot(dt1, aes(x=treatment, y=glucose, fill=treatment))+
geom_bar(stat="identity")+
geom_errorbar(aes(ymin=glucose-se, ymax=glucose+se),size=1., width=0.3)+
geom_text(aes(1.5,150),label=p,size=6)
ggplot(dt,aes(x=treatment,y=glucose, group=patient))+ylim(0,190)+
geom_line()+geom_point(size=4.5)+
geom_text(aes(1.5,60),label=p,size=6)
ggplot(dt2,aes(x="",y=diff))+
geom_errorbar(aes(ymin=low,ymax=up),size=1.5,width=0.2)+
geom_text(aes(1,-0.8),label=p,size=6)+
ylab("95% CI of difference glucose B-A")+ ylim(-10,10)+
theme(panel.border=element_blank(), panel.grid.major.x=element_blank(),
panel.grid.major.y=element_line(size=1,colour="grey88"))
dev.off()