中心极限定理
一组数,[1, 1, 3, 4, 6, 6](可以理解成把2,5点分别换成了1,6点的实验.),从这组数中取样本,假设样本为4.
我用python模拟了随机的过程,动画表示样本数100,200,300…10000的变化.随着样本数量的增加,接近正态分布.
下面的动图是更改了样本容量.可以在代码中对应的参数更改,已经封为函数,可以直接更改对应的参数.
随着样本容量增加,样本均值的频率图接近正太分布.
采用的样本均值的例子,也可以是样本的和,同样成立.
隔很多节没有python了,这一节仔细看一下程序,尝试更改程序去观察中心极限定理在说明什么.
程序
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero
import random
def daw(SIZE, N, L):
fig = plt.figure(figsize=(7, 5), dpi=120, facecolor='#FF9966', edgecolor='c')
ax1 = SubplotZero(fig, 1, 1, 1, axisbg='#FF9966')
fig.add_subplot(ax1)
# ax1.grid(True, color='k', linestyle='-.')
ax1.axis['right', 'top'].set_visible(False)
plt.ion()
mean = sum(L)/len(L)
for i in N:
plt.pause(0.0001)
S, S_mean = random_num(SIZE, i, L)
x, y = stats_num(S_mean)
# print('S', S); print(mean); print('x', x); print('y', y)
ax1.scatter(x, y, s=15, alpha=0.4)
ax1.plot((mean,mean), (-10, 1600), 'g-.')
ax1.set_ylim(-10, 1600)
xy = [(a, b) for a, b in zip(x, y)]
xy = sorted(xy, key=lambda s: s[0])
x = [a[0] for a in xy]
y = [a[1] for a in xy]
ax1.plot(x, y, 'r-')
plt.ioff()
plt.show()
## 随机取样
def random_num(size, n, l):
S = np.zeros((n, size+1))
S_mean = list()
for i in range(0, n):
_s = list()
for j in range(0, size):
_s.append(random.choice(l))
mean = sum(_s)/size
_s.append(mean)
S[i] = _s
S_mean.append(mean)
return S, S_mean
## 统计次数
def stats_num(S_mean):
x = [i for i in set(S_mean)]
y = []
for i in x:
y.append(S_mean.count(i))
return x, y
if __name__ == "__main__":
L = [1, 1, 3, 4, 6, 6] ## 总体中数字频率
SIZE = 100 ## 样本容量
N = range(100, 10001, 100) ## 样本数量
daw(SIZE, N, L)
博主个人能力有限,错误在所难免.
如发现错误请不要吝啬,发邮件给博主更正内容,在此提前鸣谢.
Email: JentChang@163.com (来信请注明文章标题,如果附带链接就更方便了)
你也可以在下方的留言板留下你宝贵的意见.