gpt4 book ai didi

scipy - 如何用seaborn拟合泊松分布?

转载 作者:行者123 更新时间:2023-12-03 23:43:21 25 4
gpt4 key购买 nike

我尝试将我的数据拟合为泊松分布:

import seaborn as sns
import scipy.stats as stats

sns.distplot(x, kde = False, fit = stats.poisson)

但我收到此错误:

AttributeError: 'poisson_gen' 对象没有属性 'fit'

其他分布( Gamma 等)运行良好。

最佳答案

Poisson distribution (在 scipy 中实现为 scipy.stats.poisson )是一个 discrete distribution . scipy 中的离散分布没有 fit方法。

我对 seaborn.distplot 不是很熟悉函数,但它似乎假设数据来自连续分布。如果是这样,那么即使 scipy.stats.poisson有一个 fit方法,传递给 distplot 不是一个合适的分布.

问题标题是“如何用 seaborn 拟合泊松分布?”,所以为了完整起见,这里是获取数据图及其拟合的一种方法。 seaborn仅用于条形图,使用@mwaskom 的建议使用 seaborn.countplot .拟合实际上是微不足道的,因为泊松分布的最大似然估计只是数据的均值。

一、进口:

In [136]: import numpy as np

In [137]: from scipy.stats import poisson

In [138]: import matplotlib.pyplot as plt

In [139]: import seaborn

生成一些数据以使用:
In [140]: x = poisson.rvs(0.4, size=100)

这些是 x 中的值:
In [141]: k = np.arange(x.max()+1)

In [142]: k
Out[142]: array([0, 1, 2, 3])

使用 seaborn.countplot绘制数据:
In [143]: seaborn.countplot(x, order=k, color='g', alpha=0.5)
Out[143]: <matplotlib.axes._subplots.AxesSubplot at 0x114700490>

泊松参数的最大似然估计只是数据的均值:
In [144]: mlest = x.mean()

使用 poisson.pmf()得到预期概率,乘以数据集的大小得到预期计数,然后使用 matplotlib 绘图。 .条形是实际数据的计数,点是拟合分布的预期计数:
In [145]: plt.plot(k, poisson.pmf(k, mlest)*len(x), 'go', markersize=9)
Out[145]: [<matplotlib.lines.Line2D at 0x114da74d0>]

plot

关于scipy - 如何用seaborn拟合泊松分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com