从不同大小的总体中得出分类变量的平均概率

时间:2019-07-06 16:07:04

标签: r probability categorical-data

这可能是一个非常简单的问题。假设我有多个类别值人群,以及一组“目标”类别。 例如

set.seed(500)

pops <- list(
 val1 = c('20','20','10','90','100','30','10','20'),
 val2 = c('20','110','1400','50','40'),
 val3 = c('100','50','30')
)

target <- c('20','100','40')

在所有人群中,至少个目标类别的平均概率是多少?

我可以计算每个值的频率分布,因此可以计算出特定结果的机会。

# Frequency table
p <- table(pops$val1) / length(pops$val1)

# The probability of getting at least of the target values
sum(p[which(names(p) %in% target)])
# 0.5

问题在于,随着N的增加明显增加了至少一种类别的存在,计算并非独立于抽样规模。

任何人都有一个想法如何评估不受样本量影响的情况?

1 个答案:

答案 0 :(得分:0)

我们可以使用

sapply(pops, function(x) {
       p <- table(x)/length(x)
      sum(p[which(names(p) %in% target)])
 })

或使用tidyverse

library(tidyverse)
stack(pops) %>%
  group_by(ind) %>% 
  mutate(n1 = n()) %>%
  group_by(values, add = TRUE) %>% 
  summarise(perc = n()/n1[1]) %>% 
  filter(values %in% target) %>% 
  summarise(perc = sum(perc))