Я хочу преобразовать установленное распределение в частоту.
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
%matplotlib notebook
# sample data generation
np.random.seed(42)
data = sorted(stats.lognorm.rvs(s=0.5, loc=1, scale=1000, size=1000))
# fit lognormal distribution
shape, loc, scale = stats.lognorm.fit(data, loc=0)
pdf_lognorm = stats.lognorm.pdf(data, shape, loc, scale)
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(data, bins='auto', density=True)
ax.plot(data, pdf_lognorm)
ax.set_ylabel('probability')
ax.set_title('Linear Scale')
Приведенный выше фрагмент кода сгенерирует следующий график:
Как видно, ось Yс точки зрения вероятности.Но я хочу, чтобы это было в терминах частот.
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(data, bins='auto')
ax.set_ylabel('probability')
ax.set_title('Linear Scale')
Отключив density=True
, гистограмма отображается в терминах частот.Но я не знаю, как подобрать распределение таким же образом, как на гистограммах. Посмотрите, как я не смог нарисовать оранжевую линию на этой гистограмме.
Как я могу это сделать?Я думаю, мне следует умножить подогнанное распределение на площадь под кривой гистограммы, но я не знаю, как это сделать.