我试图从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作为染色体的可能性,不是吗? –