如何在 R 图中显示显着的 p 值

问题描述 投票:0回答:1

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

Time    SD  Average Situation   n   se

我使用了这个代码

library(ggplot2)
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,但我真的希望那些带有星号的图表能够显示出显着性。

r plot p-value
1个回答
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
是否适合依赖时间的结果......

© www.soinside.com 2019 - 2024. All rights reserved.