【问题标题】:Getting multiple values from Python scipy.stats ppf function从 Python scipy.stats ppf 函数获取多个值
【发布时间】:2017-03-31 19:55:21
【问题描述】:

对于我的数据集,我能够使用 scipy.stats 函数拟合最佳分布。例如,最佳分布是:

In[94]: best_dist
Out[94]: <scipy.stats._continuous_distns.chi_gen at 0x119649cd0>

In[95]: best_fit_params
Out[95]: 
(0.40982879700171049,
 0.10387428783818109,
 -4.5566762564110859e-19,
 0.89837054605455657)

现在我正在尝试使用ppf 函数获取对应于 CDF 曲线 95% 面积的值。这给出了:

In[96]: best_dist.ppf(0.95,best_fit_params)
Out[96]: array([ 1.44854045,  0.74815691, nan,  1.89330302])

我不明白为什么当我只期望一个值时返回长度为 4 的数组?如果其中一个是我的答案,那是哪个?

【问题讨论】:

    标签: python scipy distribution


    【解决方案1】:

    正确的用法是解压你的best_fit_param

    In [1]: param = (0.40982879700171049,
       ...:  0.10387428783818109,
       ...:  -4.5566762564110859e-19,
       ...:  0.89837054605455657)
    
    In [2]: from scipy.stats import beta
    
    In [3]: beta.ppf(0.95, *param)     # notice the asterisk
    Out[3]: 0.89837054605311872
    

    解释:beta.shapes"a, b",所以beta.ppf的签名实际上是ppf(self, q, a, b, loc=0, scale=1)。您的best_fit_param 是一个包含四个值的元组,分别代表 a、b、loc 和 scale。

    不过,我不确定您的 In[96]。我认为,在任何最近的 scipy install 中,使用两个参数调用 ppf 都应该出错(因为它至少需要三个:一个用于q,另外两个用于ab)。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2013-07-29
      • 2021-01-06
      • 2011-12-11
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      相关资源
      最近更新 更多