如何在R图中显示重要的p值

时间:2013-10-05 12:07:59

标签: r plot p-value

所以我绘制了一些这种格式的数据

Time    SD  Average Situation   n   se

我使用了这段代码

ggplot(data, aes(x=Time, y=Average, colour=Situation)) + 
    geom_errorbar(aes(ymin=Average-se, ymax=Average+se), width=.1) +
    geom_line() +
    geom_point()

我想在Exp和Control之间进行T.test,我希望使用星号'*来显示图中的重要性....我很难找到执行此操作的代码....我知道如何做一个正常的T.test但我真的希望那些带有星号的图表显示出重要性

1 个答案:

答案 0 :(得分:0)

编辑我已根据您的评论重写了这一点,以提供适用于我的示例:

假设您想将t检验中的p值添加到图表中......

set.seed(1)
### data following OPs format
data <- data.frame(Time=seq(10),
                   Average=abs(rnorm(10)),
                   Situation=rep(letters[1:2], 5)
                   )
### get p value
pval <- t.test(data$Average[data$Situation=="a"],
               data$Average[data$Situation=="b"])$p.value
### strip to 3 significant digits
pval <- signif(pval, 3)
### add asterisk if <0.05
pval <- ifelse(pval<0.05, paste0(pval, " *"), pval)
pval <- paste0("t-test \n p=", pval)

### plot as per OP
ggplot(data, aes(x=Time, y=Average, colour=Situation)) + 
    geom_line() +
    geom_point()+
### annotate it near lower left corner
    annotate("text",
             x=0.25*max(data$Time),
             y=0.25*max(data$Average),
             label=pval)

enter image description here 有关更多选项,请参阅?annotate。如果您想要p值的符号范围,则可以通过调用switch而不是ifelse来修改它。

更大的问题可能是t-test是否适合时间依赖的结果......