我想用我的数据拟合 Gamma 分布

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发行版中遇到了一个错误-它不能同时固定位置和比例。该错误已在scipy 0.13中修复,但如果无法升级,则可以使用fit类的rv_continuous方法(它是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)

关于python - 使用python scipy使 Gamma 分布适合数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18703262/

10-12 21:12