你是怎么写的? 假设你有800人口,其中300人是民主党人,400人是共和党人,100人是独立人士。 你会期望从这个人口中随机抽取一个10人的民主党人?
我写了
D<-1:300
I<-1:100
R<-1:400
Population<-c("D","I","R")
table(sample(Population,size=10, replace= TRUE))
但显然这是不对的。我有点困惑。
我找到了答案,而不是给字母d,i和r分配一个数字,只计算d,i和r的数量。
就像这样
弹出&LT; -c(REP( “d”,500),代表( “R”,300),代表( “I”,200)) samplepop&LT ;-(样品(弹出,如图10所示,替换= FALSE))
答案 0 :(得分:2)
创建人口:
> population <- c(rep('Democrat', 300), rep('Independent', 100), rep('Republican', 400))
根据Richard Scriven的建议,对人口进行几千次的抽样调查:
> sapply(1:10000, function(i) {sum(sample(population, size = 10, replace=TRUE) == 'Democrat')})
答案 1 :(得分:0)
您可以在分析中添加概率权重向量。
Population<-c("D","I","R")
t = table(sample(Population,size=10, replace= TRUE, prob = c(0.375, 0.125, 0.5)))
> t
D I R
3 1 6
答案 2 :(得分:0)
当您从800人群中提取10个人时,您有choose(800,10)
个不同的方法来提取它们,其中choose
是组合的数量。如果您想知道提取N
民主党的方式有多少,那么您获得choose(500,10-N)*choose(300,N)
,因为您有500人中的10-N
非民主党人和N
民主党人300人要获得概率,您只需将上面的两个值除以。一般来说:
N<-0:10
probs<-(choose(500,10-N)*choose(300,N))/choose(800,10)
#calculate the average number of Democrats
sum(probs*N)
#[1] 3.75
#calculate the standard deviation
sqrt(sum(probs*N^2)-3.75^2)
#[1] 1.522284
probs
向量包含提取0,1,2,...,10民主党人的概率。
这是问题的精确解决方案,并且与提议的模拟结果一致。