如果一个变量的值存在一个与之相关联的概率分布,则称该变量为“随机变量(Random Variable)”。数学上更严谨的定义如下:
设随机试验的样本空间为 S={e}
, X=X(e)
是定义在样本空间 S
上的实值单值函数,称 X=X(e)
为随机变量。
一个最常见的随机数例子就是扔硬币,例如可以记正面为1,反面为0。更复杂的情况是扔10次硬币,记录出现正面的次数,其值可以为0到9之间的整数。
通常可以将随机变量分为离散型随机变量(Discrete Random Variable)和连续型随机变量(Continuous Random Variable),它们的分布方式则对应为离散分布(Discrete Distribution)与连续分布(Continuous Distribution)。
对于离散型随机变量X而言,若要掌握它的统计规律,则必须且只需知道X的所有可能可能取值以及取每一个可能值的概率。在概率论中,是通过分布律来表现的。其公式可以记为:$$P{X = X_k} = P_k, k = 1, 2, {/ldots}$$
最简单的分布律为 (0-1)分布 ,扔硬币的案例就属于这种离散分布,它的随机变量要么为0,要么为1,各自的概率均为50%。
对于连续型随机变量而言,可能的取值无法通过列举的方式展现;而且针对这样的随机变量,统计分析并不会针对某个具体随机变量出现的概率感兴趣,而是考虑某个随机变量区间,也即是说要研究随机变量所取的值落在一个区间的概率,这就引入了 分布函数(Distribution Function) 的概念。分布函数F(x)记作:
$$F(x) = P{X/leq x}, -/infty<x</infty$$
分布函数完整地描述了随机变量的统计规律性,如果我们已知随机变量X的分布函数F(X),就知道X落在任一区间的概率。若以下公式成立,则称非负可积函数f(x)为 概率密度函数(probability density function, pdf) ,而此时的X则为连续型随机变量。
$$F(x) = /int_{-{/infty}}^{x}f(t)dt$$
由于:$$/int_{a}^{b}f(x) = F(b) - F(a)$$
所以,连续型随机变量的概率密度函数是其分布函数的导数,即:f(x)=F'(x)
分布函数的公式牵涉到积分运算,可以简单地理解为:
若一个连续分布存在一个密度函数f,且h的值较小,则在x到x+h区间中值的概率约等于h*f(x)。
我们来看看均匀分布(Uniform Distribution)的概率密度函数。此时f(x)满足:
这个函数非常简单,随机变量X落到区间 [a, b)
的概率要么为0,要么为 1/(b-a)
。假设a=0,b=1,则Python实现该区间的概率密度函数为:
def uniform_pdf(x): return 1 if x >=0 and x < 1 else 0
如果h的值取值为0.1,实际上就相当于对 [1, 0)
取十等分。取其中一个区间 [0.2, 0.3)
,则随机变量落在这个区间中的概率就为1/10,即P(x)=h*f(x),此时h为0.1, f(x)在 [0.2, 0.3)
区间返回1,故而P(x) = 0.1。
如果要获得随机变量小于或等于特定的某个数值的概率,即 P(X<=x)
,则可以使用 累加分布函数(cumulative distribution funciton, cdf) 。例如前面例子中的均匀分布,实现cdf即为:
def uniform_cdf(x) if x < 0: return 0 elif x < 1: return x else: return 1
在连续型随机变量中,最重要的一种随机变量是具有钟形概率分布的随机变量。这种随机变量被称之为 正态随机变量 ,对应的概率分布则被称之为 正态分布(Normal Distribution) 。正态分布是最重要的一种连续型分布,现实生活中有很多例子都满足正态分布的钟形曲线,例如人的身高,高个子和矮个子都是少数,中等身材的人居多;市场销售额,特别差的特别好都是少数,多数处于中间状态;学生在一个班级或年级中的成绩分布,同样如此。
正态分布的概率密度函数为:$$ f(x | μ, σ) = /dfrac{1}{/sqrt{2π}σ}{e}^{-/dfrac{(x-μ)^2}{2σ^2}}$$
python对该函数的实现:
def normal_pdf(x, mu=0, sigma=1): sqrt_two_pi = math.sqrt(2 * math.pi) return (math.exp(-(x-mu) ** 2 / 2 / sigma ** 2) / (sqrt_two_pi * sigma))
下图是正态分布的pdf可视化展现,其中μ代表mean值,σ代表standard deviation。
该图形非常直观地展现了随机变量的分布情况与μ和σ之间的关系。可以发现,σ的值决定了钟形曲线的宽度,σ值越大,曲线约宽。而μ值则决定了钟形曲线的中心所在。
当μ为0且σ为1时,该正态分布则被称之为标准正态分布(standard normal distribution)。此时,若用 φ(x)
表示概率密度函数,用 Φ(x)
表示分布函数。则公式为:
$$ φ(x) = /dfrac{1}{/sqrt{2π}}{e}^{-/dfrac{x^2}{2}}$$
$$Φ(x) = /int_{-{/infty}}^{x}φ(t)dt = /int_{-{/infty}}^{x} /dfrac{1}{/sqrt{2π}}{e}^{-/dfrac{t^2}{2}}dt $$
正态分布的cdf不是一个初等函数,在python中可以调用math库中的 erf
来实现。 erf
即 误差函数(error function) ,或者称之为Gauss error function。它的公式被定义为:
$$efr(x)= /dfrac{2}{/sqrtπ}/int_{0}^{x}{e}^{{-t}^2}dt$$
python实现的正态分布函数为:
def normal_cdf(x, mu=0, sigma=1): return (1 + math.erf((x - mu) / math.sqrt(2) / sigma)) / 2
对正态分布函数进行可视化:
def plot_normal_cdfs(plt): xs = [x / 10.0 for x in range(-50, 50)] plt.plot(xs,[normal_cdf(x,sigma=1) for x in xs],'-',label='mu=0,sigma=1') plt.plot(xs,[normal_cdf(x,sigma=2) for x in xs],'--',label='mu=0,sigma=2') plt.plot(xs,[normal_cdf(x,sigma=0.5) for x in xs],':',label='mu=0,sigma=0.5') plt.plot(xs,[normal_cdf(x,mu=-1) for x in xs],'-.',label='mu=-1,sigma=1') plt.legend(loc=4) # bottom right plt.show()
显示的图形为S形曲线(sigmoid shape),如下图所示:
正态分布之所以有用,主要的原因就在于中心极限定理。简单来讲,当样本数据的量足够大,且彼此之间相互独立,则样本均值X的分布接近正态分布,均值等于μ,而标准差等于$σ//sqrt{n}$。
《概率论与数理统计》在介绍中心极限定理时写道:
在客观实际中有许多随机变量,它们是由大量的相互独立的随机因素的综合影响所形成的,其中每一个别因素在总的影响中所起的作用都是微小的。这种随机变量往往近似地服从正态分布。这种现象就是中心极限定理的客观背景。
事实上,中心极限定理并非只有一个,在统计学中,常常把证明其极限分布为正态分布的定理都统称为中心极限定理。最早的中心极限定理是在18世纪初由德莫佛证明的,即二项分布以正态分布为其极限分布的定理。前面介绍的中心极限定理则是19世纪20年代林德伯格和勒维证明的,即“在任意分布的总体中抽取样本,其样本均值的极限分布为正态分布”。
中心极限定理对于统计学而言意义深远,因为要从一个总体中收集所有的数据是很难操作或者不可行的,而基于中心极限定理,我们可以从总体中获取数据的子集,然后对这个样本进行统计分析,以得到总体的结论。从随机变量的角度来讲,我们要考虑的随机变量可以表示为很多个独立的随机变量之和。例如在物理实验中,测量误差是由许多观察不到的微小误差合成的,它们往往近似地服从正态分布。
因此,说正态分布为“分布之王(the king of distribution)”似乎也不为过;而中心极限定理也被许多人推认为是概率论中的首席定理。