Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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
使用pythonscipy使gamma分布适合数据_Python_Statistics_Scipy_Gamma Distribution - Fatal编程技术网

使用pythonscipy使gamma分布适合数据

使用pythonscipy使gamma分布适合数据,python,statistics,scipy,gamma-distribution,Python,Statistics,Scipy,Gamma Distribution,我想将伽马分布拟合到我的数据中,我使用这个 import scipy.stats as ss import scipy as sp import numpy as np import os import matplotlib.pyplot as plt alpha = [] beta = [] loc = [] data = np.loadtxt(data) fit_alpha, fit_loc, fit_beta = ss.gamma.fit(data, floc=0, fscale=1)

我想将伽马分布拟合到我的数据中,我使用这个

import scipy.stats as ss
import scipy as sp
import numpy as np
import os
import matplotlib.pyplot as plt

alpha = []
beta = []
loc = []

data = np.loadtxt(data)
fit_alpha, fit_loc, fit_beta = ss.gamma.fit(data, floc=0, fscale=1)

我想将gamma分布的一个参数作为变量保留(比如形状),并修复其中一个参数(比如
scale=1
)。但是,如果我将loc变量保持为零,则无法将刻度固定为1。有什么解决办法吗?我不能仅使用形状和比例参数化gamma分布吗?

查看gamma.fit的实现:

def fit(self, data, *args, **kwds):
    floc = kwds.get('floc', None)
    if floc == 0:
        xbar = ravel(data).mean()
        logx_bar = ravel(log(data)).mean()
        s = log(xbar) - logx_bar
        def func(a):
            return log(a) - special.digamma(a) - s
        aest = (3-s + math.sqrt((s-3)**2 + 24*s)) / (12*s)
        xa = aest*(1-0.4)
        xb = aest*(1+0.4)
        a = optimize.brentq(func, xa, xb, disp=0)
        scale = xbar / a
        return a, floc, scale
    else:
        return super(gamma_gen, self).fit(data, *args, **kwds)

如果您将floc=None,它将调用父类的fit函数(这是rv_continuous),您可以修复比例。

在我的评论中说,您在
gamma
发行版中遇到了一个bug——它不允许您同时修复位置和比例。该缺陷在scipy 0.13中已修复,但如果无法升级,则可以使用类
rv_continuous
fit
方法解决该缺陷,该类是
gamma
的父类:

In [22]: from scipy.stats import rv_continuous, gamma

In [23]: x = gamma.rvs(2.5, loc=0, scale=4, size=1000)  # A test sample.

In [24]: rv_continuous.fit(gamma, x, floc=0, fscale=4)
Out[24]: (2.5335837650122608, 0, 4)

您遇到了一个bug,该bug已在scipy开发版本中修复()。发布时,该修复程序的版本将为0.13。
floc
的+1文档中没有对该参数的任何引用。