首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用R计算在列表中的中位数的概率?

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

Stack Overflow用户
提问于 2020-09-12 19:13:41
回答 2查看 64关注 0票数 2

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

代码语言:javascript
复制
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%

  • Minnesota's概率为中位数:2 / 3 = 67%

  • Illinois's为中位数的概率:0 / 3 = 0%

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-12 20:42:15

这里有一个tidyverse解决方案:

代码语言:javascript
复制
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%    
票数 2
EN

Stack Overflow用户

发布于 2020-09-12 21:02:51

下面是使用prop.table + factor的基本R选项

代码语言:javascript
复制
within(
  dat,
  media_prob <- prop.table(
    table(factor(
      state[sapply(
        asplit(do.call(rbind, outcome), 2),
        function(x) which(x == median(x))
      )],
      levels = state
    ))
  )
)

这给

代码语言:javascript
复制
  state     outcome   media_prob
  <chr>     <list>    <table>
1 Iowa      <dbl [3]> 0.3333333
2 Minnesota <dbl [3]> 0.6666667
3 Illinois  <dbl [3]> 0.0000000
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63864013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档