【发布时间】:2021-07-18 12:39:14
【问题描述】:
我的 group_by 似乎没有使用 infer 包有什么原因吗?我正在尝试使用引导生成置信区间。
这段代码运行良好:
library(infer)
mtcars %>%
specify(response = wt) %>%
generate(reps = 1000, type = 'bootstrap') %>%
calculate(stat = 'mean') %>%
get_ci(level = 0.95)
lower_ci
<dbl>
upper_ci
<dbl>
2.897742 3.535187
但是当我将 mtcar 组合成一个长数据框,然后尝试使用 group_by 进行推断时,我只得到一组摘要行(没有任何分组)。
remove(mtcars)
mtcars <- mtcars %>%
mutate(am = as_factor(am), cyl = as_factor(cyl), gear = as_factor(gear), vs = as_factor(vs), carb = as_factor(carb))
mtcars_long_numeric <- mtcars %>%
select_if(is.numeric) %>%
pivot_longer(everything(), names_to = 'names', values_to = 'values')
mtcars_long_numeric %>%
group_by(names) %>%
specify(response = values) %>%
generate(reps = 1000, type = 'bootstrap') %>%
calculate(stat = 'mean') %>%
get_ci(level = 0.95)
lower_ci
<dbl>
upper_ci
<dbl>
56.24676 84.73951
作为最后的小测试,我按名称 == wt 过滤我的新数据框,并获得与我第一次运行时相同的值。所以看起来除了 group_by 不起作用之外没有任何明显的错误?
mtcars_long_numeric_filtered <- mtcars_long_numeric %>%
filter(names == "wt")
mtcars_long_numeric_filtered %>%
specify(response = values) %>%
generate(reps = 1000, type = 'bootstrap') %>%
calculate(stat = 'mean') %>%
get_ci(level = 0.95)
lower_ci
<dbl>
upper_ci
<dbl>
2.91292 3.542712
我很惊讶这给我带来了麻烦 - 我认为 infer 是使用这些 dplyr 类型动词/语法设计的,我认为我在这里的示例可能在其他情况下通常有用,尽管我可能遗漏了一些明显的东西.
【问题讨论】:
标签: r bootstrap-4 confidence-interval