diff --git a/your-code/.ipynb_checkpoints/main-checkpoint.ipynb b/your-code/.ipynb_checkpoints/main-checkpoint.ipynb new file mode 100644 index 0000000..3c083f0 --- /dev/null +++ b/your-code/.ipynb_checkpoints/main-checkpoint.ipynb @@ -0,0 +1,430 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intro to Bayesian Statistics Lab\n", + "\n", + "Complete the following set of exercises to solidify your knowledge of Bayesian statistics and Bayesian data analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Cookie Problem\n", + "\n", + "Suppose we have two bowls of cookies. Bowl 1 contains 30 vanilla cookies and 10 chocolate cookies. Bowl 2 contains 20 of each. You randomly pick one cookie out of one of the bowls, and it is vanilla. Use Bayes Theorem to calculate the probability that the vanilla cookie you picked came from Bowl 1?" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de vainilla del Bowl1 es de: 60.0%\n" + ] + } + ], + "source": [ + "# 2 bowls\n", + "# b1 = 30v, 10c --> vanilla : 0.75\n", + "# b2 = 20v, 20c --> vanilla --> 0.5\n", + "\n", + "import numpy as np\n", + "\n", + "def bayes_rule(priors, likelihoods):\n", + " marg = sum(np.multiply(priors, likelihoods))\n", + " post = np.divide(np.multiply(priors, likelihoods), marg)\n", + " return post\n", + "\n", + "priors = [1/2, 1/2]\n", + "likelihoods = [0.75, 0.5] #bowl1, bowl2\n", + "\n", + "print(f\"Probabilidad de tomar la galleta de vainilla del Bowl1 es de: {str((bayes_rule(priors, likelihoods)[0])*100)+'%'}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the probability that it came from Bowl 2?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de vainilla del Bowl2 es de: 40.0%\n" + ] + } + ], + "source": [ + "print(f\"Probabilidad de tomar la galleta de vainilla del Bowl2 es de: {str((bayes_rule(priors, likelihoods)[1])*100)+'%'}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What if the cookie you had picked was chocolate? What are the probabilities that the chocolate cookie came from Bowl 1 and Bowl 2 respectively?" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de chocolate del Bowl1 es de: 33.0%\n", + "Probabilidad de tomar la galleta de chocolate del Bowl2 es de: 67.0%\n" + ] + } + ], + "source": [ + "priors = [1/2, 1/2]\n", + "likelihoods = [0.25, 0.5] #bowl1, bowl2\n", + "\n", + "for i in range(0,2):\n", + " print(f\"Probabilidad de tomar la galleta de chocolate del Bowl{i+1} es de: {str((round(bayes_rule(priors, likelihoods)[i],2))*100)+'%'}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Candy Problem\n", + "\n", + "Suppose you have two bags of candies:\n", + "\n", + "- In Bag 1, the mix of colors is:\n", + " - Brown - 30%\n", + " - Yellow - 20%\n", + " - Red - 20%\n", + " - Green - 10%\n", + " - Orange - 10%\n", + " - Tan - 10%\n", + " \n", + "- In Bag 2, the mix of colors is:\n", + " - Blue - 24%\n", + " - Green - 20%\n", + " - Orange - 16%\n", + " - Yellow - 14%\n", + " - Red - 13%\n", + " - Brown - 13%\n", + " \n", + "Not knowing which bag is which, you randomly draw one candy from each bag. One is yellow and one is green. What is the probability that the yellow one came from the Bag 1?\n", + "\n", + "*Hint: For the likelihoods, you will need to multiply the probabilities of drawing yellow from one bag and green from the other bag and vice versa.*" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.74074074, 0.25925926])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "priors = [1/2, 1/2]\n", + "#yellow bag1 and green bag2 = 0.20*0.20\n", + "#green bag1 and yellow bag2 = 0.10*0.14\n", + "likelihoods = [(0.20*0.20),(0.10*0.14)] \n", + "\n", + "bayes_rule(priors, likelihoods)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the probability that the yellow candy came from Bag 2?" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad que el amarillo viene de Bag2 es 26.0%\n" + ] + } + ], + "source": [ + "print(f\"Probabilidad que el amarillo viene de Bag2 es {str((round(bayes_rule(priors, likelihoods)[1],2))*100)+'%'}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What are the probabilities that the green one came from Bag 1 and Bag 2 respectively?" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad que el verde viene de Bag1 es de 26.0%\n", + "Probabilidad que el verde viene de Bag2 es de 74.0%\n" + ] + } + ], + "source": [ + "for i in range(1,-1,-1):\n", + " print(f\"Probabilidad que el verde viene de Bag{1 if i == 1 else 2} es de {str((round(bayes_rule(priors, likelihoods)[i],2))*100)+'%'}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Monty Hall Problem\n", + "\n", + "Suppose you are a contestant on the popular game show *Let's Make a Deal*. The host of the show (Monty Hall) presents you with three doors - Door A, Door B, and Door C. He tells you that there is a sports car behind one of them and if you choose the correct one, you win the car!\n", + "\n", + "You select Door A, but then Monty makes things a little more interesting. He opens Door B to reveal that there is no sports car behind it and asks you if you would like to stick with your choice of Door A or switch your choice to Door C. Given this new information, what are the probabilities of you winning the car if you stick with Door A versus if you switch to Door C?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# inicialmente las probabilidades de obtener carro es de 1/3, 1/3, 1/3\n", + "\n", + "# una vez se destapa una puerta que NO tiene el carro, las posibilidades de tener carro es suben a 2/3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Bayesian Analysis \n", + "\n", + "Suppose you work for a landscaping company, and they want to advertise their service online. They create an ad and sit back waiting for the money to roll in. On the first day, the ad sends 100 visitors to the site and 14 of them sign up for landscaping services. Create a generative model to come up with the posterior distribution and produce a visualization of what the posterior distribution would look like given the observed data." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "n_draws = 100000\n", + "prior = pd.Series(np.random.uniform(0, 1, size=n_draws))\n", + "\n", + "prior.hist();" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "observed = 14\n", + "\n", + "def generative_model(param):\n", + " result = np.random.binomial(100, param)\n", + " return result\n", + "sim_data = list()\n", + "\n", + "for p in prior:\n", + " sim_data.append(generative_model(p))\n", + " \n", + "posterior = prior[list(map(lambda x: x == observed, sim_data))]\n", + "\n", + "posterior.hist();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Produce a set of descriptive statistics for the posterior distribution." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 1037.000000\n", + "mean 0.147777\n", + "std 0.034120\n", + "min 0.055490\n", + "25% 0.123705\n", + "50% 0.145381\n", + "75% 0.171003\n", + "max 0.317361\n", + "dtype: float64" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "posterior.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the 90% credible interval range?" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.08773787899945479 | 0.2163232974126731\n" + ] + } + ], + "source": [ + "print(posterior.quantile(.025), '|', posterior.quantile(.975))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the Maximum Likelihood Estimate?" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum Likelihood Estimate: 0.13 | 0.12632594021215043\n" + ] + } + ], + "source": [ + "rounded = posterior.round(2)\n", + "mode = rounded.mode()[0]\n", + "probability = list(rounded).count(mode)/len(rounded)\n", + "print('Maximum Likelihood Estimate: ', mode, '|',probability)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Aproximadamente el 13% de las personas quienes visitan el ad terminaran convirtiendo (comprando)\n", + "# Por lo que nuestra tasa de conversion es del 13%, es decir de cada 100 visitantes, 13 compran." + ] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/main.ipynb b/your-code/main.ipynb index 95bfcb9..3c083f0 100644 --- a/your-code/main.ipynb +++ b/your-code/main.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -31,10 +31,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de vainilla del Bowl1 es de: 60.0%\n" + ] + } + ], + "source": [ + "# 2 bowls\n", + "# b1 = 30v, 10c --> vanilla : 0.75\n", + "# b2 = 20v, 20c --> vanilla --> 0.5\n", + "\n", + "import numpy as np\n", + "\n", + "def bayes_rule(priors, likelihoods):\n", + " marg = sum(np.multiply(priors, likelihoods))\n", + " post = np.divide(np.multiply(priors, likelihoods), marg)\n", + " return post\n", + "\n", + "priors = [1/2, 1/2]\n", + "likelihoods = [0.75, 0.5] #bowl1, bowl2\n", + "\n", + "print(f\"Probabilidad de tomar la galleta de vainilla del Bowl1 es de: {str((bayes_rule(priors, likelihoods)[0])*100)+'%'}\")" + ] }, { "cell_type": "markdown", @@ -45,10 +69,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de vainilla del Bowl2 es de: 40.0%\n" + ] + } + ], + "source": [ + "print(f\"Probabilidad de tomar la galleta de vainilla del Bowl2 es de: {str((bayes_rule(priors, likelihoods)[1])*100)+'%'}\")" + ] }, { "cell_type": "markdown", @@ -59,10 +93,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 81, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad de tomar la galleta de chocolate del Bowl1 es de: 33.0%\n", + "Probabilidad de tomar la galleta de chocolate del Bowl2 es de: 67.0%\n" + ] + } + ], + "source": [ + "priors = [1/2, 1/2]\n", + "likelihoods = [0.25, 0.5] #bowl1, bowl2\n", + "\n", + "for i in range(0,2):\n", + " print(f\"Probabilidad de tomar la galleta de chocolate del Bowl{i+1} es de: {str((round(bayes_rule(priors, likelihoods)[i],2))*100)+'%'}\")" + ] }, { "cell_type": "markdown", @@ -95,10 +144,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.74074074, 0.25925926])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "priors = [1/2, 1/2]\n", + "#yellow bag1 and green bag2 = 0.20*0.20\n", + "#green bag1 and yellow bag2 = 0.10*0.14\n", + "likelihoods = [(0.20*0.20),(0.10*0.14)] \n", + "\n", + "bayes_rule(priors, likelihoods)" + ] }, { "cell_type": "markdown", @@ -109,10 +176,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 63, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad que el amarillo viene de Bag2 es 26.0%\n" + ] + } + ], + "source": [ + "print(f\"Probabilidad que el amarillo viene de Bag2 es {str((round(bayes_rule(priors, likelihoods)[1],2))*100)+'%'}\")" + ] }, { "cell_type": "markdown", @@ -123,10 +200,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probabilidad que el verde viene de Bag1 es de 26.0%\n", + "Probabilidad que el verde viene de Bag2 es de 74.0%\n" + ] + } + ], + "source": [ + "for i in range(1,-1,-1):\n", + " print(f\"Probabilidad que el verde viene de Bag{1 if i == 1 else 2} es de {str((round(bayes_rule(priors, likelihoods)[i],2))*100)+'%'}\")" + ] }, { "cell_type": "markdown", @@ -144,7 +233,11 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# inicialmente las probabilidades de obtener carro es de 1/3, 1/3, 1/3\n", + "\n", + "# una vez se destapa una puerta que NO tiene el carro, las posibilidades de tener carro es suben a 2/3" + ] }, { "cell_type": "markdown", @@ -157,10 +250,64 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 73, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "n_draws = 100000\n", + "prior = pd.Series(np.random.uniform(0, 1, size=n_draws))\n", + "\n", + "prior.hist();" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "observed = 14\n", + "\n", + "def generative_model(param):\n", + " result = np.random.binomial(100, param)\n", + " return result\n", + "sim_data = list()\n", + "\n", + "for p in prior:\n", + " sim_data.append(generative_model(p))\n", + " \n", + "posterior = prior[list(map(lambda x: x == observed, sim_data))]\n", + "\n", + "posterior.hist();" + ] }, { "cell_type": "markdown", @@ -171,10 +318,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 77, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "count 1037.000000\n", + "mean 0.147777\n", + "std 0.034120\n", + "min 0.055490\n", + "25% 0.123705\n", + "50% 0.145381\n", + "75% 0.171003\n", + "max 0.317361\n", + "dtype: float64" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "posterior.describe()" + ] }, { "cell_type": "markdown", @@ -185,10 +353,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 78, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.08773787899945479 | 0.2163232974126731\n" + ] + } + ], + "source": [ + "print(posterior.quantile(.025), '|', posterior.quantile(.975))" + ] }, { "cell_type": "markdown", @@ -197,12 +375,35 @@ "What is the Maximum Likelihood Estimate?" ] }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum Likelihood Estimate: 0.13 | 0.12632594021215043\n" + ] + } + ], + "source": [ + "rounded = posterior.round(2)\n", + "mode = rounded.mode()[0]\n", + "probability = list(rounded).count(mode)/len(rounded)\n", + "print('Maximum Likelihood Estimate: ', mode, '|',probability)" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Aproximadamente el 13% de las personas quienes visitan el ad terminaran convirtiendo (comprando)\n", + "# Por lo que nuestra tasa de conversion es del 13%, es decir de cada 100 visitantes, 13 compran." + ] } ], "metadata": { @@ -221,7 +422,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.2" + "version": "3.7.3" } }, "nbformat": 4,