简体   繁体   中英

Is there a R function that convert p.value to significance code?

summary displays significance code for p.values. Is there a R function that convert p.value to significance code? for example: 0.02 --> '*' and 0.005 --> '**' ?

Use symnum as shown below. ?symnum for more info.

p.values <- c(9.5e-15, 0.02)
Signif <- symnum(p.values, corr = FALSE, na = FALSE, cutpoints = c(0, 
    0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))

giving:

> str(Signif)
Class 'noquote'  atomic [1:2] *** *
  ..- attr(*, "legend")= chr "0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1"

The above code is used in R itself in stats::printCoefmat (see ?printCoefmat ) which is called from stats:::print.summary.lm . Note that it produces an object of class "noquote" and also provides a legend in the "legend" attribute.

Tracking down the code used by summary , you can find the following in stats:::printCoefmat :

Signif <- symnum(pv, corr = FALSE, na = FALSE, 
                 cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), 
                 symbols = c("***", "**", "*", ".", " "))

You can create your own function to do it, such as

signif.num <- function(x) {
    symnum(x, corr = FALSE, na = FALSE, legend = FALSE,
           cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), 
           symbols = c("***", "**", "*", ".", " "))
}
signif.num(c(1e-8, 0.01, 0.05, 0.1, 0.2))

(Note the last value is just a space and not visible in the output)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM