示例函数R语言

时间:2014-10-15 04:37:24

标签: r

你是怎么写的?         假设你有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))

3 个答案:

答案 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民主党人的概率。 这是问题的精确解决方案,并且与提议的模拟结果一致。