Fitness goals
Let's model how activity levels impact weight loss using modern fitness trackers. On days when you go to the gym, you average around 15k steps, and around 5k steps otherwise. You go to the gym 40% of the time. Let's model the step counts in a day as a Poisson random variable with a mean \(\lambda\) dependent on whether or not you go to the gym.
For simplicity, let’s say you have an 80% chance of losing 1lb and a 20% chance of gaining 1lb when you get more than 10k steps. The probabilities are reversed when you get less than 8k steps. Otherwise, there's an even chance of gaining or losing 1lb. Given all this information, find the probability of losing weight in a month.
This exercise is part of the course
Statistical Simulation in Python
Exercise instructions
- Simulate
steps
as a Poisson random variable for a given day based on the value oflam
. - Set
prob
to[0.2, 0.8]
ifsteps > 10000
or to[0.8, 0.2]
ifsteps < 8000
. Sum up all the weight lost or gained in a month stored inw
. - Calculate and print the fraction of simulations where total weight for a month in
outcomes
is less than 0. Save asweight_loss_outcomes_frac
and use that to print your results.
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
# 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(____))