如何在扫帚包的tidy()函数输出中添加星号?

bcd*_*niz 2 r dataframe lm broom tidyverse

我一直tidy()在R中使用broom软件包的功能来打印我的模型摘要。

但是,该tidy()函数返回没有星号的p值,这使许多习惯于在模型摘要中看到星号的人感到有些奇怪。

有谁知道在输出中添加星星的方法吗?

akr*_*run 6

我们可以使用一个方便的功能,stars.pvalgtools做这个

library(gtools)
library(broom)
library(dplyr)
data(mtcars)
mtcars %>%
   lm(mpg ~ wt + qsec, .) %>%
   tidy %>%
   mutate(signif = stars.pval(p.value))
#        term  estimate std.error  statistic      p.value signif
#1 (Intercept) 19.746223 5.2520617   3.759709 7.650466e-04    ***
#2          wt -5.047982 0.4839974 -10.429771 2.518948e-11    ***
#3        qsec  0.929198 0.2650173   3.506179 1.499883e-03     **
Run Code Online (Sandbox Code Playgroud)


nei*_*fws 5

这不是真的目的tidy。它用于从各种对象中整理数据帧,而不是提供有关那些对象的其他度量。

您始终可以编写一个函数来根据p值生成星标,并使用生成的数据框添加一列tidy。例如:

make_stars <- function(pval) {
  stars = ""
  if(pval <= 0.001)
    stars = "***"
  if(pval > 0.001 & pval <= 0.01)
    stars = "**"
  if(pval > 0.01 & pval <= 0.05)
    stars = "*"
  if(pval > 0.05 & pval <= 0.1)
     stars = "."
  stars
}
Run Code Online (Sandbox Code Playgroud)

然后是这样的:

library(broom)
library(dplyr)

mtcars %>% 
  lm(mpg ~ wt + qsec, .) %>% 
  tidy() %>% 
  mutate(signif = sapply(p.value, function(x) make_stars(x)))

         term  estimate std.error  statistic      p.value signif
1 (Intercept) 19.746223 5.2520617   3.759709 7.650466e-04    ***
2          wt -5.047982 0.4839974 -10.429771 2.518948e-11    ***
3        qsec  0.929198 0.2650173   3.506179 1.499883e-03     **
Run Code Online (Sandbox Code Playgroud)