Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
318 views

Foundations of Probability in Python

The document discusses flipping coins in Python to gain intuition about probability. It shows how to simulate coin flips using the bernoulli and binomial distributions from SciPy. The bernoulli.rvs() function is used to simulate single coin flips, while binomial.rvs() simulates flipping multiple coins. The document also covers using the random seed, probability mass functions, cumulative distribution functions, and calculating expected value, mean, and variance of coin flip simulations.

Uploaded by

sunny.anjani
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
318 views

Foundations of Probability in Python

The document discusses flipping coins in Python to gain intuition about probability. It shows how to simulate coin flips using the bernoulli and binomial distributions from SciPy. The bernoulli.rvs() function is used to simulate single coin flips, while binomial.rvs() simulates flipping multiple coins. The document also covers using the random seed, probability mass functions, cumulative distribution functions, and calculating expected value, mean, and variance of coin flip simulations.

Uploaded by

sunny.anjani
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Let’s ip a coin in

Python
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N

Alexander A. Ramírez M.
CEO @ Synergy Vision
Probability
Foundation of Data Science

Allows to produce data from models

Study regularities in random phenomena

FOUNDATIONS OF PROBABILITY IN PYTHON


Gain intuition
...with coin ips

FOUNDATIONS OF PROBABILITY IN PYTHON


Only two outcomes
Heads or Tails

FOUNDATIONS OF PROBABILITY IN PYTHON


Flipping a coin in Python
Bernoulli random experiment

from scipy.stats import bernoulli


bernoulli.rvs(p=0.5, size=1)

array([0])

Another draw

bernoulli.rvs(p=0.5, size=1)

array([1])

FOUNDATIONS OF PROBABILITY IN PYTHON


Flipping multiple coins
Change size parameter to ip more...

bernoulli.rvs(p=0.5, size=10)

array([0, 0, 0, 0, 0, 0, 1, 1, 0, 0])

How many heads?

sum(bernoulli.rvs(p=0.5, size=10))

FOUNDATIONS OF PROBABILITY IN PYTHON


Flipping multiple coins (Cont.)
Another draw...

sum(bernoulli.rvs(p=0.5, size=10))

FOUNDATIONS OF PROBABILITY IN PYTHON


Flipping multiple coins (Cont.)
Binomial random variable

from scipy.stats import binom


binom.rvs(n=10, p=0.5, size=1)

array([7])

Many draws

binom.rvs(n=10, p=0.5, size=10)

array([6, 2, 3, 5, 5, 5, 5, 4, 6, 6])

FOUNDATIONS OF PROBABILITY IN PYTHON


Flipping multiple coins (Cont.)
Biased coin draws

binom.rvs(n=10, p=0.3, size=10)

array([3, 4, 3, 3, 2, 2, 2, 2, 3, 6])

FOUNDATIONS OF PROBABILITY IN PYTHON


Random generator seed
Use the random_state parameter of the rvs() function

from scipy.stats import binom


binom.rvs(n=10, p=0.5, size=1, random_state=42)

Use numpy.random.seed()

import numpy as np
np.random.seed(42)

FOUNDATIONS OF PROBABILITY IN PYTHON


Random generator seed (Cont.)
Flipping 10 fair coins with a random seed

from scipy.stats import binom


import numpy as np

np.random.seed(42)
binom.rvs(n=10, p=0.5, size=1)

array([4])

FOUNDATIONS OF PROBABILITY IN PYTHON


Let's practice ipping
coins in Python
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N
Probability mass and
distribution
functions
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N

Alexander A. Ramírez M.
CEO @ Synergy Vision
Probability mass function (pmf)

binomial.pmf(k, n, p) = ( )p (1 − p)n−k
n k
k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability mass function (pmf)

binomial.pmf(k, n, p) = ( )p (1 − p)n−k
n k
k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability mass function (pmf) (Cont.)

binomial.pmf(k, n, p) = ( )p (1 − p)n−k
n k
k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability mass function (pmf) (Cont.)

binomial.pmf(k, n, p) = ( )p (1 − p)n−k
n k
k

FOUNDATIONS OF PROBABILITY IN PYTHON


FOUNDATIONS OF PROBABILITY IN PYTHON
Probability mass function (pmf) (Cont.)

binomial.pmf(k, n, p) = ( )p (1 − p)n−k
n k
k

In Python:

binom.pmf(k, n, p)

FOUNDATIONS OF PROBABILITY IN PYTHON


Calculating probabilities with `binom.pmf()`
# Probability of 2 heads after 10 throws with a fair coin
binom.pmf(k=2, n=10, p=0.5)

0.04394531249999999

# Probability of 5 heads after 10 throws with a fair coin


binom.pmf(k=5, n=10, p=0.5)

0.24609375000000025

FOUNDATIONS OF PROBABILITY IN PYTHON


Calculating probabilities with binom.pmf() (Cont.)
# Probability of 50 heads after 100 throws with p=0.3
binom.pmf(k=50, n=100, p=0.3)

1.3026227131445298e-05

# Probability of 65 heads after 100 throws with p=0.7


binom.pmf(k=65, n=100, p=0.7)

0.0467796823527298

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability distribution function (cdf)

binomial.cdf(k, n, p) = ( )p (1 − p) + ( )p(1 − p) + ... + ( )p (1 − p)n−k


n 0 n n n−1 n k
0 1 k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability distribution function (cdf) (Cont.)

binomial.cdf(k, n, p) = ( )p (1 − p) + ( )p(1 − p) + ... + ( )p (1 − p)n−k


