Python 如何从scipy.stats.distributions对象中获取上下限?

Python 如何从scipy.stats.distributions对象中获取上下限?,python,scipy,statistics,distribution,Python,Scipy,Statistics,Distribution,我有一个scipy.stats.distributions对象,我试图找出它的上下限。简化的代码来说明我正在尝试做的事情: from scipy.stats.distributions import uniform u = uniform(1, 5) print u.dist.name #prints 'uniform' print u.dist.lower_bound #I'm trying to print '1' #AttributeError: 'u

我有一个scipy.stats.distributions对象,我试图找出它的上下限。简化的代码来说明我正在尝试做的事情:

from scipy.stats.distributions import uniform
u = uniform(1, 5)
print u.dist.name              #prints 'uniform'
print u.dist.lower_bound       #I'm trying to print '1'
#AttributeError: 'uniform_gen' object has no attribute 'lower_bound'

我在任何地方都找不到关于如何做到这一点的文档。

就我而言,概率密度函数没有x方向或y方向的上/下界。根据定义,您的统一分布将使其pdf在范围(1,5)上评估为1/4,在其他地方评估为0。如果您要求cdf为0或1(或渐近接近0或1)的点,则
scipy.stats
中的每个分布函数都有一个
ppf
方法,您可以使用该方法通过输入所需的百分位数(在您的案例中为0和1)来获得上限/下限


但是,请注意,当您将0或1放入
ppf
时,连续随机变量通常会将+-无穷大作为其一个或两个边界。这就是发行版的构建方式。如果你坚持要找一个值,那么试着找一个接近但实际上不是0或1的数字。

就我而言,概率密度函数在x方向或y方向没有上下限。根据定义,您的统一分布将使其pdf在范围(1,5)上评估为1/4,在其他地方评估为0。如果您要求cdf为0或1(或渐近接近0或1)的点,则
scipy.stats
中的每个分布函数都有一个
ppf
方法,您可以使用该方法通过输入所需的百分位数(在您的案例中为0和1)来获得上限/下限


但是,请注意,当您将0或1放入
ppf
时,连续随机变量通常会将+-无穷大作为其一个或两个边界。这就是发行版的构建方式。如果你坚持要找到一个值,那么尝试一些接近但实际上不是0或1的数字。

我不确定所有的scipy分布都是为了给我们大多数人带来最大的方便而参数化的。然而,文件上说,“loc和loc+标度之间的分布是恒定的。”你需要在区间[1,5]上有一个统一的值,这意味着loc=1和loc+标度=5。然后,我们可以通过以下代码最直接地获得您所要求的内容

>>> from scipy.stats.distributions import uniform
>>> u = uniform(1,4)
>>> u.ppf(0)
1.0
>>> u.ppf(1)
5.0
当涉及无限支撑的分布时,生命变得更加不确定,例如正态分布。你可以要求,比如说,ppf(0)和/或ppf(1),但是结果(负无穷大和正无穷大不是很有趣)。我猜想大多数人会对捕捉密度函数“有趣”部分的上下限更感兴趣。在正常情况下,这可能是从ppf(0.05)到ppf(0.95)。在这种情况下,文档中说,“location(loc)关键字指定了平均值。scale(scale)关键字指定标准偏差。'这是一种释压

>>> from scipy.stats.distributions import norm
>>> n = norm(0,1)
>>> n.ppf(0.05)
-1.6448536269514729
>>> n.ppf(0.95)
1.6448536269514722

毫不奇怪。

我不确定所有的scipy分布都是为了给我们大多数人带来最大的便利而参数化的。然而,文件上说,“loc和loc+标度之间的分布是恒定的。”你需要在区间[1,5]上有一个统一的值,这意味着loc=1和loc+标度=5。然后,我们可以通过以下代码最直接地获得您所要求的内容

>>> from scipy.stats.distributions import uniform
>>> u = uniform(1,4)
>>> u.ppf(0)
1.0
>>> u.ppf(1)
5.0
当涉及无限支撑的分布时,生命变得更加不确定,例如正态分布。你可以要求,比如说,ppf(0)和/或ppf(1),但是结果(负无穷大和正无穷大不是很有趣)。我猜想大多数人会对捕捉密度函数“有趣”部分的上下限更感兴趣。在正常情况下,这可能是从ppf(0.05)到ppf(0.95)。在这种情况下,文档中说,“location(loc)关键字指定了平均值。scale(scale)关键字指定标准偏差。'这是一种释压

>>> from scipy.stats.distributions import norm
>>> n = norm(0,1)
>>> n.ppf(0.05)
-1.6448536269514729
>>> n.ppf(0.95)
1.6448536269514722
不足为奇