Фитнес-цели
Давайте смоделируем, как уровень активности влияет на снижение веса, используя данные современных фитнес-трекеров. В дни, когда вы ходите в спортзал, вы делаете в среднем около 15 тысяч шагов, а в остальные дни — около 5 тысяч. В спортзал вы ходите 40% дней. Смоделируем количество шагов за день как случайную величину с распределением Пуассона со средним \(\lambda\), которое зависит от того, идёте вы в спортзал или нет.
Для простоты предположим: если вы делаете более 10 тысяч шагов, то с вероятностью 80% теряете 1 фунт и с вероятностью 20% набираете 1 фунт. При менее 8 тысяч шагов вероятности меняются местами. В остальных случаях шансы на потерю или набор 1 фунта одинаковы. Используя эту информацию, вычислите вероятность снижения веса за месяц.
Это упражнение является частью курса
Статистическое моделирование на Python
Инструкции к упражнению
- Смоделируйте переменную
stepsкак случайную величину с распределением Пуассона для заданного дня, используя значениеlam. - Установите
probравным[0.2, 0.8], еслиsteps > 10000, или[0.8, 0.2], еслиsteps < 8000. Просуммируйте весь потерянный или набранный за месяц вес в переменнойw. - Вычислите и выведите долю симуляций, в которых итоговый вес за месяц в
outcomesоказался меньше 0. Сохраните результат в переменнуюweight_loss_outcomes_fracи используйте её для вывода результатов.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Simulate steps & choose prob
for _ in range(sims):
w = []
for i in range(days):
lam = np.random.choice([5000, 15000], p=[0.6, 0.4], size=1)
____ = np.random.poisson(____)
if steps > 10000:
prob = ____
elif steps < 8000:
prob = ____
else:
prob = [0.5, 0.5]
w.append(np.random.choice([1, -1], p=prob))
outcomes.append(sum(w))
# Calculate fraction of outcomes where there was a weight loss
weight_loss_outcomes_frac = ____
print("Probability of Weight Loss = {}".format(____))