作者anovachen ( )
标题Re: [问题] 统计问题-如何重抽
时间Sun Dec 29 02:53:44 2013
NB: 建立母体的方法可参考celestialgod的程式,
这里是示范比较简单的作法...
此外,这种简易版程式的效率有点差,而且模拟次数太大可能会塞爆记忆体。
使用R软体:
#设定乱数种子(让抽样结果在每次模拟时都一样,方便别人验证结果)
set.seed(0) #真正在模拟时可删除此指令
#建立母体
population<-NULL
population[1:6]<-"A"
population[7:9]<-"B"
population[10:16]<-"C"
population[17:20]<-"D"
population[21:30]<-"E"
samplesize<-15
#N为模拟次数(视电脑速度和记忆体大小决定)
N<-100000
#抽样
samples<-matrix(data="",nr=N,nc=15)
for (i in 1:N){
samples[i,]<-sample(population,size=samplesize,replace=FALSE)
}
#计算理论机率,此为多变数超几何分布(每一物种各抽中三个)
choose(6,3)*choose(3,3)*choose(7,3)*choose(4,3)*choose(10,3)/choose(30,15)
#每次抽样中,各物种出现次数统计
num<-matrix(data=0,nr=N,nc=5)
for (i in 1:N){
num[i,1]<-sum(ifelse(samples[i,]=="A",1,0))
num[i,2]<-sum(ifelse(samples[i,]=="B",1,0))
num[i,3]<-sum(ifelse(samples[i,]=="C",1,0))
num[i,4]<-sum(ifelse(samples[i,]=="D",1,0))
num[i,5]<-sum(ifelse(samples[i,]=="E",1,0))
}
#计算每一种各抽中三个的机率
count<-0
for (i in 1:N){
if (num[i,1]==3 && num[i,2]==3 && num[i,3]==3 && num[i,4]==3
&& num[i,5]==3) count=count+1
}
prob<-count/N
print(prob)
参考结果:
> choose(6,3)*choose(3,3)*choose(7,3)*choose(4,3)*choose(10,3)/choose(30,15)
[1] 0.0021661
> print(prob)
[1] 0.00208
如果四舍五入到小数点後第四位,两者很接近。
※ 引述《buzzmonkey (笑笑羊)》之铭言:
: 如果是跟统计软体有关请重发文章
: 如果跟论文有关也烦请您重发文章
: 文章类别是为了帮助大家搜寻资料与解答,造成不便之处请见谅
: 想请教一下群聚重抽,有什麽样的软体可以和要如何做
: 例如我有ABCDE五个物种,右边分别为所观察的到只数加起来共30只
: A 6
: B 3
: C 7
: D 4
: E 10
: 现在要进行重抽看如果是只剩15只的情况,那分别为哪几个物种各为几只?
: 谢谢大家
--
1F:推 buzzmonkey:1 12/29 17:11
2F:推 buzzmonkey:感谢分享>< 12/29 17:15
※ 编辑: anovachen 来自: 111.255.233.137 (12/30 07:45)