概率统计Python计算:样本数据直方图绘制

在这里插入图片描述
对总体 X X X的一次具体抽样,得到一个容量为 n n n的样本观测值 ( x 1 , x 2 , ⋯   , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,,xn)。记 a = m i n { x 1 , x 2 , ⋯   , x n } a=min\{x_1,x_2,\cdots,x_n\} a=min{x1,x2,,xn} b = m a x { x 1 , x 2 , ⋯   , x n } b=max\{x_1,x_2,\cdots,x_n\} b=max{x1,x2,,xn}。将 [ a , b ] [a, b] [a,b]等分成 m m m个小区间 Δ k \Delta_k Δk(为方便计,其长度亦记为 Δ k \Delta_k Δk), k = 1 , 2 , ⋯   , m k=1,2,\cdots,m k=1,2,,m。记录下落入每个小区间 Δ k \Delta_k Δk内的样本观测值个数 f k f_k fk,在该区间的上方绘制高为 f k n Δ k \frac{f_k}{n\Delta_k} nΔkfk,宽为 Δ k \Delta_k Δk的矩形, k = 1 , 2 , ⋯   , m k=1,2,\cdots,m k=1,2,,m。得到的图形称为样本观测值 ( x 1 , x 2 , ⋯   , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,,xn)的直方图。显然,这样绘制的直方图,其总面积为1,称为密度化的直方图。
设样本观测数据存储在数组中。Python的matplotlib包中的pyplot对象有一个专门绘制数据数组的直方图的函数hist。该函数的调用接口为
hist(x, bins, density) \text{hist(x, bins, density)} hist(x, bins, density)
参数x传递数据数组。bins传递分组个数,即小区间个数。参数density传递布尔值True或False,缺省值为False。若为True,意味着密度化直方图。
例1 下面列出84个伊特拉斯坎(Etruscan)人男子的头颅的最大宽度(mm)。

141148132138154142150146155158150140147148
144150149145149158143141144144126140144142
141140145135147146141136140146142137148154
137139143140131143141149148135148152143144
141143147146150132142142143153149146149138
142149142137134144146147140142140137152145

绘制这些数据的直方图。
解: 下列代码绘制本例中伊特拉斯坎人男子的头颅的最大宽度数据的直方图。

import numpy as np                                          #导入numpy
from matplotlib import pyplot as plt                        #导入绘图对象pyplot
sample=np.array([141,148,132,138,154,142,150,146,155,158,   #设置样本数据数组
                150,140,147,148,144,150,149,145,149,158,
                143,141,144,144,126,140,144,142,141,140,
                145,135,147,146,141,136,140,146,142,137,
                148,154,137,139,143,140,131,143,141,149,
                148,135,148,152,143,144,141,143,147,146,
                150,132,142,142,143,153,149,146,149,138,
                142,149,142,137,134,144,146,147,140,142,
                140,137,152,145])
plt.hist(sample, bins=8, density=True)                      #分成8组绘制直方图
plt.show()

注意第12行调用pyplot对象的hist函数时所传递的各个参数:传递给接收数据数组参数x的是样本观测值数组sample(在第3~11行设置),传递给确定涵盖所有样本数据的区间分组数的bins为8,传递给决定小矩形高度的参数density为True。运行程序,展示的直方图如下图所示。
在这里插入图片描述
由上图可见,沿密度化直方图的外轮廓描绘曲线,可以得到总体 X X X的密度函数的近似曲线。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,以下是用 Python 绘制泊松分布概率直方图的代码: ```python import numpy as np import matplotlib.pyplot as plt from scipy.stats import poisson # 设置泊松分布参数 mu = 2.5 # 生成泊松分布数据 data = poisson.rvs(mu, size=1000) # 绘制直方图 plt.hist(data, bins=20, density=True, alpha=0.6, color='b') # 绘制概率密度函数曲线 x = np.arange(0, 15) plt.plot(x, poisson.pmf(x, mu), 'ro--', ms=8, label='Poisson PMF') plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.legend() plt.show() ``` 解释一下代码: 1. 首先导入需要的库,包括 numpy、matplotlib 和 scipy.stats。 2. 设置泊松分布的参数 mu。 3. 使用 scipy.stats 库中的 poisson.rvs() 函数生成 1000 个泊松分布的数据。 4. 使用 matplotlib 库中的 hist() 函数绘制直方图,其中 bins 参数设置为 20 表示将数据分成 20 个区间,density 参数设置为 True 表示绘制的是概率密度直方图,alpha 参数设置为 0.6 表示透明度为 0.6,color 参数设置为 'b' 表示颜色为蓝色。 5. 使用 numpy 库中的 arange() 函数生成一个从 0 到 14 的整数数组,作为绘制概率密度函数曲线的 x 坐标轴数据。 6. 使用 scipy.stats 库中的 poisson.pmf() 函数生成对应 x 坐标轴数据概率密度函数值。 7. 使用 matplotlib 库中的 plot() 函数绘制概率密度函数曲线,其中 'ro--' 表示红色圆点和虚线样式。 8. 设置 x 轴和 y 轴的标签,设置图表标题,使用 legend() 函数显示图例,最后使用 show() 函数显示图表。 希望能够帮到你! ### 回答2: 使用Python绘制泊松分布概率直方图需要使用matplotlib库和numpy库。 首先,我们需要导入所需库: ```python import matplotlib.pyplot as plt import numpy as np ``` 接下来,我们可以使用numpy的random模块生成符合泊松分布的随机数。例如,我们可以生成一个参数 λ 为 5 的泊松分布样本: ```python λ = 5 sample = np.random.poisson(λ, size=1000) ``` 然后,我们可以使用matplotlib的hist函数来创建直方图。我们可以指定直方图的边界(bins)和标签等属性。 ```python plt.hist(sample, bins=10, density=True, color='skyblue', alpha=0.7) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.grid(True) plt.show() ``` 在这个例子中,我们将概率密度函数的值作为纵轴,在对应的值范围内计算概率,并绘制直方图。 最后,我们使用plt.show()函数显示绘制直方图。 完整代码如下: ```python import matplotlib.pyplot as plt import numpy as np λ = 5 sample = np.random.poisson(λ, size=1000) plt.hist(sample, bins=10, density=True, color='skyblue', alpha=0.7) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.grid(True) plt.show() ``` 运行代码后,我们将会得到一个带有泊松分布概率直方图的可视化结果。直方图的横轴表示取值范围,纵轴表示对应的概率密度值。 ### 回答3: 要用Python绘制泊松分布概率直方图,可以使用matplotlib库来实现。以下是一个简单的例子: 首先,我们需要导入matplotlib和numpy库: ``` import matplotlib.pyplot as plt import numpy as np ``` 然后,我们可以使用numpy的random模块来生成服从泊松分布的随机数。假设我们希望生成10000个服从参数λ=5的泊松分布随机数: ``` lambda_value = 5 random_numbers = np.random.poisson(lambda_value, 10000) ``` 接下来,我们可以使用matplotlib的hist函数来绘制直方图。我们可以指定bin的个数和范围,以及是否要归一化直方图: ``` plt.hist(random_numbers, bins=20, range=(0, 20), density=True) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.show() ``` 在这个例子中,我们将bin的个数设置为20,范围设置为0到20,同时将density参数设置为True,表示要归一化直方图。 最后,我们可以使用xlabel、ylabel和title函数来添加标题和标签。 运行以上代码,就可以得到一个泊松分布概率直方图。 注意:为了得到更准确的结果,我们可以增加数据点的个数和调整bin的个数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值