验证中心极限定理

stats_centerlimit.py

本习题的程序文件

概率论中的中心极限定理(Central limit theorem)指出大量随机变量的和服从正态分布。本习题通过程序验证此定理,加深对定理的理解。

创建离散随机变量

假设有一个骰子,它的六面出现的概率不是均匀的,而是按照如下的概率分布:

1:0.4, 2:0.2, 3:0.1, 4:0.1, 5:0.1, 6:0.1

即出现1的概率为40%,而出现6的概率为10%。

请编写程序使用scipy.stats.rv_discrete()创建表示此骰子的随机变量dice:

from scipy import stats
import numpy as np
np.random.seed(0)
【你的程序】设计表示一个六面骰子的随机变量
print dice.rvs(size=20)

程序的输出为:

[2 4 3 2 2 3 2 5 6 1 4 2 2 6 1 1 1 5 4 5]

统计骰子的平均点数的分布

根据中心极限定理,投掷N次骰子所得到的点数的平均值应接近正规分布。下面请编写central_limit():

def central_limit(rv, n, length):
    """rv:随机变量, n:计算rv的n次平均值, length:平均随机变量的样本数
    返回:(data, norm)
    data: 长度为length的数组,它是平均随机变量的样本
    norm: 对data进行拟合所得到的正规分布的随机变量
    """
    【你的程序】

import pylab as pl
x = np.linspace(1,4,100)
for i, n in enumerate([10,100]):
    pl.subplot(121+i)
    data, norm = central_limit(dice, n, 1000)
    pl.hist(data, bins=20, normed=True)
    pl.plot(x, norm.pdf(x), "r", lw=2)
    pl.title("n=%d" % n)

【图:10次平均值和100次平均值的分布】为程序的输出,由图可知,N越大则分布越接近正规分布,而N次平均随机变量的偏差也越小。

/tech/static/books/scipyex/_images//stats_centerlimit_01.png

10次平均值和100次平均值的分布

使用stats.norm.fit()可以对样本数据进行拟合,计算出正规分布的参数。

內容目录

上一个主题

将PWM信号还原为原始信号

下一个主题

选择最大数的策略

本页

loading...