我正在尝试使Maxwell distribution包含this file中包含的值。
由于我需要将位置设为0,所以我使用的是表达式:
params = st.maxwell.fit(values, floc=0)
但是,此操作失败,并出现“在日志中遇到零除”错误:
我估计loc = 0且范围在11000左右的pdf会很好。
我如何绕过这个问题并使装配工作?
我怀疑最大化对数似然性的代码正在触发上溢或下溢,因为其对scale参数的默认初始猜测为1,与实际的最佳值相差甚远。您可以使用fit
参数将更好的猜测传递给scale
。矩量法提供了一个很好的猜测,在这种情况下,这意味着使用样本均值来估计比例参数。 Maxwell-Boltzmann distribution上的Wikipedia页面以比例a
给出了平均μ的公式。求解a
得到:
In [19]: a = np.mean(values)/(2*np.sqrt(2/np.pi))
In [20]: a
Out[20]: 10587.275841415043
现在将该值作为fit
参数传递给scale
,它将覆盖优化代码使用的默认初始值:
In [21]: p = maxwell.fit(values, floc=0, scale=a)
In [22]: p
Out[22]: (0, 10455.558876443883)
这是该位置(将其设置为0)和比例尺a
的最大似然估计。