Definition (cdf)
Let $X$ be any random variable (does not have to be discrete). Define the cdf of $X$ as before
$$F(x)=P(X\leq x).$$Definition (Continuous random variable)
A function $F:\mathbb{R}\to [0,1]$ is a cdf of some random variable, if and only if
$x\leq y\Rightarrow F(x)\leq F(y)$
$\lim\limits_{x\to -\infty}F(x)=0$
$\lim\limits_{x\to \infty}F(x)=1$
$F$ is right continuous: for any $x\in \mathbb{R}$, $\lim\limits_{y\to x^+}f(y)=f(x).$
An example of a pdf is given by
$$f(x)=\frac{1}{\pi}\frac{\sin^2x}{ x^2}, \quad x\in\mathbb{R}.$$This is indeed a pdf, because it is non-negative and, as it can be checked,
$$\int\limits_\mathbb{R}\frac{\sin^2x}{ x^2}=\pi.$$Below we plot the pdf of this distribution.
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
x=0.5
def cdf_pdf(x):
xdata = np.delete(np.linspace(-10, 10, 1000), [0])
def pdf_func(x):
y = np.divide(np.sin(x)**2,x**2)/np.pi
return y
plt.plot(xdata, pdf_func(xdata))
xshade = xdata[xdata<=x]
plt.fill_between(xshade, pdf_func(xshade), alpha=0.3)
plt.scatter(x,0, s=30)
plt.rcParams['figure.figsize'] = (8, 4)
plt.axhline(y=0, color='k', linewidth=0.5)
plt.xlim(-11,11)
plt.ylim(-0.01,0.35)
plt.xticks([x],["x={}".format(x)])
plt.yticks(np.arange(0,1,2))
plt.figtext(0.6,0.6, r"$f(x)=\frac{\sin^2x}{ \pi x^2}$", ha="left", va="top",
backgroundcolor=(0, 0, 0, 0), fontsize="large")
plt.box(on=None)
plt.show();
# create interactive variables
x = FloatSlider(min=-10.0, max=10.0, step=0.1, value=0.6, readout_format='')
# display the interactive plot
interact(cdf_pdf, x=x);
interactive(children=(FloatSlider(value=0.6, description='x', max=10.0, min=-10.0, readout_format=''), Output(…
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (16, 5)
def logistic_cdf_pdf(x):
xdata = np.linspace(-10, 10, 1000)
def cdf_func(xdata):
val = np.divide(np.exp(xdata), 1+np.exp(xdata))
return val
def pdf_func(xdata):
val = np.divide(np.exp(xdata), (1+np.exp(xdata)**2))
return val
fig, [ax1, ax2] = plt.subplots(1, 2)
ax1.plot(xdata, pdf_func(xdata))
xshade = xdata[xdata<=x]
ax1.fill_between(xshade, pdf_func(xshade), alpha=0.3)
ax1.scatter(x,0, s=30)
ax1.axhline(y=0, color='k', linewidth=0.5)
ax1.set_xlim(-10, 10)
ax1.set_ylim(-0.06,0.6)
ax1.set_xticks([x])
ax1.set_xticklabels(["x={}".format(x)])
ax1.set_title("pdf")
ax2.plot(xdata, cdf_func(xdata))
ax2.vlines(x, 0, cdf_func(x), linestyle="dashed", alpha=0.4)
ax2.scatter(x,0, s=30)
ax2.axhline(y=0, color='k', linewidth=0.5)
ax2.set_xlim(-10, 10)
ax2.set_ylim(-0.1,1.1)
ax2.set_xticks([x])
ax2.set_xticklabels(["x={}".format(x)])
ax2.set_title("cdf")
plt.show();
# create interactive variables
x = FloatSlider(min=-10, max=10, step=0.1, value=0.6, readout_format='')
# display the interactive plot
interact(logistic_cdf_pdf, x=x);
interactive(children=(FloatSlider(value=0.6, description='x', max=10.0, min=-10.0, readout_format=''), Output(…
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (16, 5)
a=0
b=1
def uniform_cdf_pdf(x, a=a, b=b):
xdata = np.linspace(a-1, b+1, 1000)
def cdf_func(xdata):
f0 = lambda y: (y-a)/(b-a)
val = np.piecewise(xdata, [xdata<a, (xdata>=a) & (xdata<=b), xdata>b], [0, f0, 1])
return val
def pdf_func(y):
val = np.piecewise(y, [y<a, (y>=a) & (y<=b), y>b], [0, 1, 0])
return val
fig, [ax2, ax1] = plt.subplots(1, 2)
ax1.plot(xdata, pdf_func(xdata))
xshade = xdata[xdata<=x]
ax1.fill_between(xshade, pdf_func(xshade), alpha=0.3)
ax1.scatter(x,0, s=30)
ax1.axhline(y=0, color='k', linewidth=0.5)
ax1.set_xlim(a-1, b+1)
ax1.set_ylim(-0.01,1)
ax1.set_xticks([a, x, b])
ax1.set_xticklabels(["a={}".format(a), "x={}".format(x), "b={}".format(b)])
ax1.set_frame_on(False)
ax1.set_title("pdf")
ax2.plot(xdata, cdf_func(xdata))
ax2.vlines(x, 0, cdf_func(x), linestyle="dashed", alpha=0.4)
ax2.scatter(x,0, s=30)
ax2.axhline(y=0, color='k', linewidth=0.5)
ax2.set_xlim(a-1, b+1)
ax2.set_ylim(-0.01,1)
ax2.set_xticks([a, x, b])
ax2.set_xticklabels(["a={}".format(a), "x={}".format(x), "b={}".format(b)])
ax2.set_frame_on(False)
ax2.set_title("cdf")
plt.show();
# create interactive variables
x = FloatSlider(min=-a, max=b, step=0.1, value=0.6, readout_format='')
# display the interactive plot
interact(uniform_cdf_pdf, x=x);
interactive(children=(FloatSlider(value=0.6, description='x', max=1.0, readout_format=''), IntSlider(value=0, …
The mean of the uniform distribution is
$$\mu=\frac{a+b}{2}.$$# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
lmbd = 0.8
x=1
xdata = np.linspace(-1, 10, 1000)
def pdf_func(xdata):
f1 = lambda y: np.exp(-lmbd *(y + np.abs(y))/2)
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, f1])
return val
plt.plot(xdata, pdf_func(xdata))
xshade = xdata[xdata<=x]
plt.fill_between(xshade, pdf_func(xshade), alpha=0.2)
plt.xticks([x],["x={}".format(x)])
plt.axhline(y=0, color='k', linewidth=0.5)
plt.box(on=None)
plt.figtext(0.5,0.5, r" $\lambda=${}".format(lmbd), ha="left", va="top",
backgroundcolor=(0.1, 0.1, 1, 0.15), fontsize="large")
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import gamma
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
Alpha = [1, 1.5, 2, 3]
Theta = [3.5, 3.5, 3.5, 3.5 ]
def pdf_func(xdata, alpha, theta):
f1 = lambda y: np.power(y, alpha-1)*np.exp(-y/2)/(np.power(theta,alpha)*gamma(alpha))
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, f1])
return val
fix, ax = plt.subplots()
def pplot_gamma(theta, alpha, ax):
xdata = np.linspace(-1, 20, 1000)
ax.plot(xdata, pdf_func(xdata, alpha, theta), label=r"$\theta=${}, $\alpha=${}".format(theta, alpha))
ax.axhline(y=0, color='k', linewidth=0.5)
ax.set_frame_on(False)
for t,a in zip(Theta, Alpha):
pplot_gamma(t, a, ax)
ax.set_title("pdf of Gamma distribution")
plt.legend()
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import gamma
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
r_values = [2, 3, 4, 5, 10]
def pdf_func(xdata, alpha, theta):
f1 = lambda y: np.power(y, alpha-1)*np.exp(-y/2)/(np.power(theta,alpha)*gamma(alpha))
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, f1])
return val
fix, ax = plt.subplots()
def pplot_chi(r):
alpha = r/2
xdata = np.linspace(-1, 30, 1000)
ax.plot(xdata, pdf_func(xdata, alpha, theta=2), label="r={}".format(r))
ax.axhline(y=0, color='k', linewidth=0.5)
ax.set_frame_on(False)
for r in r_values:
pplot_chi(r)
ax.set_title(r"pdf of $\chi^2$ distribution")
plt.legend()
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import gamma
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
Mu = [0, -15, 10]
Sigma = [1, 7, 5 ]
def pdf_func(xdata, mu, sigma):
val = np.exp(-np.power(xdata-mu,2)/(2*sigma**2))/(sigma *np.sqrt(2*np.pi))
return val
fix, ax = plt.subplots()
def pplot_gamma(mu, sigma, ax):
xdata = np.linspace(-40, 40, 1000)
ax.plot(xdata, pdf_func(xdata, mu, sigma), label=r"$\mu=${}, $\sigma=${}".format(mu, sigma))
ax.axhline(y=0, color='k', linewidth=0.5)
ax.set_frame_on(False)
for mu,sigma in zip(Mu, Sigma):
pplot_gamma(mu, sigma, ax)
ax.set_title("pdf of normal distribution")
plt.xticks(Mu)
plt.legend()
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import gamma
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
mu=0
sigma =1
alpha = 0.05
z = 1.645
def pdf_func(xdata, mu, sigma):
val = np.exp(-np.power(xdata-mu,2)/(2*sigma**2))/(sigma *np.sqrt(2*np.pi))
return val
fix, ax = plt.subplots()
def pplot_gamma(mu, sigma, ax, z):
xdata = np.linspace(-5, 5, 1000)
xshade = xdata[xdata-mu/sigma>=-z]
ax.fill_between(xshade, pdf_func(xshade, mu, sigma), alpha=0.3 )
#xshade = xdata[xdata-mu/sigma<=-z]
#ax.fill_between(xshade, pdf_func(xshade, mu, sigma), alpha=0.3, color="blue")
ax.plot(xdata, pdf_func(xdata, mu, sigma), label=r"$\mu=${}, $\sigma=${}".format(mu, sigma))
ax.axhline(y=0, color='k', linewidth=0.5)
pplot_gamma(mu, sigma, ax, z)
ax.set_title("pdf of standard normal distribution")
plt.xticks([-4,0,4])
plt.legend()
plt.show();
# # nbi:hide_in
##### These are for the homeworkproblems #####
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 10, 1000)
# def pdf_func(xdata):
# f1 = lambda y: np.exp(-lmbd *(y + np.abs(y))/2)
# val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, f1])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.fill_between(xshade, pdf_func(xshade), alpha=0.2)
# plt.xticks([x],["x={}".format(x)])
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.box(on=None)
# plt.figtext(0.5,0.5, r" $\lambda=${}".format(lmbd), ha="left", va="top",
# backgroundcolor=(0.1, 0.1, 1, 0.15), fontsize="large")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 3, 1000)
# def pdf_func(xdata):
# f1 = lambda y: np.power(y,4)/16
# val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<=2), xdata>=2], [0, f1, 1])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("cdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 3, 1000)
# def pdf_func(xdata):
# f1 = lambda y: np.power(y,3)/4
# val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<=2), xdata>=2], [0, f1, 0])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("pdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# xdata = np.linspace(-3,3, 1000)
# def pdf_func(xdata):
# f1 = lambda y: np.power(y,3)/16+0.5
# val = np.piecewise(xdata, [xdata<-2, (xdata>=-2) & (xdata<=2), xdata>=2], [0, f1, 1])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("cdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-3, 3, 1000)
# def pdf_func(xdata):
# f1 = lambda y: np.power(y,2)/16
# val = np.piecewise(xdata, [xdata<-2, (xdata>=-2) & (xdata<=2), xdata>=2], [0, f1, 0])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("pdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 2, 1001)
# def pdf_func(xdata):
# f1 = lambda y: np.power(y,0.5)
# val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<=1), xdata>=1], [0, f1, 1])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("cdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 2, 1001)
# def pdf_func(xdata):
# f1 = lambda y: np.reciprocal(np.power(y,0.5))/2
# val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<=1), xdata>=1], [0, f1, 0])
# return val
# plt.plot(xdata, pdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("pdf")
# plt.show();
# # nbi:hide_in
# import matplotlib.pyplot as plt
# import numpy as np
# from ipywidgets import interact, FloatSlider
# plt.rcParams['figure.figsize'] = (12, 8)
# import matplotlib as mpl
# mpl.rcParams.update(mpl.rcParamsDefault)
# lmbd = 0.8
# x=1
# xdata = np.linspace(-1, 3, 1001)
# def cdf_func(xdata):
# f1 = lambda y: np.power(y,2)/4
# f2 = lambda y: (y+1)/4
# val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<1),(xdata>=1) & (xdata<2), xdata>=2], [0, f1, f2, 1])
# return val
# plt.plot(xdata, cdf_func(xdata))
# xshade = xdata[xdata<=x]
# plt.axhline(y=0, color='k', linewidth=0.5)
# plt.title("cdf")
# plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
lmbd = 0.8
x=1
xdata = np.linspace(-2, 7, 1001)
def cdf_func1(xdata):
f = lambda y: y
val = np.piecewise(xdata, [xdata<0, (xdata>=0) & (xdata<1), xdata>=1], [0, f, 1])
return val
def cdf_func2(xdata):
val = np.piecewise(xdata, [xdata<2, (xdata>=2) & (xdata<4),(xdata>=4) & (xdata<6), xdata>=6], [0, 1/3, 2/3, 1])
return val
plt.plot(xdata, cdf_func1(xdata)/2+cdf_func2(xdata)/2)
xshade = xdata[xdata<=x]
plt.axhline(y=0, color='k', linewidth=0.5)
plt.title("cdf")
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
lmbd = 0.8
x=1
xdata = np.linspace(-5, 5, 1001)
def cdf_func1(xdata):
f = lambda y: np.exp(y)/(1+np.exp(y))
return f(xdata)
def cdf_func2(xdata):
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, 1])
return val
plt.plot(xdata, cdf_func1(xdata)/2+cdf_func2(xdata)/2)
xshade = xdata[xdata<=x]
plt.axhline(y=0, color='k', linewidth=0.5)
plt.title("cdf of mixture")
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
lmbd = 0.8
x=1
xdata = np.linspace(-5, 5, 1001)
def cdf_func1(xdata):
f = lambda y: np.exp(y)/(1+np.exp(y))
return f(xdata)
def cdf_func2(xdata):
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, 1])
return val
plt.plot(xdata, cdf_func1(xdata))
xshade = xdata[xdata<=x]
plt.axhline(y=0, color='k', linewidth=0.5)
plt.title("cdf of continuous")
plt.show();
# nbi:hide_in
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, FloatSlider
plt.rcParams['figure.figsize'] = (12, 8)
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
lmbd = 0.8
x=1
xdata = np.linspace(-5, 5, 1001)
def cdf_func1(xdata):
f = lambda y: np.exp(y)/(1+np.exp(y))
return f(xdata)
def cdf_func2(xdata):
val = np.piecewise(xdata, [xdata<0, xdata>=0], [0, 1])
return val
plt.plot(xdata, cdf_func2(xdata)/2)
xshade = xdata[xdata<=x]
plt.axhline(y=0, color='k', linewidth=0.5)
plt.title("cdf of discrete")
plt.show();