直方图上的泊松拟合曲线
Poisson fit curve over histogram plot
我想将我的经验数据拟合到泊松分布曲线。
我有平均给定值,比如说 2.3,和数据(经验值)。
def fit_poisson(data=None,network=None,mu=2.3):
sns.set_theme()
fig, ax = plt.subplots(1, 1)
x = np.arange(poisson.ppf(0.01, mu),
poisson.ppf(0.99, mu))
sns.histplot(data, stat='density')
plt.plot(x, poisson.pmf(x, mu))
绘图:
显然,此处的 y 存在范围问题。也许 lambda 有问题?我如何正确地将经验直方图拟合到均值相同的泊松分布曲线?
泊松随机变量是离散的:它们的 y 值是“概率”而不是“密度”。但是 histplot
的默认行为避免猜测您有离散数据,并且在这种情况下它选择 binwidth
< 1 的 bin。
因为密度归一化强制所有条形的面积总和为 1,这意味着包含特定值观测值的条形的密度值将大于该值的概率质量。
这里有两个相关的参数:
stat="probability"
将使条形的高度总和为 1,因此它们将匹配 PMF(假设 binwidth
< 2,因此只有一个唯一值出现在每个小节)
discrete=True
,它设置 binwidth=1
(并将每个条形的中心与整数值对齐)
sns.histplot(数据,统计='probability',离散=真,收缩=.8)
我还添加了 shrink=0.8
,它绘制的条比 binwidth 窄一点;这有助于强调数据的离散性。
(请注意,对于 discrete=True
(暗示 binwidth=1
),密度和概率归一化将做同样的事情,所以这实际上就是您所需要的,但是 Probability
是正确的 y 轴此处使用的标签)。
我想将我的经验数据拟合到泊松分布曲线。
我有平均给定值,比如说 2.3,和数据(经验值)。
def fit_poisson(data=None,network=None,mu=2.3):
sns.set_theme()
fig, ax = plt.subplots(1, 1)
x = np.arange(poisson.ppf(0.01, mu),
poisson.ppf(0.99, mu))
sns.histplot(data, stat='density')
plt.plot(x, poisson.pmf(x, mu))
绘图:
显然,此处的 y 存在范围问题。也许 lambda 有问题?我如何正确地将经验直方图拟合到均值相同的泊松分布曲线?
泊松随机变量是离散的:它们的 y 值是“概率”而不是“密度”。但是 histplot
的默认行为避免猜测您有离散数据,并且在这种情况下它选择 binwidth
< 1 的 bin。
因为密度归一化强制所有条形的面积总和为 1,这意味着包含特定值观测值的条形的密度值将大于该值的概率质量。
这里有两个相关的参数:
stat="probability"
将使条形的高度总和为 1,因此它们将匹配 PMF(假设binwidth
< 2,因此只有一个唯一值出现在每个小节)discrete=True
,它设置binwidth=1
(并将每个条形的中心与整数值对齐)sns.histplot(数据,统计='probability',离散=真,收缩=.8)
我还添加了 shrink=0.8
,它绘制的条比 binwidth 窄一点;这有助于强调数据的离散性。
(请注意,对于 discrete=True
(暗示 binwidth=1
),密度和概率归一化将做同样的事情,所以这实际上就是您所需要的,但是 Probability
是正确的 y 轴此处使用的标签)。