中心极限定理告诉我们,独立同分布的随机变量序列
X
1
,
X
2
,
⋯
,
X
n
,
⋯
X_1,X_2,\cdots,X_n,\cdots
X1,X2,⋯,Xn,⋯,若
E
(
X
i
)
=
μ
E(X_i)=\mu
E(Xi)=μ,
D
(
X
i
)
=
σ
2
D(X_i)=\sigma^2
D(Xi)=σ2,
i
=
1
,
2
,
⋯
i=1,2,\cdots
i=1,2,⋯。则
lim
n
→
∞
P
(
∣
∑
i
=
1
n
X
i
n
−
μ
σ
n
∣
≤
x
)
=
1
2
π
∫
−
∞
x
e
−
t
2
2
d
t
.
\lim\limits_{n\to\infty}P\left(\bigg|\frac{\frac{\sum_{i=1}^{n}X_i}{n}-\mu}{\frac{\sigma}{\sqrt{n}}}\bigg|\leq x\right)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{x}e^{-\frac{t^2}{2}}dt.
n→∞limP(
nσn∑i=1nXi−μ
≤x)=2π1∫−∞xe−2t2dt.
即无论诸
X
i
X_i
Xi的分布是什么,其前
n
n
n项均值
X
‾
=
1
n
∑
i
=
1
n
X
i
\overline{X}=\frac{1}{n}\sum\limits_{i=1}^nX_i
X=n1i=1∑nXi的标准化变量的绝对值,收敛于标准正态分布。或等价地,
X
‾
\overline{X}
X收敛于
N
(
μ
,
σ
2
/
n
)
N(\mu, \sigma^2/n)
N(μ,σ2/n)。
此处,为验证该定理,设
Θ
\Theta
Θ~
U
(
−
π
2
,
π
2
)
U\left(-\frac{\pi}{2}, \frac{\pi}{2}\right)
U(−2π,2π),
V
=
380
sin
Θ
V=380\sin\Theta
V=380sinΘ。先计算
V
V
V的分布。
由于
Θ
\Theta
Θ的分布函数为
F
Θ
(
θ
)
=
{
0
θ
≤
−
π
2
θ
+
π
2
π
−
π
2
<
θ
<
π
2
1
θ
≥
π
2
=
{
0
θ
≤
−
π
2
θ
π
+
1
2
−
π
2
<
θ
<
π
2
1
θ
≥
π
2
F_{\Theta}(\theta)=\begin{cases}0&\theta\leq-\frac{\pi}{2}\\\frac{\theta+\frac{\pi}{2}}{\pi}&-\frac{\pi}{2}<\theta<\frac{\pi}{2}\\1&\theta\geq \frac{\pi}{2}\end{cases}=\begin{cases}0&\theta\leq-\frac{\pi}{2}\\\frac{\theta}{\pi}+\frac{1}{2}&-\frac{\pi}{2}<\theta<\frac{\pi}{2}\\1&\theta\geq \frac{\pi}{2}\end{cases}
FΘ(θ)=⎩
⎨
⎧0πθ+2π1θ≤−2π−2π<θ<2πθ≥2π=⎩
⎨
⎧0πθ+211θ≤−2π−2π<θ<2πθ≥2π
且函数
g
(
θ
)
=
380
sin
θ
g(\theta)=380\sin\theta
g(θ)=380sinθ,
θ
∈
(
−
π
2
,
π
2
)
\theta\in\left(-\frac{\pi}{2}, \frac{\pi}{2}\right)
θ∈(−2π,2π)的反函数为
g
−
1
(
v
)
=
arcsin
(
v
380
)
g^{-1}(v)=\arcsin\left(\frac{v}{380}\right)
g−1(v)=arcsin(380v),
v
∈
(
−
380
,
380
)
v\in(-380, 380)
v∈(−380,380)。于是,
V
V
V的分布函数为
F
V
(
v
)
=
{
0
v
≤
−
380
1
π
arcsin
v
380
+
1
2
−
380
<
v
<
380
1
v
≥
380
.
F_{V}(v)=\begin{cases}0&v\leq-380\\\frac{1}{\pi}\arcsin\frac{v}{380}+\frac{1}{2}&-380<v<380\\1&v\geq380\end{cases}.
FV(v)=⎩
⎨
⎧0π1arcsin380v+211v≤−380−380<v<380v≥380.
我们用scipy.stats的rv_continuous类,构造一个分布函数为
F
V
(
v
)
F_V(v)
FV(v)的连续型概率分布vdist(详见博文《连续型随机变量函数分布》)。
from scipy.stats import rv_continuous
import numpy as np
from matplotlib import pyplot as plt
class vdist(rv_continuous):
def _cdf(self, v): #定义累积分布函数
y=np.zeros(v.size) #返回值初始化为0
d=np.where((v>-380)&(v<380)) #非0非1区域
y[d]=np.arcsin(v[d]/380)/np.pi+1/2 #非0非1函数值
d=np.where(v>=380) #值为1的区域
y[d]=1 #值为1的函数值
dist=vdist()
v=np.linspace(-500, 500, 256)
plt.plot(v, dist.pdf(v), color='black')
plt.show()
Ev=dist.expect()
Dv=dist.var()
print('E(V)=%.4f, D(V)=%.4f'%(Ev, Dv))
程序的第4~11行定义rv_continuous的子类vdist。这只需要做一件事情:在第5~11行定义该分布类的累积分布函数cdf。这是一个属于对象的函数(含有参数self)该函数只含有负责传递外部数据的参数v。该参数是数组类对象,表示分布函数
F
V
(
v
)
F_V(v)
FV(v)的自变量。第6行将函数值初始化为0。根据上述
F
V
(
v
)
F_V(v)
FV(v)的定义式,第7行将介于-380~380的部分区间设为d,第8行将对应区间d的函数值设为
1
π
arcsin
v
380
+
1
2
\frac{1}{\pi}\arcsin\frac{v}{380}+\frac{1}{2}
π1arcsin380v+21,第9行将不小于380的区间设为d,第10行将对应该区间的函数值置为1。
第12行创建一个服从vdist分布的随机变量对象dist。第13行设置绘图用的横坐标范围v,即区间
(
−
500
,
500
)
(-500, 500)
(−500,500)。第14行调用绘图对象plt的plot函数绘制vdist的概率密度函数pdf的图形,第15行显示图形(见下图)。
显然dist分布与正态分布大不相同(其密度函数呈现双峰形态)。
第16、17行分别调用vdist的expect函数和var函数计算其期望
E
(
V
)
E(V)
E(V)与方差
D
(
V
)
D(V)
D(V)。运行程序,输出
E(V)=0.0000, D(V)=72200.0000
为vdist的期望值和方差值。
接下来,利用上列程序创建的dist对象,产生服从该分布的随机变量
V
V
V的10000个值。
V=dist.rvs(size=10000) #产生10000个V的取值
plt.hist(V, density=True, histtype='stepfilled', alpha=0.2) #画直方图
plt.show()
程序的第1行调用dist的rvs函数产生10000个随机数模拟服从dist分布的随机变量
V
V
V,存于数组V。第2行调用绘图对象plt的绘制直方图的函数hist,绘制V的直方图。运行程序,显示如下图形。
可以看到,上图中V数据直方图与前图的密度函数拟合得很好。现在从存储在V中的10000个数据中随机抽取500组,每组100个数据,并计算出每组数据的平均值,然后考察这500个均值的分布。
from scipy.stats import norm #导入norm
x=np.array([np.random.choice(a=V, size=100).mean() #V中100个随机数据的均值
for k in range(500)]) #共生成500个数据存于x
plt.hist(x, density=True, histtype='stepfilled') #绘制x的直方图
v=np.linspace(-80, 80,256) #横坐标区间(-80, 80)
sigma=np.sqrt(Dv)/10 #计算标准差
plt.plot(v, norm.pdf(v, scale=sigma)) #绘制正态密度曲线
plt.show()
程序的2~3行调用numpy的random对象的choice函数从V中随机取得100个数据(形成一个匿名数组),调用该数组对象的mean函数计算这100个数据的均值,加入数组x中。反复做500次(第3行的for循环决定),故x中存有500个这样的数据。第4行绘制x中数据的直方图。第5行设置绘制正态分布密度函数图形的横坐标范围,区间v=(-80, 80)。第6行计算
V
V
V的均方差
D
(
V
)
=
σ
\sqrt{D(V)}=\sigma
D(V)=σ。第7行绘制正态分布
N
(
0
,
σ
2
/
100
)
N(0, \sigma^2/100)
N(0,σ2/100)的密度函数norm.pdf图形。运行该程序,展示图形如下图所示。
从上图中我们看到,500个
1
100
(
∑
i
=
1
100
V
i
)
\frac{1}{100}\left(\sum\limits_{i=1}^{100}V_i\right)
1001(i=1∑100Vi)数据值作成的直方图与正态分布
N
(
0
,
σ
2
/
100
)
N(0, \sigma^2/100)
N(0,σ2/100)的密度函数图形高度拟合。其中
V
1
,
V
2
,
⋯
V
100
V_1, V_2,\cdots V_{100}
V1,V2,⋯V100独立(从V中随机抽取)同分布(与V的分布相同),
σ
2
=
D
(
V
)
\sigma^2=D(V)
σ2=D(V),
0
=
E
(
V
)
0=E(V)
0=E(V)。这就验证了中心极限定理:尽管随机变量
V
V
V所服从的分布与正态分布形态迥异,但是100个独立且与
V
V
V同分布的随机变量
V
1
,
V
2
,
⋯
V
100
V_1, V_2, \cdots V_{100}
V1,V2,⋯V100之均值
V
1
+
V
2
+
⋯
+
V
100
100
\frac{V_1+V_2+\cdots+V_{100}}{100}
100V1+V2+⋯+V100却近似服从
N
(
0
,
σ
2
/
100
)
N(0, \sigma^2/100)
N(0,σ2/100)。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》