Алгоритмическое / вероятностное упражнение
Я пытаюсь выполнить упражнение из проекта Розалинд, но, по-видимому, продолжаю ошибаться. Полный текст доступен здесь, но моя более короткая абстрактная интерпретация и попытка заключаются в следующем. Пожалуйста, помогите мне найти, что я делаю не так:
У нас есть 3 группы товаров: AA
, Aa
, aa
, Мы начинаем с 1 в Aa
и делать k
итерации генерации новых предметов. На каждой итерации каждый элемент в группе:
Aa
может произвести:AA
(25%),Aa
(50%),aa
(25%)AA
может произвести:AA
(50%),Aa
(50%)aa
может произвести:aa
(50%),Aa
(50%)
В результате итерации мы подсчитываем ожидаемое количество элементов для каждой группы, предполагая, что мы генерируем 2 новых элемента из каждого в предыдущей итерации. Таким образом, мы в конечном итоге с:
- 0-й итер:
AA
: 0,Aa
: 1,aa
: 0 - 1-й итер:
AA
:.5,Aa
: 1,aa
:.5 - 2-й итер:
AA
: 1,Aa
: 2,aa
: 1 - и т.д. - пропорции остаются между 1:2:1 между группами
Сумма ожидаемых значений / населения на каждой итерации 2^iteration
и вероятность того, что предмет находится в группе Aa
всегда 50%.
До сих пор я надеюсь, что я прав, но на самом деле мы стремимся к тому, чтобы: N
предметы, которые находятся в группе Aa
оба раза, если мы повторим эксперимент дважды. (должно быть эквивалентно: каковы шансы иметь по крайней мере N
предметы в группе AaBb
если мы расширим список групп до AABB
, AABb
.... из оригинального вопроса)
Таким образом, вероятность того, что предмет находится в Aa
составляет 50%, сумма ожидаемых значений от итерации (или 2^iteration
) и, бросая это при scipy, используя тестовые данные (k=2, N=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 ответ
Сначала я последовал вашему примеру и подумал, что он, кажется, имеет смысл, но через некоторое время я обнаружил, в чем проблема.
Вот указатель на вашу ошибку:
Вы рассчитали вероятность получения хотя бы одного Aa--
во втором поколении и хотя бы один --Bb
, Но этого недостаточно, чтобы выяснить, есть ли хотя бы один AaBb
во втором поколении Aa--
а также --Bb
должны совпадать.
Рассмотрим для примера следующее второе поколение: aaBb, AABb, Aabb, AaBB
Все люди имеют Aa--
или же --Bb
но нет AaBb
в поколении.