Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在scipy.stats中指定泊松分布的尾部值?_Python_Scipy_Statistics - Fatal编程技术网

Python 如何在scipy.stats中指定泊松分布的尾部值?

Python 如何在scipy.stats中指定泊松分布的尾部值?,python,scipy,statistics,Python,Scipy,Statistics,我想创建一个泊松分布,平均值为2,元素数为10000,最小值为1,尾值为140,到目前为止,我只能指定最小值 stats.poisson.rvs( 2, loc = 1,size=10000) 并生成以下分布 如何使其结束于140而不是11平均值等于2的泊松分布中的样本大于140的概率非常小,以至于您无法从10000个样本中得到一个 实际上,泊松分布只有一个参数λ和一个概率质量函数,因此 P(x=k) = λ^k * exp(-λ) / k! 平均值也等于λ。如果λ=2,则 P(x=140

我想创建一个泊松分布,平均值为2,元素数为10000,最小值为1,尾值为140,到目前为止,我只能指定最小值

 stats.poisson.rvs( 2, loc = 1,size=10000)
并生成以下分布


如何使其结束于140而不是11

平均值等于2的泊松分布中的样本大于140的概率非常小,以至于您无法从10000个样本中得到一个

实际上,泊松分布只有一个参数λ和一个概率质量函数,因此

P(x=k) = λ^k * exp(-λ) / k!
平均值也等于λ。如果λ=2,则

P(x=140) = 7.7e-199
因此,如果有10000个样本,那么有可能至少有一个样本 1万人中有140人将少于7.7e-195人。这是一个如此之小的数字,以至于你不能期望这在一生中发生

计算λ=2的泊松分布样本高于140的概率要困难一些。您可以使用
scipy.stats.poisson.cdf
查看这一点

P(x>=22) = 1 - scipy.stats.poisson.cdf(21,2) = 5.5e-16
因此,即使在21岁以上的人群中,10000个样本中有一个样本的几率也小于5.5e-12。由于中间结果中的浮点舍入,以相同方式计算
P(x>=140)
将返回0

结论

如果您希望分布平均值等于2.0,并且10000个样本上的重尾达到140,则需要不同于泊松分布的分布。您可以考虑帕累托分布,<代码> SCIPY。STATS。帕累托<代码>参数B=2。 下面是来自中国的10000个随机样本的比较

scipy.stats.poisson.rvs(2,size=10000)

很明显,具有相同均值的帕累托分布有一个更重的尾部

图的代码如下所示,以供参考

import matplotlib.pyplot as plt
import scipy.stats
import numpy as np
pareto_x = np.rint(scipy.stats.pareto.rvs(2,size=10000))
poisson_x = scipy.stats.poisson.rvs(2,size=10000)
plt.figure(figsize=(8,4))
plt.subplot(121)
plt.title("Poisson distribution, a = 2")
plt.xlabel("sample number")
plt.ylabel("sample value")
plt.axis([0,10000,0,180])
plt.plot(range(0,10000),poisson_x,"o")
plt.subplot(122)
plt.axis([0,10000,0,180])
plt.title("Pareto distribution, b = 2")
plt.xlabel("sample number")
plt.plot(range(0,10000),pareto_x,"o")
plt.subplots_adjust(hspace=0.4,bottom=0.2)
plt.savefig("poisson_pareto.png")

平均值等于2的泊松分布中的一个样本大于140的概率非常小,以至于您无法从10000个样本中得到一个

实际上,泊松分布只有一个参数λ和一个概率质量函数,因此

P(x=k) = λ^k * exp(-λ) / k!
平均值也等于λ。如果λ=2,则

P(x=140) = 7.7e-199
因此,如果有10000个样本,那么有可能至少有一个样本 1万人中有140人将少于7.7e-195人。这是一个如此之小的数字,以至于你不能期望这在一生中发生

计算λ=2的泊松分布样本高于140的概率要困难一些。您可以使用
scipy.stats.poisson.cdf
查看这一点

P(x>=22) = 1 - scipy.stats.poisson.cdf(21,2) = 5.5e-16
因此,即使在21岁以上的人群中,10000个样本中有一个样本的几率也小于5.5e-12。由于中间结果中的浮点舍入,以相同方式计算
P(x>=140)
将返回0

结论

如果您希望分布平均值等于2.0,并且10000个样本上的重尾达到140,则需要不同于泊松分布的分布。您可以考虑帕累托分布,<代码> SCIPY。STATS。帕累托<代码>参数B=2。 下面是来自中国的10000个随机样本的比较

scipy.stats.poisson.rvs(2,size=10000)

很明显,具有相同均值的帕累托分布有一个更重的尾部

图的代码如下所示,以供参考

import matplotlib.pyplot as plt
import scipy.stats
import numpy as np
pareto_x = np.rint(scipy.stats.pareto.rvs(2,size=10000))
poisson_x = scipy.stats.poisson.rvs(2,size=10000)
plt.figure(figsize=(8,4))
plt.subplot(121)
plt.title("Poisson distribution, a = 2")
plt.xlabel("sample number")
plt.ylabel("sample value")
plt.axis([0,10000,0,180])
plt.plot(range(0,10000),poisson_x,"o")
plt.subplot(122)
plt.axis([0,10000,0,180])
plt.title("Pareto distribution, b = 2")
plt.xlabel("sample number")
plt.plot(range(0,10000),pareto_x,"o")
plt.subplots_adjust(hspace=0.4,bottom=0.2)
plt.savefig("poisson_pareto.png")

这是非常有帮助的。你可以发布你用来创建这个图的代码吗?或者值得一提的是:泊松分布没有最大值。正如你所说的,问题是你愿意考虑“足够低”的概率来定义一个“最大值”,这样所有高值都有“足够低”的概率。这非常有帮助。你能把你用来创建这个图形的代码张贴出来吗?也许值得一提:一个Poisson分布没有最大值。正如你所说的,问题是你愿意考虑“足够低”来定义一个“最大值”的概率有多低,以至于所有更高的值都具有“足够低”的概率。