n 0 n n n−1 n k
0 1 k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability distribution function (cdf) (Cont.)

binomial.cdf(k, n, p) = ( )p (1 − p) + ( )p(1 − p) + ... + ( )p (1 − p)n−k


n 0 n n n−1 n k
0 1 k

FOUNDATIONS OF PROBABILITY IN PYTHON


Probability distribution function (cdf) (Cont.)

binomial.cdf(k, n, p) = ( )p (1 − p) + ( )p(1 − p) + ... + ( )p (1 − p)n−k


n 0 n n n−1 n k
0 1 k

FOUNDATIONS OF PROBABILITY IN PYTHON


Cumulative distribution function (cdf)

FOUNDATIONS OF PROBABILITY IN PYTHON


Cumulative distribution function (cdf) (Cont.)

binomial.cdf(k, n, p) = ( )p (1 − p) + ( )p(1 − p) + ... + ( )p (1 − p)n−k


n 0 n n n−1 n k
0 1 k

In Python:

binom.cdf(k=1, n=3, p=0.5)

FOUNDATIONS OF PROBABILITY IN PYTHON


Calculating cumulative probabilities
# Probability of 5 heads or less after 10 throws with a fair coin
binom.cdf(k=5, n=10, p=0.5)

0.6230468749999999

# Probability of 50 heads or less after 100 throws with p=0.3


binom.cdf(k=50, n=100, p=0.3)

0.9999909653138043

FOUNDATIONS OF PROBABILITY IN PYTHON


Calculating cumulative probabilities (Cont.)
# Probability of more than 59 heads after 100 throws with p=0.7
1-binom.cdf(k=59, n=100, p=0.7)

0.9875015928335618

# Probability of more than 59 heads after 100 throws with p=0.7


binom.sf(k=59, n=100, p=0.7)

0.9875015928335618

FOUNDATIONS OF PROBABILITY IN PYTHON


Let's calculate some
probabilities
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N
Expected value,
mean, and variance
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N

Alexander A. Ramírez M.
CEO @ Synergy Vision
Expected value
Expected value: sum of possible outcomes weighted by it's probability.

k
E(X) = ∑ xi pi = x1 p1 + x2 p2 + ⋯ + xk pk
i=1

FOUNDATIONS OF PROBABILITY IN PYTHON


Expected value
The expected value of a discrete random variable is the sum of the possible outcomes weighted by their
probability.

k
E(X) = ∑ xi pi = x1 p1 + x2 p2 + ⋯ + xk pk
i=1

In our case, for the coin ip we get:

2
E(X) = ∑ xi pi = x1 p1 + x2 p2 = 0 × (1 − p) + 1 × p = p
i=1

FOUNDATIONS OF PROBABILITY IN PYTHON


Expected value (Cont.)
The expected value of a discrete random variable is the sum of the possible outcomes weighted by their
probability.

k
E(X) = ∑ xi pi = x1 p1 + x2 p2 + ⋯ + xk pk
i=1

In our case, for the coin ip we get:

2
E(X) = ∑ xi pi = x1 p1 + x2 p2 = 0 × (1 − p) + 1 × p = p
i=1

FOUNDATIONS OF PROBABILITY IN PYTHON


Arithmetic mean
Each xi is the outcome from one experiment (i.e., a coin ip, either 0 or 1).
n
1 1
X̄ = ∑ xi = (x1 + x2 + ⋯ + xn )
n n
i=1

In Python we will use the scipy.stats.describe() function to get the arithmetic mean.

from scipy.stats import describe


describe([0,1]).mean

0.5

FOUNDATIONS OF PROBABILITY IN PYTHON


FOUNDATIONS OF PROBABILITY IN PYTHON
FOUNDATIONS OF PROBABILITY IN PYTHON
FOUNDATIONS OF PROBABILITY IN PYTHON
Variance
Variance is a measure of dispersion.

It's the expected value of the squared deviation from its expected value.
n
V ar(X) = E[(X − E(X))2 ] = ∑ pi × (xi − E(X))2
i=1

In Python, we will use the scipy.stats.describe() function to get the sample variance.

describe([0,1]).variance

0.5

FOUNDATIONS OF PROBABILITY IN PYTHON


Binomial distribution expected value and variance
For X ∼ Binomial(n, p)

E(X) = n × p

V ar(X) = n × p × (1 − p)

Example: n = 10 and p = 0.5

E(X) = 10 × 0.5 = 5
V ar(X) = 10 × 0.5 × 0.5 = 2.5

FOUNDATIONS OF PROBABILITY IN PYTHON


Binomial distribution expected value and variance
(Cont.)
In Python we will use the binom.stats() method to get the expected value and variance.

binom.stats(n=10, p=0.5)

(array(5.), array(2.5))

FOUNDATIONS OF PROBABILITY IN PYTHON


Binomial distribution expected value and variance
(Cont.)
What are the expected value and variance for one fair coin ip?

binom.stats(n=1, p=0.5)

(array(0.5), array(0.25))

What are the expected value and variance for one biased coin ip, with 30% probability of success?

binom.stats(n=1, p=0.3)

(array(0.3), array(0.21))

FOUNDATIONS OF PROBABILITY IN PYTHON


Binomial distribution expected value and variance
(Cont.)
What are the expected value and variance for 10 fair coin ips?

binom.stats(n=10, p=0.5)

(array(5.), array(2.5))

FOUNDATIONS OF PROBABILITY IN PYTHON


Let's calculate
expected values and
variance from data
F O U N D AT I O N S O F P R O B A B I L I T Y I N P Y T H O N

You might also like