用python证明不同分布的中心极限定理_用中心极限定理绘制正态分布曲线

本文通过Python演示了中心极限定理,利用numpy和matplotlib库进行模拟实验,展示不同分布转化为正态分布的过程。通过计算平均值、标准差,并绘制直方图,同时对比正态分布曲线,解释了如何选择直方图的范围和正态分布的核密度。
摘要由CSDN通过智能技术生成

你差点就赢了!首先,请注意在同一轴上绘制两个柱状图:plt.hist(avg[0:])

以及

^{pr2}$

因此,您可以在直方图上绘制法线密度,您正确地用normed=True参数对第二个图进行了标准化。但是,您也忘记了将第一个直方图标准化(plt.hist(avg[0:]), normed=True)。在

我还建议,既然您已经导入了scipy.stats,那么不妨使用该模块中的正态分布,而不是自己编写pdf。在

把这些放在一起,我们有:import numpy as np

import matplotlib.pyplot as plt

import scipy.stats as stats

# 1000 simulations of die roll

n = 10000

avg = []

for i in range(1,n):

a = np.random.randint(1,7,10)

avg.append(np.average(a))

# CHANGED: normalise this histogram too

plt.hist(avg[0:], 20, normed=True)

zscore = stats.zscore(avg[0:])

mu, sigma = np.mean(avg), np.std(avg)

s = np.random.normal(mu, sigma, 10000)

# Create the bins and histogram

count, bins, ignored = plt.hist(s, 20, normed=True)

# Use scipy.stats implementation of the normal pdf

# Plot the distribution curve

x = np.linspace(1.5, 5.5, num=100)

plt.plot(x, stats.norm.pdf(x, mu, sigma))

这给了我以下的情节:

66d51110b310b24cdb08f93d8c4ea021.png

编辑

在你的评论中:我在np.linspace中如何选择1.5和5.5

是否可以在非标准化直方图上绘制正常核?在

去问q1。首先,我通过眼睛选择了1.5和5.5。在绘制柱状图之后,我看到柱状图的区域在1.5到5.5之间,所以这就是我们想要绘制正态分布的范围。在

选择这一范围的一种更具纲领性的方法是:x = np.linspace(bins.min(), bins.max(), num=100)

至于问题2,是的,我们可以达到你想要的。但是,你应该知道,我们根本就不会绘制概率密度函数。在

在绘制直方图时删除normed=True参数后:x = np.linspace(bins.min(), bins.max(), num=100)

# Find pdf of normal kernel at mu

max_density = stats.norm.pdf(mu, mu, sigma)

# Calculate how to scale pdf

scale = count.max() / max_density

plt.plot(x, scale * stats.norm.pdf(x, mu, sigma))

这给了我以下的情节:

bcaf0cb294081f37ea7328277034d476.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值