问题描述
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])
。我知道有一种方法可以从 a
和 b
推导出时刻,但是有什么方法可以做相反的事情吗? (可能这只是简单的数学运算,但我无法理解)。
我正在将 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