大数定律
大数定律不涉及到数据分布,
随着样本增大,抽样分布近似总体分布,算术平均值接近其期望值。
中心极限定理
中心极限定理是说无论抽样分布如何,随机变量求和服从正态分布。
用正态分布逼近二项分布,所以我们使用二项分布来模拟正态分布。
import numpy as np
from numpy import random as nprd
## 导入matplotlib
import matplotlib.pyplot as plt
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)
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.savefig('simulation')
# plt.show() ## 画图
置信区间
一个区间可信的程度(概率),分布的概率密度面积。
正态分布
密度函数关于平均值对称
平均值与它的众数(statistical mode)以及中位数(median)同一数值。
函数曲线下68.268949%的面积在平均数左右的一个标准差范围内。
- 95.449974%的面积在平均数左右两个标准差的范围内。
- 99.730020%的面积在平均数左右三个标准差的范围内。
- 99.993666%的面积在平均数左右四个标准差的范围内。