如何修复代码,为直方图拟合均值匹配的归一化泊松分布?
直方图拟合归一化泊松分布问题修复
问题描述
我需要为以下数据集的直方图拟合一个归一化泊松分布,要求该分布的均值与数据集的均值back_avg = np.average(merged_back) = 2.55一致。目标直方图样式如下:
我尝试了以下代码但未成功,希望得到修复建议:
数据集
merged_back = [2, 3, 2, 6, 2, 4, 1, 2, 2, 1, 4, 4, 2, 5, 4, 0, 3, 1, 2, 2, 1, 4, 9, 4, 3, 3, 2, 1, 3, 4, 1, 3, 4, 1, 1, 1, 2, 2, 1, 4, 2, 3, 2, 3, 3, 6, 2, 5, 4, 3, 1, 2, 1, 1, 4, 3, 3, 2, 1, 2, 1, 2, 4, 3, 4, 3, 6, 1, 1, 3, 1, 2, 0, 5, 3, 1, 4, 2, 1, 1, 3, 3, 3, 7, 2, 3, 1, 1, 3, 4, 1, 3, 0, 1, 1, 3, 3, 3, 2, 2, 1, 1, 4, 4, 3, 2, 3, 4, 2, 5, 2, 2, 2, 2, 3, 1, 3, 3, 6, 4, 5, 6, 1, 3, 3, 4, 1, 1, 2, 4, 9, 3, 0, 1, 1, 0, 0, 0, 0, 0]
尝试的错误代码
plt.hist(merged_back, bins= 4,color="red") rng = np.random.default_rng() poisson = rng.poisson(lam=back_avg, size=140) plt.plot(decay_back_1 , poisson) plt.show()
代码修复方案
你的代码存在几个核心问题:
- 直方图
bins设置过粗,无法匹配泊松分布的离散特性; - 用随机生成的泊松样本绘图,无法得到准确的理论分布曲线;
- 未定义
decay_back_1变量,导致绘图报错; - 未对直方图和泊松分布做归一化对齐。
修复后的代码如下:
import numpy as np import matplotlib.pyplot as plt from scipy.stats import poisson merged_back = [2, 3, 2, 6, 2, 4, 1, 2, 2, 1, 4, 4, 2, 5, 4, 0, 3, 1, 2, 2, 1, 4, 9, 4, 3, 3, 2, 1, 3, 4, 1, 3, 4, 1, 1, 1, 2, 2, 1, 4, 2, 3, 2, 3, 3, 6, 2, 5, 4, 3, 1, 2, 1, 1, 4, 3, 3, 2, 1, 2, 1, 2, 4, 3, 4, 3, 6, 1, 1, 3, 1, 2, 0, 5, 3, 1, 4, 2, 1, 1, 3, 3, 3, 7, 2, 3, 1, 1, 3, 4, 1, 3, 0, 1, 1, 3, 3, 3, 2, 2, 1, 1, 4, 4, 3, 2, 3, 4, 2, 5, 2, 2, 2, 2, 3, 1, 3, 3, 6, 4, 5, 6, 1, 3, 3, 4, 1, 1, 2, 4, 9, 3, 0, 1, 1, 0, 0, 0, 0, 0] back_avg = np.average(merged_back) # 设置匹配数据范围的离散bins,实现数值中心对齐 bins = np.arange(0, max(merged_back)+2) - 0.5 # 绘制归一化直方图(density=True将频率转换为概率密度) plt.hist(merged_back, bins=bins, color="red", density=True, alpha=0.6, label="数据集直方图") # 生成泊松分布的理论概率质量函数值 x = np.arange(0, max(merged_back)+1) poisson_pmf = poisson.pmf(x, mu=back_avg) # 绘制归一化泊松分布曲线 plt.plot(x, poisson_pmf, 'bo-', label=f"泊松分布(μ={back_avg:.2f})") plt.xlabel("数值") plt.ylabel("归一化频率/概率") plt.title("数据集直方图与归一化泊松分布拟合") plt.legend() plt.show()
修复说明
- 使用
scipy.stats.poisson.pmf计算泊松分布的理论概率值,替代随机样本,保证分布准确性; - 直方图设置
density=True实现归一化,与泊松分布的概率值对齐; - 调整bins为离散数值的中心对齐区间,匹配泊松分布的离散特性;
- 明确x轴取值范围,确保曲线与直方图的x轴范围一致。
内容的提问来源于stack exchange,提问作者ilra
相关产品推荐
相关产品推荐

