嵌套分类变量,bootstrap,然后在 R 中提取中位数
nesting categorical variable, bootstrap, then extract median in R
我在使用看似简单的解决方案时遇到了问题。我有一个包含一些 locations
的数据框,每个位置都有一个与之关联的 value
。我按位置嵌套了 data.frame,然后 bootstrap 使用 purrr
对值进行了调整(见下文)。
library(tidyverse)
library(modelr)
library(purrr)
locations <- c("grave","pinkham","lower pinkham", "meadow", "dodge", "young")
values <- rnorm(n = 100, mean = 3, sd = .5)
df <- data.frame(df)
df.boot <- df %>%
nest(-locations) %>%
mutate(boot = map(data,~bootstrap(.,n=100, id = "values")))
现在我试图从最终列表 df.boot$boot
中的每个 bootstrap 中获取中位数,但似乎无法弄清楚?我试过应用 map(boot, median)
但我越深入挖掘就越觉得没有意义。 boot
列表中想要的向量是 idx
,我可以从中获取中值然后存储它(几乎与 boot
函数的作用相同,但通过唯一的分类变量进行迭代)。任何帮助将非常感激。我可能只是走错了路...
如果我们需要提取median
library(dplyr)
library(purrr)
library(modelr)
out <- df %>%
group_by(locations) %>%
nest %>%
mutate(boot = map(data, ~ bootstrap(.x, n = 100, id = 'values') %>%
pull('strap') %>%
map_dbl(~ as_tibble(.x) %>%
pull('values') %>%
median)))
out
# A tibble: 6 x 3
# Groups: locations [6]
# locations data boot
# <fct> <list> <list>
#1 pinkham <tibble [12 × 1]> <dbl [100]>
#2 lower pinkham <tibble [17 × 1]> <dbl [100]>
#3 meadow <tibble [16 × 1]> <dbl [100]>
#4 dodge <tibble [22 × 1]> <dbl [100]>
#5 grave <tibble [21 × 1]> <dbl [100]>
#6 young <tibble [12 × 1]> <dbl [100]>
数据
df <- data.frame(values, locations = sample(locations, 100, replace = TRUE))
我在使用看似简单的解决方案时遇到了问题。我有一个包含一些 locations
的数据框,每个位置都有一个与之关联的 value
。我按位置嵌套了 data.frame,然后 bootstrap 使用 purrr
对值进行了调整(见下文)。
library(tidyverse)
library(modelr)
library(purrr)
locations <- c("grave","pinkham","lower pinkham", "meadow", "dodge", "young")
values <- rnorm(n = 100, mean = 3, sd = .5)
df <- data.frame(df)
df.boot <- df %>%
nest(-locations) %>%
mutate(boot = map(data,~bootstrap(.,n=100, id = "values")))
现在我试图从最终列表 df.boot$boot
中的每个 bootstrap 中获取中位数,但似乎无法弄清楚?我试过应用 map(boot, median)
但我越深入挖掘就越觉得没有意义。 boot
列表中想要的向量是 idx
,我可以从中获取中值然后存储它(几乎与 boot
函数的作用相同,但通过唯一的分类变量进行迭代)。任何帮助将非常感激。我可能只是走错了路...
如果我们需要提取median
library(dplyr)
library(purrr)
library(modelr)
out <- df %>%
group_by(locations) %>%
nest %>%
mutate(boot = map(data, ~ bootstrap(.x, n = 100, id = 'values') %>%
pull('strap') %>%
map_dbl(~ as_tibble(.x) %>%
pull('values') %>%
median)))
out
# A tibble: 6 x 3
# Groups: locations [6]
# locations data boot
# <fct> <list> <list>
#1 pinkham <tibble [12 × 1]> <dbl [100]>
#2 lower pinkham <tibble [17 × 1]> <dbl [100]>
#3 meadow <tibble [16 × 1]> <dbl [100]>
#4 dodge <tibble [22 × 1]> <dbl [100]>
#5 grave <tibble [21 × 1]> <dbl [100]>
#6 young <tibble [12 × 1]> <dbl [100]>
数据
df <- data.frame(values, locations = sample(locations, 100, replace = TRUE))