如何从前四个矩均值、标准差、偏度和峰度中提取 johnsonsu.rvs() 分布的 a、b?

问题描述

让我们看看我有一个代码,其中:

mu=0 # first moment
rms=3 # second moment
skew=1 # third moment - skewness
kurt=3 # fourth moment - kurtosis

问题是我想使用这些参数作为输入并从中提取一些 a,b 来提供我的 johnsonsu.rvs(a=?,b=?,loc=mu,scale=rms,size=[N,N])。我知道有一种方法可以从 ab 推导出时刻,但是有什么方法可以做相反的事情吗? (可能这只是简单的数学运算,但我无法理解)。

我正在将 MATLAB 代码转换为 python,其中 johnsonsu 等分布是从前四个时刻派生的,因此没有其他方法可以做到这一点。

解决方法

我已经移植了 MATLAB 代码来从时刻估计约翰逊分布参数

https://www.mathworks.com/matlabcentral/fileexchange/46123-johnson-curve-toolbox

到 Python

https://github.com/maxdevblock/j_johnson_M

用法

from j_johnson_M import f_johnson_M

coef,j_type,err = f_johnson_M(mu,sd,skew,kurt)

gamma,delta,xi,lam = coef