这可能是一个非常简单的问题。假设我有多个类别值人群,以及一组“目标”类别。 例如
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
的增加明显增加了至少一种类别的存在,计算并非独立于抽样规模。
任何人都有一个想法如何评估不受样本量影响的情况?
答案 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))