You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复代码,为直方图拟合均值匹配的归一化泊松分布?

直方图拟合归一化泊松分布问题修复

问题描述

我需要为以下数据集的直方图拟合一个归一化泊松分布,要求该分布的均值与数据集的均值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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:17:38