【问题标题】:obtain means and multiple confidence intervals of multiple models in R获得R中多个模型的均值和多个置信区间
【发布时间】:2019-02-26 22:02:31
【问题描述】:

我希望获得 R 中多个模型的 95% 和 90% 置信区间以及均值。

数据



data <- data.frame(occup = c(2,3,5,4,2,2,6,1,2,0),
                   unoccup = c(1,2,0,3,0,4,1,1,2,2),
                   month = c("feb", "feb", "feb", "feb", "feb", "mar", "mar", "mar", "mar", "mar"))

我有这个功能

binomNLL_ratio = function(p, k, N) {
  -sum(dbinom(k, prob = p, size = N, log=TRUE))
}

所需的库

library(purrr)
library(bbmle)

运行脚本

data %>%
   split(.$month) %>% map(~mle2(minuslog = binomNLL_ratio, start = list(p = 0.5), data = list(N = .$occup + .$unoccup, k = .$occup))) %>%
  map(confint, level = 0.95)

这很好地给了我每个月的 95% 置信区间。我还可以将0.95 替换为0.9 以获得90% CI,或者将map(confint) 替换为map(coef) 以获得每个月模型的平均值。

不过,理想情况下,我希望在同一数据框中获得每个模型的 95% CI、90% CI 和均值。如何传递多个函数和参数以获得我想要的结果?

感谢您的帮助。

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    这是一个狡猾的小家伙,我花了太多时间试图让invoke_map() 工作。最后,我选择了一种有点老套的做事方式,但它返回了一个带有 confint() 和 coef() 值的小标题:

    library(tidyverse)
    library(bbmle)
    #> Loading required package: stats4
    #> 
    #> Attaching package: 'bbmle'
    #> The following object is masked from 'package:dplyr':
    #> 
    #>     slice
    
    data <- data.frame(occup = c(2,3,5,4,2,2,6,1,2,0),
                       unoccup = c(1,2,0,3,0,4,1,1,2,2),
                       month = c("feb", "feb", "feb", "feb", "feb", "mar", "mar", "mar", "mar", "mar"))
    
    binomNLL_ratio = function(p, k, N) {
      -sum(dbinom(k, prob = p, size = N, log=TRUE))
    }
    
    data %>%
      split(.$month) %>% 
      map(~mle2(minuslog = binomNLL_ratio, start = list(p = 0.5), 
                data = list(N = .$occup + .$unoccup, k = .$occup))) %>% 
      imap_dfr(~ {tibble(confints = confint(.x, level = .95), 
                    coefs = coef(.x),
                    month = .y)})
    #> Warning in dbinom(k, prob = p, size = N, log = TRUE): NaNs produced
    
    #> Warning in dbinom(k, prob = p, size = N, log = TRUE): NaNs produced
    
    #> Warning in dbinom(k, prob = p, size = N, log = TRUE): NaNs produced
    
    #> Warning in dbinom(k, prob = p, size = N, log = TRUE): NaNs produced
    #> # A tibble: 4 x 3
    #>   confints coefs month
    #>      <dbl> <dbl> <chr>
    #> 1    0.523 0.727 feb  
    #> 2    0.881 0.727 feb  
    #> 3    0.317 0.524 mar  
    #> 4    0.725 0.524 mar
    

    由reprex package (v0.2.1) 于 2019 年 2 月 26 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2018-02-18
      • 2015-01-04
      相关资源
      最近更新 更多