作者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)