【问题标题】:choose between discrete distributions in python在python中的离散分布之间进行选择
【发布时间】:2021-03-05 23:17:45
【问题描述】:

我正在尝试在离散分布之间选择最佳拟合,但我得到一个错误,即离散分布没有属性拟合。任何人都知道如何解决此问题或在离散分布之间进行选择的任何替代方法?

import scipy.stats as st
def get_best_distribution(data):
    dist_names = ["bernoulli", "poisson", "binom", "geom", "logser", "randint"]
    dist_results = []
    params = {}
    for dist_name in dist_names:
        dist = getattr(st, dist_name)
        param = dist.fit(data)

        params[dist_name] = param
        # Applying the Kolmogorov-Smirnov test
        D, p = st.kstest(data, dist_name, args=param)
        print("p value for "+dist_name+" = "+str(p))
        dist_results.append((dist_name, p))

    # select the best fitted distribution
    best_dist, best_p = (max(dist_results, key=lambda item: item[1]))
    # store the name of the best fit and its p value

    print("Best fitting distribution: "+str(best_dist))
    print("Best p value: "+ str(best_p))
    print("Parameters for the best fit: "+ str(params[best_dist]))

    return best_dist, best_p, params[best_dist]
print(get_best_distribution(df)

AttributeError: 'bernoulli_gen' object has no attribute 'fit'

【问题讨论】:

标签: python python-3.x scipy statistics distribution


【解决方案1】:

SciPy 中只能拟合连续分布。离散和多变量分布不支持此类功能。

【讨论】:

  • 谢谢。在python中是否有任何等效的方法可以在离散之间进行选择?
  • @Uni 13 ,我不太了解统计数据,无法猜测为什么不为离散分布实现完全拟合。但我认为出于某种原因,您必须手动查找 distrs 的参数。
猜你喜欢
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2011-11-26
  • 2017-02-23
  • 2014-10-31
相关资源
最近更新 更多