Python fitter包:拟合数据样本的分布

安装fitter

pip install fitter

生成一段模拟数据

from scipy import stats
import numpy as np
# N(0,2)+N(0,10)
data1 = list(stats.norm.rvs(loc=0, scale=2, size=70000))
data2 = list(stats.norm.rvs(loc=0, scale=20, size=30000))
data=np.array(data1+data2)

利用fitter拟合数据样本的分布

from fitter import Fitter
# may take some time since by default, all distributions are tried
# but you call manually provide a smaller set of distributions
f = Fitter(data, distributions=['norm', 't', 'laplace'])
f.fit()
f.summary()

拟合的误差与拟合的概率密度曲线
以上输出为拟合的误差与拟合的概率密度曲线及数据的直方图。

方法详解

Fitter方法

Fitter(data, xmin=None, xmax=None, bins=100, distributions=None, verbose=True, timeout=10)

参数:
data (list) –输入的样本数据;
xmin (float) – 如果为None,则使用数据最小值,否则将忽略小于xmin的数据;
xmax (float) – 如果为None,则使用数据最大值,否则将忽略大于xmin的数据;
bins (int) – 累积直方图的组数,默认=100;
distributions (list) – 给出要查看的分布列表。 如果没有,则尝试所有的scipy分布(80种),常用的分布distributions=[‘norm’,‘t’,‘laplace’,‘cauchy’, ‘chi2’,’ expon’, ‘exponpow’, ‘gamma’,’ lognorm’, ‘uniform’];
verbose (bool) –
timeout – 给定拟合分布的最长时间,(默认=10s) 如果达到超时,则跳过该分布。

Fitter返回

f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
f.df_errors #返回这些分布的拟合质量(均方根误差的和)
f.fitted_param #返回拟合分布的参数
f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
f.get_best(method='sumsquare_error') #返回最佳拟合分布及其参数
f.hist() #绘制组数=bins的标准化直方图
f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数 

参考

fitter.

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值