Вейбулл подходит к гистограмме не плавная линия - PullRequest
0 голосов
/ 02 ноября 2019

Я использовал следующий код для подгонки распределения Вейбулла к моим данным:

# -- set up the figure and axis
fig, ax = plt.subplots(figsize=(10, 7))

# Set bins:
bins = np.arange(0, 40+0.5, 1)

# -- make a histogram 
ax.hist(af_farm_w_speed, bins=bins, density=True, alpha = 1, align='left', zorder=0, rwidth=0.7, color='grey')

ax.set_xlabel("Wind Speed [knots]", fontsize=15)
ax.set_ylabel("Frequency [%]", fontsize=15)
ax.set_title('Wind Speed Distribution and Weibull fit', fontsize=18)
(scale, a, shape, c) = stats.exponweib.fit(af_farm_w_speed, f0=1, floc=0)
ax.plot(bins, stats.exponweib.pdf(bins, *stats.exponweib.fit(af_farm_w_speed, f0=1, floc=0)), zorder=1, color = "black", linewidth=1.6, label="Post-Farm Weibull Fit (a={:.4g}, c={:.5g})".format(a, c))
ax.legend()

Однако, как показано в выводе, моя подгонка не является плавной линией. У кого-нибудь есть идея, как это исправить? введите описание изображения здесь

1 Ответ

0 голосов
/ 02 ноября 2019

Вы используете «stats.exponweib.pdf (bins»), поэтому число отображаемых сегментов равно числу бинов. Если бы у вас было пять бинов гистограммы, построенная линия имела бы пять сегментов и выглядела бы очень-smooth. Если вместо этого вы используете что-то вроде:

xplot = numpy.linspace(min(bins), max(bins), 100)
stats.exponweib.pdf(xplot

, тогда построенная линия будет иметь 100 сегментов и будет выглядеть заметно более гладкой.

...