将星号添加到 p 值
Add stars to p-value
我计算了几个变量均值差异的 Anova 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))
有人可以帮我处理这里的代码吗?
您可以构建自己的函数。但是请注意,这不是传统的恒星系统(不过,如果您在某处提到比例尺,那完全没问题)。参见例如here.
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 ***
我建议为此使用 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 **
为此内置了一个 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 **
我计算了几个变量均值差异的 Anova 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))
有人可以帮我处理这里的代码吗?
您可以构建自己的函数。但是请注意,这不是传统的恒星系统(不过,如果您在某处提到比例尺,那完全没问题)。参见例如here.
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 ***
我建议为此使用 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 **
为此内置了一个 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 **