如何使用R计算成为列表中位数的概率?

巴拉森

假设我有一个以下数据集,该数据集显示了一个假设实验的每个状态的三个观察值的列表:

state <- c("Iowa", "Minnesota", "Illinois")
outcome <- list(c(5, 11, 11), c(3, 12, 8), c(9, 14, 2))
dat <- tibble(state, outcome)

每行包含该州的名称,以及按位置垂直对齐的实验结果。(第一行保存第一个实验的结果,第二行保存第二个实验的结果,依此类推。)我正在尝试确定某个状态具有实验中位数概率例如:

  • 在第一个实验中,爱荷华州的中位数为5。
  • 在第二个实验中,明尼苏达州的中位数为11。
  • 在第三个实验中,明尼苏达州的中位数为8。

因此,给定较小的样本,我们将为每个状态分配以下概率:

  • 爱荷华州成为中位数的概率: 1 / 3 = 33%
  • 明尼苏达州成为中位数的可能性: 2 / 3 = 67%
  • 伊利诺伊州成为中位数的概率: 0 / 3 = 0%

如何使用R计算状态概率的中位数?提前致谢。

艾伦·卡梅伦

这是一个整洁的解决方案:

library(dplyr)
library(tidyr)

dat %>% 
  unnest(cols = outcome) %>% 
  group_by(state) %>% 
  mutate(experiment = seq(n())) %>% 
  group_by(experiment) %>% 
  mutate(is_median = as.numeric(outcome == median(outcome))) %>% 
  group_by(state) %>% 
  mutate(prob_median = scales::percent(sum(is_median)/length(is_median)))

#> # A tibble: 9 x 5
#> # Groups:   state [3]
#>   state     outcome experiment is_median prob_median
#>   <chr>       <dbl>      <int>     <dbl> <chr>      
#> 1 Iowa            5          1         1 33%        
#> 2 Iowa           11          2         0 33%        
#> 3 Iowa           11          3         0 33%        
#> 4 Minnesota       3          1         0 67%        
#> 5 Minnesota      12          2         1 67%        
#> 6 Minnesota       8          3         1 67%        
#> 7 Illinois        9          1         0 0%         
#> 8 Illinois       14          2         0 0%         
#> 9 Illinois        2          3         0 0%    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章