我在 Coursera 上为某门课程做作业。重点是对某些分布使用中心极限定理(我选择 Gamma 分布)并在图上绘制 E = Ebase 和 D = Dbase/n 的正态分布概率密度函数的理论值,其中 E 和 D 是数学期望和分散手段的分布。
均值取自大小为 n 的样本,其中每个单元由 Gamma 分布生成,并带有手动插入的参数(我使用k = 2
, theta = 0.5
),因此Ebase = k*theta
和Dbase = k*theta^2
。在同一张图上应该有一个直方图规范为 1。
理论上,我们取的 n 越大,两个图形应该越匹配。但我在 ipython 笔记本中有这样的:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as sts
%matplotlib inline
k = 2.0
Theta = 0.5
listOfSizes = [20,50,100,300]
number = 0
for n in listOfSizes:
means =[]
for i in range (1000):
sum = 0.0
for number in np.random.gamma(k,Theta,size = n):
sum+=number
mean = sum/n
means.append(mean)
dispersionOfMeansTheoretical =(k*(Theta**2))/n
mathExpectancyOfMeansTheoretical = (k*Theta)
arguments = np.linspace(0,2,2048)
plt.figure(n)
theoryFunction = sts.norm.pdf(arguments, loc = mathExpectancyOfMeansTheoretical, scale = dispersionOfMeansTheoretical)
plt.plot(arguments, theoryFunction)
plt.hist(means, bins=50, normed = 1)
plt.ylabel('$PDF$ with n ='+str(n))
plt.xlabel('$x$')
我在 Wiki 上仔细检查了它,似乎我为所有内容插入了正确的参数化,但我真的找不到错误。我错过了什么?