У меня вопрос по поводу нормального распределения. Я хочу создать и объединить объекты с «массами» от 10 до 10 ** 5, которые обычно распределяются. Я думал, что это будет логарифмический дистрибутив, и поэтому я начал пытаться сделать это на python так:
mu, sigma = 3., 1. # mean and standard deviation
s = np.random.lognormal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, 1000, density=True, align='mid')
x = np.linspace(min(bins), max(bins), 1000)
pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2)) / (x * sigma * np.sqrt(2 * np.pi)))
plt.plot(x, pdf, linewidth=2, color='r')
plt.xscale('log')
plt.show()
как показано в примере с numpy, но меняя mu и sigma и глядя на графики, я не могу точно сказать, если для m и v (следуя приведенной ниже статье в Википедии) установить значение 10 ** 5 и 1000 let скажи дает мне то, что я хочу
Я посмотрел на https://en.wikipedia.org/wiki/Log-normal_distribution, чтобы понять, как вычислить mu и sigma, но, возможно, я делаю что-то еще неправильно. Это правильный подход к этой проблеме?
Я читал предыдущие вопросы / ответы, касающиеся нормального распределения, но я не думаю, что они задавали одно и то же. Извините заранее, если на этот тип вопроса уже дан ответ.
mu, sigma = 3., 1. Это то, что приведено в примере. Это отлично работает, но когда я изменяю mu и sigma на такие значения, как:
m=10**3.5 #where I want the distribution to be centered
v=10000 #the "spread" that I want
f=1.+(v/m2)
mu=np.log(m/np.sqrt(f))
sigma=np.sqrt(np.log(f))
Я не получаю то, что ожидал ... это распределение, сосредоточенное вокруг 10 ** 3,5 со стандартным значением 10000.
Попытка того, что было предложено:
mu=np.log(3000)
sigma=np.log(10)
s = np.random.lognormal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, 500, density=True, align='mid')
x = np.linspace(min(bins), max(bins), 1000)
pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2)) / (x * sigma * np.sqrt(2 * np.pi)))
plt.semilogx(x, pdf, linewidth=2, color='r')
Похоже, это тоже не сработает, если только я неправильно истолковываю гистограмму.
Гистограмма