我试图在python中编写逆对数正态函数:
import numpy as np
import scipy.stats as sp
from scipy.optimize import curve_fit
def lognorm1(x,s,scale):
ANS = sp.lognorm(s,scale=scale).ppf(x)
return ANS
curve_fit(lognorm1,x,y)
我没有适应曲线的麻烦,但是比例参数是Excel上LOGNORM.INV函数的指数。我知道我可以在最后记录scale参数,但无论如何都要重写函数,以便我不必每次都这样做?
答案 0 :(得分:0)
对数正态随机变量Y的常见参数化是根据唯一正态分布随机变量X的均值,μ和标准差sigma,使exp(X)= Y.此参数化对应于设置s = sigma和scale = exp(mu)。
所以让我们这样设置:
def lognorm1(x, mu, sigma):
ANS = sp.lognorm(s=sigma, scale=exp(mu)).ppf(x)
return ANS
curve_fit(lognorm1, x, y)
现在curve_fit
返回的参数具有基础正态分布的均值和标准差的含义。