假设我有一个以下数据集,该数据集显示了一个假设实验的每个状态的三个观察值的列表:
state <- c("Iowa", "Minnesota", "Illinois")
outcome <- list(c(5, 11, 11), c(3, 12, 8), c(9, 14, 2))
dat <- tibble(state, outcome)
每行包含该州的名称,以及按位置垂直对齐的实验结果。(第一行保存第一个实验的结果,第二行保存第二个实验的结果,依此类推。)我正在尝试确定某个状态具有实验中位数的概率。例如:
因此,给定较小的样本,我们将为每个状态分配以下概率:
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] 删除。
我来说两句