scipy Python中泊松分布的QQ图

kmbjn2e3  于 2022-11-23  发布在  Python
关注(0)|答案(2)|浏览(265)

我一直在尝试用python制作一个泊松分布的QQ图。以下是我目前的成果:

import numpy as np
import statsmodels.api as sm
import scipy.stats as stats
pois = np.random.poisson(2.5, 100)  #creates random Poisson distribution with mean = 2.5
fig =sm.qqplot(pois, stats.poisson, line = 's')
plt.show()

每次执行此操作时,都会收到“AttributeError:'poisson_gen'对象没有属性'fit'“
当我在谷歌上搜索这个错误时,我发现很多人说没有Poisson.fit可用的www.example.com。我很确定qqplot函数调用的是Poisson.fit。这是否意味着qqplot函数不能处理泊松分布?如果qqplot函数不能处理泊松分布,您会建议如何生成此图?任何建议都将不胜感激。

up9lanfz

up9lanfz1#

我也犯了同样的错误。下面的方法似乎对我有效:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
data=np.random.poisson(2.5, 100)
stats.probplot(data, dist='poisson', sparams=(2.5,), plot=plt)
plt.show()
dluptydi

dluptydi2#

现在是2022年底,这仍然是一件事。我注意到statmodels qqplots可以接受冻结的scipy分布,这是不拟合的,因此不会抛出离散分布的误差。

from scipy import stats
import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt

mu = 10
test_array = stats.poisson.rvs(mu=mu, size=10000)
fig, ax = plt.subplots(figsize=(7, 5))
ax.set_title("Poisson vs Poisson Example Q-Q Plot", fontsize=14)
test_mu = np.mean(test_array)
qdist = stats.poisson(test_mu)
sm.qqplot(test_array, dist=qdist, line="45", ax=ax)

fig.set_tight_layout(True)
plt.savefig('poisson_qq_ex.png')
plt.close()

Example Q-Q plot using StatsModels with discrete Poisson distribution

相关问题