我試圖從rosalind項目中解決一個練習,但顯然不斷做出一些錯誤。全文可用here,但我較短的抽象解釋和嘗試如下。請幫我看看我做錯了什麼:算法/可能性練習
我們有3組物品:AA
,Aa
,aa
。我們從Aa
開始,並做k
迭代產生新項目。在每次迭代中組每一個項目:
Aa
能產生:AA
(25%),Aa
(50%),aa
(25%)AA
能產生:AA
(50%),Aa
( 50%)aa
能產生:aa
(50%),Aa
(50%)
作爲迭代的結果,我們計算的預計數每個組的項目,假設我們在前一次迭代中從每個項目生成2個新項目。所以,我們最終得到:
- 零ITER:
AA
:0,Aa
:1,aa
:0 - 1 ITER:
AA
:3.5,Aa
:1,aa
:.5 - 第二ITER:
AA
:1,Aa
:2,aa
:1 - 等 - 的比例保持在1:2:1組之間
每次迭代的期望值/人口總數爲2^iteration
,並且項目在組Aa
中的概率始終爲50%。
到目前爲止,我希望我是對的,但我們實際上是:如果我們重複實驗兩次,至少有N
項目在Aa
組兩次都有至少N
項目的機會。 (應相當於:什麼是具有組AaBb
至少N
項目,如果我們組的列表擴展到AABB
,AABb
,...,從原來的問題的機會)
所以項目的概率在Aa
爲50%,來自迭代(或2^iteration
)的期望值的總體總和,並且使用測試數據(k = 2,N = 1)在scipy中投擲該數據,我們得到該組Aa
中的至少一個項目:
In [75]: bin = scipy.stats.binom(4, .5)
In [76]: sum(b.pmf(x) for x in range(1, 4+1))
Out[76]: 0.93750000000000022
並且這至少對於一個項目如果我們有兩組組合,那麼AaBb
:
In [77]: sum(b.pmf(x) for x in range(1, 4+1))**2
Out[77]: 0.87890625000000044
這與答案完全不同的原題:0.684
哪裏我犯了一個錯誤?(如果可能的話,請只指出錯誤,而不是給出解決方案,以免有人試圖自行解決它的破壞者)
你可以添加一個pastebin嗎?你的代碼? – Killrawr
@Killrawr是的。這真是太難了,因爲它是一次性腳本,但它的確如我所描述的那樣:http://pastebin.com/uJz9Gb2Q – viraptor
我沒有看到AA和aa來自哪裏;這是否應該與人類繁殖的方式一致,即來自每個父母的一組染色體?那會給AB,Ab,aB和ab作爲染色體的可能性,不是嗎? –