R语言 向p值添加星号

qrjkbowd  于 2023-03-20  发布在  其他
关注(0)|答案(4)|浏览(369)

我已经计算了几个变量均值差异的方差F检验p值。现在我想添加“星号”来指示p值的显著性水平。我想用 * 表示10%水平的显著性,用表示5%水平的显著性,用*表示1%水平的显著性。
我的数据如下所示:

structure(list(Variables = c("A", "B", "C", "D", "E"), 
               `Anova F-Test p-Value` = c(0.05, 5e-04, 0.5, 0.05, 0.01)), 
          class = "data.frame", row.names = c(NA, -5L))

有人能帮我输入密码吗?

nwsw7zdq

nwsw7zdq1#

你可以建立你自己的函数。但是注意这不是传统的星星系统(如果你在某处提到尺度是完全可以的)。

stars.pval <- function(x){
  stars <- c("***", "**", "*", "n.s.")
  var <- c(0, 0.01, 0.05, 0.10, 1)
  i <- findInterval(x, var, left.open = T, rightmost.closed = T)
  stars[i]
}

transform(dat, stars = stars.pval(dat$`Anova F-Test p-Value`))

  Variables Anova.F.Test.p.Value stars
1         A                5e-02    **
2         B                5e-04   ***
3         C                5e-01  n.s.
4         D                5e-02    **
5         E                1e-02   ***
9rygscc1

9rygscc12#

我建议对此使用cut
编辑:注解。使用right = FALSE来定义p〈= alpha为显著,使用right = TRUE来定义p〈alpha为显著。还修改了-Inf和Inf的0和1,这通常在剪切中更好地处理边界。

dt$stars <- cut(dt[[2]], breaks = c(-Inf, 0.01, 0.05, 0.10, Inf), 
                labels = c("***", "**", "*", "n.s."), right = FALSE)

dt

#   Variables Anova F-Test p-Value stars
# 1         A               0.0500     *
# 2         B               0.0005   ***
# 3         C               0.5000  n.s.
# 4         D               0.0500     *
# 5         E               0.0100    **
x7yiwoj4

x7yiwoj43#

有一个内置的R:

df$stars <- symnum(df$`Anova F-Test p-Value`, 
                     symbols   = c("***","**","*",".","n.s."),
                     cutpoints = c(0,  .001,.01,.05, .1, 1),
                     corr      = FALSE
                   )
df
  Variables Anova F-Test p-Value stars
1         A                5e-02     *
2         B                5e-04   ***
3         C                5e-01  n.s.
4         D                5e-02     *
5         E                1e-02    **
ssgvzors

ssgvzors4#

gtools library有一个stars.pval() function,它接受p值的数值向量,并使用R的标准定义返回星号

相关问题