大数定律
- 大数定律就以严格的数学形式表现了随机现象的一个性质:平稳结果的稳定性(或者说频率的稳定性)
- 大数定律从理论上解决:用频率近似代替概率的问题: P(A)≈nAn P ( A ) ≈ n A n ;用样本均值近似代替理论均值: Eξ=1n∑i=ni=1ξi E ξ = 1 n ∑ i = 1 i = n ξ i
中心极限定理
当样本量N逐渐趋于无穷大时,N个抽样样本的均值的频数逐渐趋于正态分布,其对原总体的分布不做任何要求,意味着无论总体是什么分布,其抽样样本的均值的频数的分布都随着抽样数的增多而趋于正态分布。
大数定律与中心极限定理之间的区别
- 大数定律是说,n只要越来越大,我把这n个独立同分布的数加起来去除以n得到的这个样本均值(也是一个随机变量)会依概率收敛到真值u,但是样本均值的分布是怎样的我们不知道。
- 中心极限定理是说,n只要越来越大,这n个数的样本均值会趋近于正态分布,并且这个正态分布以u为均值,sigma^2/n为方差。
- 综上所述,这两个定律都是在说样本均值性质。随着n增大,大数定律说样本均值几乎必然等于均值。中心极限定律说,他越来越趋近于正态分布。并且这个正态分布的方差越来越小。直观上来讲,想到大数定律的时候,你脑海里浮现的应该是一个样本,而想到中心极限定理的时候脑海里应该浮现出很多个样本
具体解释的参考资料
1、百度文库:大数定律与中心极限定理
2、百度文库:第五章 大数定律与中心极限定理
建议两个资料,择其一进行仔细阅读即可。
代码实现
大数定律的模型
import numpy as np
from numpy import random as nprd
True_P=0.5
def sampling(N):
## 产生Bernouli样本
x=nprd.rand(N)<True_P
return x
M=10000 #模拟次数
xbar=np.zeros(M)
N=np.array([i+1 for i in range(M)])
x=sampling(M)
for i in range(M):
if i==0:
xbar[i]=x[i]
else:
xbar[i]=(x[i]+xbar[i-1]*i)/(i+1)
## 导入matplotlib
import matplotlib.pyplot as plt
## 使图形直接插入到jupyter中
%matplotlib inline
# 设定图像大小
plt.rcParams['figure.figsize'] = (10.0, 8.0)
plt.plot(N,xbar,label=r'$\bar{x}$',color='pink') ## xbar
xtrue=np.ones(M)*True_P
plt.plot(N,xtrue,label=r'$0.5$',color='black') ## true xbar
plt.xlabel('N')
plt.ylabel(r'$\bar{x}$')
plt.legend(loc='upper right', frameon=True)
plt.show() ## 画图
中心极限定理的模拟
import numpy as np
from numpy import random as nprd
def sampling(N):
## 产生一组样本,以0.5的概率为z+3,0.5的概率为z-3,其中z~N(0,1)
d=nprd.rand(N)<0.5
z=nprd.randn(N)
x=np.array([z[i]+3 if d[i] else z[i]-3 for i in range(N)])
return x
N=[2,3,4,10,100,1000] # sample size
M=2000
MEANS=[]
for n in N:
mean_x=np.zeros(M)
for i in range(M):
x=sampling(n)
mean_x[i]=np.mean(x)/np.sqrt(10/n) ## 标准化,因为var(x)=10
MEANS.append(mean_x)
## 导入matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
## 使图形直接插入到jupyter中
%matplotlib inline
# 设定图像大小
plt.rcParams['figure.figsize'] = (10.0, 8.0)
x=sampling(1000)
plt.xlabel('x')
plt.ylabel('Density')
plt.title('Histogram of Mixed Normal')
plt.hist(x,bins=30,normed=1) ## histgram
plt.show() ## 画图
## 均值
ax1 = plt.subplot(2,3,1)
ax2 = plt.subplot(2,3,2)
ax3 = plt.subplot(2,3,3)
ax4 = plt.subplot(2,3,4)
ax5 = plt.subplot(2,3,5)
ax6 = plt.subplot(2,3,6)
## normal density
x=np.linspace(-3,3,100)
d=[1.0/np.sqrt(2*np.pi)*np.exp(-i**2/2) for i in x]
def plot_density(ax,data,N):
ax.hist(data,bins=30,normed=1) ## histgram
ax.plot(x,d)
ax.set_title(r'Histogram of $\bar{x}$:N=%d' % N)
plot_density(ax1,MEANS[0],N[0])
plot_density(ax2,MEANS[1],N[1])
plot_density(ax3,MEANS[2],N[2])
plot_density(ax4,MEANS[3],N[3])
plot_density(ax5,MEANS[4],N[4])
plot_density(ax6,MEANS[5],N[5])
plt.show() ## 画图
参考文献
1、漫谈系列——大数定律
改文章直观的解释了弱/强大数定律,以及证明了切比雪夫不等式。
2、知乎问答
内容太多,并没有仔细看,有意者可以仔细阅读。