实验五:大数定律

本文探讨了大数定律的基本概念及其在统计学中的应用,通过Python代码演示了随着样本数量增加,样本均值趋向正态分布的过程。实验中,作者调整了随机变量的数量,观察到均值分布的变化,验证了大数定律的有效性。
摘要由CSDN通过智能技术生成

2018/10/02

转载:http://www.cnblogs.com/vamei/p/3460965.html

注意看这个大数定律的具体应用,这个才是真正有用的内容。

我看了书本上的一些内容和这个外网的一些内容,好像对应用这一块都不是特别准确。这就很尴尬。)

先简单介绍一下大数定律的具体内容:
选取n个独立同分布的随机变量,这个n趋近于无穷的时候,均值将趋近于一个正态分布。
(不过,我的这个初步的版本感觉理解的不是很透彻,虽然图已经很接近了。)

初步版本代码:

1 #! /usr/bin/python
  2 #coding:utf-8
  3 #2018/10/02
  4 #Author:VChao
  5 
  6 import os
  7 import matplotlib
  8 matplotlib.use('Agg')
  9 
 10 import matplotlib.pyplot as plt
 11 from numpy import random
 12 
 13 def get_one_mean(num = 10000):
 14     #Get One mean from the exponential distribution of (nums) data
 15     return random.exponential(size = num).mean()
 16 
 17 
 18 def main():
 19     mean_array = []
 20     for i in range(1000):
 21         mean_array.append(get_one_mean(1000))
 22     plt.hist(mean_array,100)
 23     plt.savefig("clt.png")
 24 
 25 
 26 if __name__ == "__main__":
 27     main()

当我调整随机变量的个数(为生成均值的参数)的时候,就会发生相应的变化。
下面是相应的图片。


20
1000

但是,我有一点不明白的地方就是,到底这个n指代的是什么。因为我看了修改函数的参数也好,修改外面循环的次数也好,都可以产生相同的内容。主要是因为这部分的他的代码和我的不一样。
不过我看了一下,他的那个地方呢用的是rvs的这个api,我看了看这个代码,他是说返回了几个变量,也许就是这个地方就能解释了。


下面将代码改成跟网页中一样的风格。

最后的图片效果是这样的。


三图实际效果
14 def get_one_mean(num = 10000):
 15     #Get One mean from the exponential distribution of (nums) data
 16     return random.exponential(size = num).mean()
 17 
 18 
 19 def main():
 20     '''
 21     Old Version:
 22     mean_array = []
 23     for i in range(1000):
 24         mean_array.append(get_one_mean(1000))
 25     plt.hist(mean_array,100)
 26     plt.savefig("clt.png")
 27     os.system("sz clt.png")
 28     '''
 29     plt.figure(figsize = (12,4))
 30     for N,subp in zip([1,20,1000],[131,132,133]):
 31         all_means = np.array([get_one_mean(N) for i in range(10000)])
 32 
 33         plt.subplot(subp)
 34         plt.hist(all_means , bins = 100,color = "blue")
 35         plt.title("Central Limit Theory n = %i" %N)
 36         plt.xlabel("sample means")
 37         plt.ylabel("Frequency")
 38     plt.tight_layout()
 39     plt.savefig("clt.png",facecolor="w")
 40     os.system("sz clt.png")

上面这个代码主要在于这个循环的设计,如果是我的话就要写两个循环了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值