From 288c355776936cb49759ef3f2eaddabda5293ed5 Mon Sep 17 00:00:00 2001 From: Victoria Cano Date: Tue, 24 Mar 2026 10:36:19 +0100 Subject: [PATCH] solutions to lab --- .../lab-intro-probability-checkpoint.ipynb | 251 ++++++++++++++++++ lab-intro-probability.ipynb | 179 +++++++++++-- 2 files changed, 402 insertions(+), 28 deletions(-) create mode 100644 .ipynb_checkpoints/lab-intro-probability-checkpoint.ipynb diff --git a/.ipynb_checkpoints/lab-intro-probability-checkpoint.ipynb b/.ipynb_checkpoints/lab-intro-probability-checkpoint.ipynb new file mode 100644 index 0000000..5893fc1 --- /dev/null +++ b/.ipynb_checkpoints/lab-intro-probability-checkpoint.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lab | Intro to Probability" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Objective**\n", + "\n", + "Welcome to this Intro to Probability lab, where we explore decision-making scenarios through the lens of probability and strategic analysis. In the business world, making informed decisions is crucial, especially when faced with uncertainties. This lab focuses on scenarios where probabilistic outcomes play a significant role in shaping strategies and outcomes. Students will engage in exercises that require assessing and choosing optimal paths based on data-driven insights. The goal is to enhance your skills by applying probability concepts to solve real-world problems." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 1**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ironhack Airlines \n", + "\n", + "Often Airlines sell more tickets than they have seats available, this is called overbooking. Consider the following:\n", + "- A plane has 450 seats. \n", + "- Based on historical data we conclude that each individual passenger has a 3% chance of missing it's flight. \n", + "\n", + "If the Ironhack Airlines routinely sells 460 tickets, what is the chance that they have a seats for all passenger?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 2**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ironhack Call Center " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose a customer service representative at a call center is handling customer complaints. Consider the following:\n", + "- The probability of successfully resolving a customer complaint on the first attempt is 0.3. \n", + "\n", + "\n", + "What is the probability that the representative needs to make at least three attempts before successfully resolving a customer complaint?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 3**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ironhack Website" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider a scenario related to Ironhack website traffic. Where:\n", + "- our website takes on average 500 visits per hour.\n", + "- the website's server is designed to handle up to 550 vists per hour.\n", + "\n", + "\n", + "What is the probability of the website server being overwhelmed?" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the probability of being overwhelmed at some point during a day? (consider 24hours)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 4**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Ironhack Helpdesk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider a scenario related to the time between arrivals of customers at a service desk.\n", + "\n", + "On average, a customers arrives every 10minutes.\n", + "\n", + "What is the probability that the next customer will arrive within the next 5 minutes?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If there is no customer for 15minutes, employees can that a 5minutes break.\n", + "\n", + "What is the probability an employee taking a break?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 5**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The weights of a certain species of birds follow a normal distribution with a mean weight of 150 grams and a standard deviation of 10 grams. \n", + "\n", + "- If we randomly select a bird, what is the probability that its weight is between 140 and 160 grams?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge 6**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the lifetime (in hours) of a certain electronic component follows an exponential distribution with a mean lifetime of 50 hours, what is the probability that the component fails within the first 30 hours?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#code here" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lab-intro-probability.ipynb b/lab-intro-probability.ipynb index 5893fc1..9cdf698 100644 --- a/lab-intro-probability.ipynb +++ b/lab-intro-probability.ipynb @@ -38,11 +38,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The probability that all passengers get seats is: 0.88\n" + ] + } + ], "source": [ - "#code here" + "from scipy.stats import binom\n", + "\n", + "n = 460\n", + "p = 0.97\n", + "\n", + "binom_dist = binom(n, p)\n", + "\n", + "# Probability that 450 or fewer passengers show up\n", + "prob = binom_dist.cdf(450)\n", + "\n", + "print(f\"The probability that all passengers get seats is: {prob:.2f}\")" ] }, { @@ -72,11 +90,23 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.48999999999999994\n" + ] + } + ], "source": [ - "#code here" + "#If probability of successfully resolving a customer complaint on the first attempt is 0.3, then the probability of unsuccess is 0.7\n", + "#If you need to make at least three attempts before successfully resolving a customer complaint that means that the first two attempts were unsuccessful, so if we calculate this probability we can get the probability of a success from 3 tries and above \n", + "\n", + "result = 0.7*0.7\n", + "print(result)" ] }, { @@ -107,11 +137,26 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The probability that website is overwhelmed 0.0129\n" + ] + } + ], "source": [ - "#code here" + "from scipy.stats import poisson\n", + "\n", + "mu = 500\n", + "poisson_dist = poisson(mu)\n", + "\n", + "prob = 1 - poisson_dist.cdf(550)\n", + "\n", + "print(f\"The probability that website is overwhelmed {prob:.4f}\")" ] }, { @@ -123,11 +168,24 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The probability that website is overwhelmed at some point during the day 0.2677\n" + ] + } + ], "source": [ - "#code here" + "#probability of being overwhelmed is 0.0129 at one hour\n", + "\n", + "p = 0.0129\n", + "prob_overwhelmed = 1 - (1 - p)**24\n", + "\n", + "print(f\"The probability that website is overwhelmed at some point during the day {prob_overwhelmed:.4f}\")" ] }, { @@ -157,10 +215,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.3934693402873666)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.stats import expon\n", + "\n", + "\n", + "lambda_value = 0.1 \n", + "\n", + "lambda_inv = expon(scale = 1/lambda_value)\n", + "\n", + "lambda_inv.cdf(5)" + ] }, { "cell_type": "markdown", @@ -173,10 +251,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.2231301601484298)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1 - lambda_inv.cdf(15)" + ] }, { "cell_type": "markdown", @@ -196,11 +287,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The probability that the birds's weight is between 140 and 160 gramsis 0.68\n" + ] + } + ], "source": [ - "#code here" + "from scipy.stats import norm\n", + "\n", + "mean = 150\n", + "std = 10\n", + "\n", + "norm_dist = norm(loc = mean, scale = std)\n", + "print(f\"The probability that the birds's weight is between 140 and 160 gramsis {norm_dist.cdf(160) - norm_dist.cdf(140): .2f}\")" ] }, { @@ -219,19 +324,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.4511883639059736)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#code here" + "from scipy.stats import expon\n", + "\n", + "\n", + "lambda_value = 1/50 \n", + "\n", + "lambda_inv = expon(scale = 1/lambda_value)\n", + "\n", + "lambda_inv.cdf(30)" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda env:base] *", "language": "python", - "name": "python3" + "name": "conda-base-py" }, "language_info": { "codemirror_mode": { @@ -243,9 +366,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.13.9" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 }