如何进行数据拟合以查找给定数据的分布

时间:2014-03-15 15:07:45

标签: statistics distribution data-fitting gamma-distribution

我需要进行数据拟合以找到给定数据的分布。

我需要找到发行版的pdf函数。

我可以在matlab和python中使用数据拟合函数。

它看起来像一个截断的伽玛。

但是,如何找到分布的参数?

如果数据不能很好地适应截断的伽玛怎么办?

QQ图(qunatile-quantile)表明它不适合截断 伽马。

如何查找分布参数,例如alpha(shape),beta(scale) 对于截断的伽玛?

如果数据拟合在这里不起作用,我可以使用哪些其他方法?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

在Matlab中查看allfitdist

或者,考虑专业包,例如ExpertFit或EasyFit。 JMP统计软件也有一个相当容易使用的分配拟合选项。所有这些都将评估拟合度标准,例如Cramer-von Mises和对数似然估计。

选择分布的函数形式后,参数值通常由maximum likelihood estimatorsmethod of moments估算。

如果您计划在某种模拟中使用结果,您可能会考虑引导样本而不是分布拟合。另一种选择,如果模拟将运行一个设计的实验,你可以改变分布选择,看看替代品是否会对你的结果产生重大影响,然后再过分担心恰当的分布。

答案 1 :(得分:0)

也许this post可以提供帮助。

我提供了一个示例,说明如何使用OpenTURNS根据BIC标准找到最佳分布。

您定义了一个列表'Distribution Factories'tested_distributions = [ot.WeibullMaxFactory(), ot.NormalFactory(), ot.UniformFactory()]

然后您致电BestModelBIC来找到最合适的 best_model, best_bic = ot.FittingTest.BestModelBIC(sample, tested_distributions)

当前,您可以在OpenTURNS的30个可用“工厂”中进行选择(请参见下文)。 TruncatedNormalFactory可用,但尚未提供TruncatedBetaFactory

print(ot.DistributionFactory.GetContinuousUniVariateFactories())

[Out]: 
[ArcsineFactory,
BetaFactory, 
BurrFactory, 
ChiFactory, 
ChiSquareFactory, 
DirichletFactory,
ExponentialFactory,
FisherSnedecorFactory,
FrechetFactory,
GammaFactory,
GeneralizedParetoFactory,
GumbelFactory,HistogramFactory,
InverseNormalFactory,
LaplaceFactory,LogisticFactory,
LogNormalFactory,
LogUniformFactory,
MeixnerDistributionFactory,
NormalFactory,
ParetoFactory,
RayleighFactory,
RiceFactory,
StudentFactory,
TrapezoidalFactory,
TriangularFactory,
TruncatedNormalFactory,
UniformFactory,
WeibullMaxFactory,
WeibullMinFactory]
#30