我为Coursera的某门课程做作业。整点是对某些分布使用中心极限定理(我选择Gamma分布)并绘制正态分布的概率密度函数的图表理论值,E = Ebase和D = Dbase / n,其中E和D是数学期望和手段分布的分散。
手段取自大小为n的样本,其中每个单位由Gamma分布生成,手动插入参数(我使用k = 2
,theta = 0.5
),因此Ebase = k*theta
和Dbase = k*theta^2
。在同一个图表上应该有一个标准为1的直方图。
从理论上讲,我们采用的两个图形应该越匹配。但我在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上仔细检查了它,似乎我为所有内容插入了正确的参数化,但我真的找不到错误。我错过了什么?