【问题标题】:Binomial & Poisson Distribution on dynamic Dataset动态数据集上的二项式和泊松分布
【发布时间】:2020-01-18 23:01:45
【问题描述】:

我有一些大型数据集,它们本质上是离散的。我想将该数据拟合到一些分布函数中,以了解该数据中的异常值。但我无法找到一些变量,如“p”值和要实现的数据方差。有没有一种通用的方法来识别这些变量值?

【问题讨论】:

    标签: python dataset distribution poisson binomial-cdf


    【解决方案1】:

    怎么样:

    def poisson(k, lamb):
            return (lamb ** k / factorial(k)) * np.exp(-lamb)
    
    
    entries, bin_edges, patches = plt.hist(data_list, density=True, bins=100, range=[0, 50])
    # calculate binmiddles
    bin_middles = 0.5 * (bin_edges[1:] + bin_edges[:-1])
    
    # fit with curve_fit
    bin_middles_filtered = [bin_middles[i] for i in range(len(entries)) if entries[i] > 0.001]
    parameters, cov = curve_fit(poisson, bin_middles, entries)
    

    这为您提供了泊松函数及其参数

    【讨论】:

      【解决方案2】:

      我认为您正在寻找Chi-Square Goodness-of-fit test。它能够测试数据样本是否来自具有特定分布的总体,并适用于二项式和泊松等离散分布。有关如何在 Python 中执行此分析的更多信息,也可以在此处找到:Performing a Chi-Square goodness-of-fit test

      >>> from scipy.stats import chisquare
      >>> chisquare(f_obs=[16, 18, 16, 14, 12, 12], f_exp=[16, 16, 16, 16, 16, 8])
      (3.5, 0.62338762774958223)
      

      要提出预期的分布,您可以使用:

      >>> from scipy.stats import binom, poisson
      
      >>> n, p = 5, 0.4
      >>> mean, var, skew, kurt = binom.stats(n, p, moments='mvsk')
      >>> f_binom_exp = binom.pmf(range(n + 1), n, p)
      
      >>> mu = 0.6
      >>> mean, var, skew, kurt = poisson.stats(mu, moments='mvsk')
      >>> f_poisson_exp = poisson.pmf(range(n + 1), p)
      

      如果您想选择尽可能适合您的数据的分布,您可以尝试通过调整分布的参数来优化拟合优度。

      您的问题对我来说并不完全清楚,所以恐怕我目前无法提供进一步的帮助,但我认为至少在这里描述了大多数导入实用程序。祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 2023-03-13
        相关资源
        最近更新 更多