Python 有没有比使用Scipy更适合数据的beta素数分布的解决方案?

Python 有没有比使用Scipy更适合数据的beta素数分布的解决方案?,python,scipy,distribution,estimation,goodness-of-fit,Python,Scipy,Distribution,Estimation,Goodness Of Fit,我试图使用python将beta prime发行版适合我的数据。由于有scipy.stats.betaprime.fit,我尝试了以下方法: import numpy as np import math import scipy.stats as sts import matplotlib.pyplot as plt N = 5000 nb_bin = 100 a = 12; b = 106; scale = 36; loc = -a/(b-1)*scale y = sts.betaprim

我试图使用python将beta prime发行版适合我的数据。由于有
scipy.stats.betaprime.fit
,我尝试了以下方法:

import numpy as np
import math
import scipy.stats as sts
import matplotlib.pyplot as plt

N  = 5000
nb_bin = 100
a = 12; b = 106; scale = 36; loc = -a/(b-1)*scale
y = sts.betaprime.rvs(a,b,loc,scale,N)
a_hat,b_hat,loc_hat,scale_hat = sts.betaprime.fit(y)
print('Estimated parameters: \n a=%.2f, b=%.2f, loc=%.2f, scale=%.2f'%(a_hat,b_hat,loc_hat,scale_hat))

plt.figure()
count, bins, ignored = plt.hist(y, nb_bin, normed=True)
pdf_ini = sts.betaprime.pdf(bins,a,b,loc,scale)
pdf_est  = sts.betaprime.pdf(bins,a_hat,b_hat,loc_hat,scale_hat)
plt.plot(bins,pdf_ini,'g',linewidth=2.0,label='ini');plt.grid()
plt.plot(bins,pdf_est,'y',linewidth=2.0,label='est');plt.legend();plt.show()
它向我展示了以下结果:

Estimated parameters:
 a=9935.34, b=10846.64, loc=-90.63, scale=98.93
这与原始版本和PDF中的图有很大不同:

如果我给出
loc
的实际值和scale作为
fit
函数的输入,估计结果会更好。是否已经有人对此部件进行了研究,或者找到了更好的解决方案