健身目標
讓我們用現代健身追蹤器來模擬活動量如何影響體重變化。當你去健身房的日子,你平均大約走 15k 步,否則大約是 5k 步。你有 40% 的時間會去健身房。把一天的步數視為一個 Poisson 隨機變數,其平均數 \(\lambda\) 會依你是否去健身房而改變。
為了簡化,當你一天超過 10k 步時,有 80% 機率減少 1lb、20% 機率增加 1lb;當少於 8k 步時,機率相反。其他情況下,增加或減少 1lb 的機率各半。根據以上資訊,找出一個月內體重下降的機率。
本練習屬於課程
Python 的統計模擬
練習說明
- 依據
lam的值,將某一天的steps以 Poisson 隨機變數方式模擬。 - 若
steps > 10000,將prob設為[0.2, 0.8];若steps < 8000,設為[0.8, 0.2]。把一個月內儲存在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(____))