我正在尝试从rosalind项目中解决一个练习,但显然仍然犯了一些错误。全文可用here,但我较短的抽象解释和尝试如下。请帮我找出我做错了什么:
我们有3组商品:AA
,Aa
,aa
。我们从Aa
中的1开始,并执行生成新项目的k
次迭代。在每次迭代中,组中的每个项目:
Aa
可以产生:AA
(25%),Aa
(50%),aa
(25%)AA
可以产生:AA
(50%),Aa
(50%)aa
可以产生:aa
(50%),Aa
(50%)作为迭代的结果,我们计算每个组的预期项目数,假设我们在上一次迭代中从每个项目生成2个新项目。所以我们最终得到:
AA
:0,Aa
:1,aa
:0 AA
:。5,Aa
:1,aa
:。5 AA
:1,Aa
:2,aa
:1 每次迭代的预期值/人口总和为2^iteration
,项目在群组Aa
中的概率始终为50%。
到目前为止,我希望我是对的,但我们真正追求的是:如果我们重复这两项,那么在N
组中至少有Aa
个项目的可能性是多少?实验两次。 (应该相当于:如果我们将组列表扩展到N
,AaBb
,那么在组AABB
中至少有AABb
项的可能性是多少...... 。来自原始问题)
因此项目在Aa
中的概率为50%,来自迭代(或2^iteration
)的预期值的总和,并使用测试数据(k = 2,N)将其投入scipy = 1),我们只为组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
我在哪里弄错了? (如果可能的话,请指出错误,而不是给出一个解决方案,这样就不会有破坏者试图自己解决它)
答案 0 :(得分:1)
我首先按照你的例子认为这似乎有道理,但过了一会儿我发现了问题所在。
这是指向你错误的指针:
您已计算出在第二个基因组中获得至少一个Aa--
且至少有一个--Bb
的概率。但这还不足以确定第二代中是否至少有一个AaBb
,Aa--
和--Bb
必须重合。
例如考虑以下第二代:aaBb, AABb, Aabb, AaBB
所有人都有Aa--
或--Bb
,但代中没有AaBb
。