5

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

我们有 3 组项目:AAAaaa。我们从 1 in 开始Aak迭代生成新项目。在每次迭代中,组中的每个项目:

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

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

  • 第 0 次迭代::AA0,Aa:1,aa:0
  • 第一次迭代:AA: .5, Aa: 1, aa: .5
  • 第二次迭代:AA: 1, Aa: 2, aa: 1
  • 等等 - 组之间的比例保持在 1:2:1

每次迭代的期望值/总体的总和是2^iteration,并且项目在组中的概率Aa始终为 50%。

到目前为止,我希望我是对的,但我们真正追求的是:如果我们重复实验两次,至少两次N都在组中的项目的机会是多少。Aa(应该相当于:如果我们将组列表扩展到, , .... 从原始问题中,至少有N项目在组中的机会是多少)AaBbAABBAABb

所以项目出现的概率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

我在哪里做错了?(如果可能,请只指出错误,而不是给出解决方案,以免给试图自行解决的人留下剧透)

4

1 回答 1

1

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

这是指向您的错误的指针:

您已经计算了Aa--在第二代中获得至少一个和至少一个的概率--Bb。但这还不足以确定AaBb第二代是否至少有一个,Aa--并且--Bb必须重合。

例如,考虑下面的第二代:aaBb, AABb, Aabb, AaBB所有个体在这一代中都有Aa----Bb没有AaBb

于 2013-02-08T09:00:11.753 回答