gpt4 book ai didi

r - 在 R 中使用 modelrs bootstrap 获取中位数

转载 作者:行者123 更新时间:2023-12-04 14:24:52 25 4
gpt4 key购买 nike

我发现以下工作

iris %>% 
select(Sepal.Length) %>%
modelr::bootstrap(100) %>%
mutate(mean = map(strap, mean))

但下面没有

iris %>% 
select(Sepal.Length) %>%
modelr::bootstrap(100) %>%
mutate(median = map(strap, median))

唯一的区别是第二行代码使用了中位数。

我得到的错误是

Error in mutate_impl(.data, dots) : Evaluation error: unimplemented type 'list' in 'greater' .

最佳答案

代码看起来可以正常工作,但如果您 unnest它,你实际上只是得到了很多 NA那是因为你想拿 meanresample对象,它是一个分类列表,其中包含对重新采样的数据和特定重新采样的索引的引用。取这样一个列表的平均值是没有用的,所以返回 NA警告是有帮助的行为。要使代码正常工作,请将重新采样强制为数据框,您可以在 map 内像往常一样对其进行操作。的匿名函数。

对于直接路线,提取数据并取平均值,将列表简化为带有 map_dbl 的数字向量:

library(tidyverse)
set.seed(47)

iris %>%
select(Sepal.Length) %>%
modelr::bootstrap(100) %>%
mutate(sepal_mean = map_dbl(strap, ~mean(as_data_frame(.x)$Sepal.Length)))
#> # A tibble: 100 x 3
#> strap .id sepal_mean
#> <list> <chr> <dbl>
#> 1 <S3: resample> 001 5.844000
#> 2 <S3: resample> 002 6.016000
#> 3 <S3: resample> 003 5.851333
#> 4 <S3: resample> 004 5.869333
#> 5 <S3: resample> 005 5.840667
#> 6 <S3: resample> 006 5.825333
#> 7 <S3: resample> 007 5.824000
#> 8 <S3: resample> 008 5.790000
#> 9 <S3: resample> 009 5.858000
#> 10 <S3: resample> 010 5.810000
#> # ... with 90 more rows

将此方法转化为 median工作正常:

iris %>% 
select(Sepal.Length) %>%
modelr::bootstrap(100) %>%
mutate(sepal_median = map_dbl(strap, ~median(as_data_frame(.x)$Sepal.Length)))
#> # A tibble: 100 x 3
#> strap .id sepal_median
#> <list> <chr> <dbl>
#> 1 <S3: resample> 001 5.9
#> 2 <S3: resample> 002 5.8
#> 3 <S3: resample> 003 5.8
#> 4 <S3: resample> 004 5.7
#> 5 <S3: resample> 005 5.7
#> 6 <S3: resample> 006 5.8
#> 7 <S3: resample> 007 5.8
#> 8 <S3: resample> 008 5.7
#> 9 <S3: resample> 009 5.8
#> 10 <S3: resample> 010 5.7
#> # ... with 90 more rows

如果您同时想要中位数和均值,您可以反复将重采样强制到数据框,或将其存储在另一列中,但这两种方法都不是很有效。最好返回带有 map 的数据帧列表那可以是unnest编辑:

iris %>% 
select(Sepal.Length) %>%
modelr::bootstrap(100) %>%
mutate(stats = map(strap, ~summarise_all(as_data_frame(.x), funs(mean, median)))) %>%
unnest(stats)
#> # A tibble: 100 x 4
#> strap .id mean median
#> <list> <chr> <dbl> <dbl>
#> 1 <S3: resample> 001 5.744667 5.60
#> 2 <S3: resample> 002 5.725333 5.70
#> 3 <S3: resample> 003 5.808667 5.70
#> 4 <S3: resample> 004 5.809333 5.70
#> 5 <S3: resample> 005 5.964000 5.85
#> 6 <S3: resample> 006 5.931333 5.95
#> 7 <S3: resample> 007 5.838667 5.80
#> 8 <S3: resample> 008 5.926000 5.95
#> 9 <S3: resample> 009 5.855333 5.75
#> 10 <S3: resample> 010 5.888667 5.70
#> # ... with 90 more rows

关于r - 在 R 中使用 modelrs bootstrap 获取中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47878634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com