算法/概率练习

时间:2013-02-08 02:04:10

标签: algorithm probability rosalind

我正在尝试从rosalind项目中解决一个练习,但显然仍然犯了一些错误。全文可用here,但我较短的抽象解释和尝试如下。请帮我找出我做错了什么:

我们有3组商品:AAAaaa。我们从Aa中的1开始,并执行生成新项目的k次迭代。在每次迭代中,组中的每个项目:

  • Aa可以产生:AA(25%),Aa(50%),aa(25%)
  • AA可以产生:AA(50%),Aa(50%)
  • aa可以产生:aa(50%),Aa(50%)

作为迭代的结果,我们计算每个组的预期项目数,假设我们在上一次迭代中从每个项目生成2个新项目。所以我们最终得到:

  • 0th iter:AA:0,Aa:1,aa:0
  • 1st iter:AA:。5,Aa:1,aa:。5
  • 2nd iter:AA:1,Aa:2,aa:1
  • 等。 - 组间比例保持在1:2:1

每次迭代的预期值/人口总和为2^iteration,项目在群组Aa中的概率始终为50%。

到目前为止,我希望我是对的,但我们真正追求的是:如果我们重复这两项,那么在N组中至少有Aa个项目的可能性是多少?实验两次。 (应该相当于:如果我们将组列表扩展到NAaBb,那么在组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

我在哪里弄错了? (如果可能的话,请指出错误,而不是给出一个解决方案,这样就不会有破坏者试图自己解决它)

1 个答案:

答案 0 :(得分:1)

我首先按照你的例子认为这似乎有道理,但过了一会儿我发现了问题所在。

这是指向你错误的指针:

您已计算出在第二个基因组中获得至少一个Aa--且至少有一个--Bb的概率。但这还不足以确定第二代中是否至少有一个AaBbAa----Bb必须重合。

例如考虑以下第二代:aaBb, AABb, Aabb, AaBB所有人都有Aa----Bb,但代中没有AaBb