【问题标题】:R - dplyr bootstrap issueR - dplyr 引导问题
【发布时间】:2016-09-17 16:09:20
【问题描述】:

我在理解如何正确使用 dplyr bootstrap 函数时遇到问题。

我想要的是从两个随机分配的组中生成引导分布并计算均值的差异,例如:

library(dplyr) 
library(broom) 
data(mtcars) 

mtcars %>% 
  mutate(treat = sample(c(0, 1), 32, replace = T)) %>% 
  group_by(treat) %>%
  summarise(m = mean(disp)) %>% 
  summarise(m = m[treat == 1] - m[treat == 0])

问题是我需要重复此操作1001000 或更多次。

使用replicate,我可以做到

frep = function(mtcars) mtcars %>% 
  mutate(treat = sample(c(0, 1), 32, replace = T)) %>% 
  group_by(treat) %>%
  summarise(m = mean(disp)) %>% 
  summarise(m = m[treat == 1] - m[treat == 0])

replicate(1000, frep(mtcars = mtcars), simplify = T) %>% unlist()

并得到分布

我真的不知道如何使用bootstraphere。我应该如何开始?

mtcars %>% 
  bootstrap(10) %>% 
  mutate(treat = sample(c(0, 1), 32, replace = T)) 

mtcars %>% 
  bootstrap(10) %>% 
  do(tidy(treat = sample(c(0, 1), 32, replace = T))) 

它并没有真正起作用。我应该把bootstrap pip 放在哪里?

谢谢。

【问题讨论】:

  • 是的!谢谢你。太棒了。那么你能解释一下吗,我必须在 do 内创建一个 data.frame 吗?你能发表你的答案吗?再次感谢!
  • 当我们创建一个列'treat'时,我们用data.frame包装它以获得作为data.frame的输出。 . 表示 lhs%>% 上的数据集内容

标签: r dplyr statistics-bootstrap broom


【解决方案1】:

do 步骤中,我们用data.frame 包装并创建“处理”列,然后我们可以按“复制”和“处理”分组以获得summarised 输出列

mtcars %>% 
    bootstrap(10) %>% 
    do(data.frame(., treat = sample(c(0,1), 32, replace=TRUE))) %>% 
    group_by(replicate, treat) %>% 
    summarise(m = mean(disp)) %>%
    summarise(m = m[treat == 1] - m[treat == 0])
    #or as 1 occurs second and 0 second, we can also use
    #summarise(m = last(m) - first(m))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 2019-09-25
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多