始める無料で始める

フィットネス目標

最新のフィットネストラッカーを使って、活動量が体重減少にどう影響するかをモデル化しましょう。ジムに行く日は平均1万5千歩、行かない日は平均5千歩です。ジムに行く確率は40%とします。1日の歩数は、ジムに行くかどうかによって平均 \(\lambda\) が変わるポアソン分布に従うと仮定します。

単純化のため、1日の歩数が1万歩を超えると80%の確率で1ポンド減り、20%の確率で1ポンド増えるとします。8千歩未満の場合は確率が逆になります。それ以外の場合は、1ポンド増える確率と減る確率が同じとします。これらの情報に基づいて、1か月で体重が減る確率を求めてください。

この演習はコースの一部です

Pythonで学ぶ統計シミュレーション

コースを見る

演習の手順

  • 与えられた lam の値に基づいて、その日の steps をポアソン分布の乱数としてシミュレーションします。
  • steps > 10000 のときは prob[0.2, 0.8]steps < 8000 のときは [0.8, 0.2] に設定します。1か月分の増減を w に蓄積して合計します。
  • outcomes に保存された1か月の合計体重が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(____))
コードを編集して実行