用dplyr引导置信区间

Sal*_*dor 1 r confidence-interval dplyr

这里查看答案 如何估计自举间隔?ggplot2列表上也提出了这个问题。

library(dplyr)
mtcars %>%
group_by(vs) %>%
summarise(mean.mpg = mean(mpg, na.rm = TRUE),
    sd.mpg = sd(mpg, na.rm = TRUE),
    n.mpg = n()) %>%
mutate(se.mpg = sd.mpg / sqrt(n.mpg),
 lower.ci.mpg = mean.mpg - qt(1 - (0.05 / 2), n.mpg - 1) * se.mpg,
 upper.ci.mpg = mean.mpg + qt(1 - (0.05 / 2), n.mpg - 1) * se.mpg)
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 5

Hmisc软件包具有smean.cl.boot轻松计算简单的引导置信区间的功能。最困难的部分(IMO)将结果的多个输出(函数返回一个3元素的数值向量)合并到dplyr工作流中(请参阅dplyr :: mutate以添加多个值

library(Hmisc)  ## optional if using Hmisc:: below
library(dplyr)
mtcars %>%
  group_by(vs) %>%
  do(data.frame(rbind(Hmisc::smean.cl.boot(.$mpg))))
Run Code Online (Sandbox Code Playgroud)

新的列标只是MeanLowerUpper,但额外的setNames调用将解决这个问题?

如果做很多事情,

bootf <- function(x,var="mpg") {
    newstuff <- rbind(Hmisc::smean.cl.boot(x[[var]])) %>%
         data.frame %>%
         setNames(paste(var,c("mean","lwr","upr"),sep="_"))
    return(newstuff)
}
mtcars %>% group_by(vs) %>% do(bootf(.))
mtcars %>% group_by(cyl) %>% do(bootf(.))
Run Code Online (Sandbox Code Playgroud)