Poniższy scenariusz stał się najczęściej zadawanym pytaniem w trio badacza (I), recenzenta / redaktora (R, niezwiązanego z CRAN) i mnie (M) jako twórcy fabuły. Możemy założyć, że (R) jest typowym recenzentem medycznym dużego bossa, który wie tylko, że każda fabuła musi mieć pasek błędu, w przeciwnym razie jest to błąd. Gdy zaangażowany jest recenzent statystyczny, problemy są znacznie mniej krytyczne.
Scenariusz
W typowym farmakologicznym badaniu krzyżowym dwa leki A i B są testowane pod kątem ich wpływu na poziom glukozy. Każdy pacjent jest badany dwukrotnie w losowej kolejności i przy założeniu braku przeniesienia. Pierwszorzędowym punktem końcowym jest różnica między glukozą (BA) i zakładamy, że sparowany test t jest odpowiedni.
(I) chce wykresu, który pokazuje bezwzględne poziomy glukozy w obu przypadkach. Obawia się (R) chęci stosowania słupków błędów i prosi o standardowe błędy na wykresach słupkowych. Nie zaczynajmy tutaj wojny na wykresie słupkowym ._)
(I): To nie może być prawda. Słupki nakładają się, a my mamy p = 0,03? Tego nie nauczyłem się w szkole średniej.
(M): Mamy tutaj sparowany projekt. Żądane słupki błędów są całkowicie nieistotne, liczy się SE / CI sparowanych różnic, które nie są pokazane na wykresie. Gdybym miał wybór i nie było zbyt wielu danych, wolałbym następujący wykres
Dodano 1: Jest to równoległy wykres współrzędnych wspomniany w kilku odpowiedziach
(M): Linie pokazują parowanie, a większość linii idzie w górę, i to jest właściwe wrażenie, ponieważ liczy się nachylenie (ok, to jest kategoryczne, ale mimo to).
(I): To zdjęcie jest mylące. Nikt tego nie rozumie i nie ma pasków błędów (R czai się).
(M): Możemy również dodać inny wykres pokazujący odpowiedni przedział ufności różnicy. Odległość od linii zerowej daje wrażenie wielkości efektu.
(I): Nikt tego nie robi
(R): I marnuje cenne drzewa
(M): (Jako dobry Niemiec): Tak, punkt na drzewach jest zajęty. Niemniej jednak używam tego (i nigdy go nie publikuję), gdy mamy wiele zabiegów i wiele kontrastów.
Jakieś sugestie ? Kod R znajduje się poniżej, jeśli chcesz utworzyć fabułę.
# 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()