【问题标题】:Fit Weibull to distribution with genextreme and weibull_min使用 genextreme 和 weibull_min 将 Weibull 拟合到分布
【发布时间】:2016-12-10 11:56:27
【问题描述】:

使用 SciPy,我试图从 this question 重现 weibull 拟合。当我使用genextreme 函数时,我的配合看起来不错,如下所示:

import numpy as np
from scipy.stats import genextreme
import matplotlib.pyplot as plt

data=np.array([37.50,46.79,48.30,46.04,43.40,39.25,38.49,49.51,40.38,36.98,40.00,
               38.49,37.74,47.92,44.53,44.91,44.91,40.00,41.51,47.92,36.98,43.40,
               42.26,41.89,38.87,43.02,39.25,40.38,42.64,36.98,44.15,44.91,43.40,
               49.81,38.87,40.00,52.45,53.13,47.92,52.45,44.91,29.54,27.13,35.60,
               45.34,43.37,54.15,42.77,42.88,44.26,27.14,39.31,24.80,16.62,30.30,
               36.39,28.60,28.53,35.84,31.10,34.55,52.65,48.81,43.42,52.49,38.00,
               38.65,34.54,37.70,38.11,43.05,29.95,32.48,24.63,35.33,41.34])

shape, loc, scale  = genextreme.fit(data)

plt.hist(data, normed=True, bins=np.linspace(15, 55, 9))

x = np.linspace(data.min(), data.max(), 1000)
y = genextreme.pdf(x, shape, loc, scale)
plt.plot(x, y, 'c', linewidth=3)

参数为:(0.44693977076022462, 38.283622522613214, 7.9180988170857374)。形状参数是正的,对应于Weibull wikipedia page 上形状参数的符号,据我所知,它相当于 R 中的负形状参数?

看来genextreme 自己决定分发是 Gumbel、Frechet 还是 Weibull。这里它选择了 Weibull。

现在我正在尝试使用 weibull_min 函数重现类似的拟合。我基于this post 尝试了以下方法,但参数看起来与我使用genextreme 得到的非常不同:

weibull_min.fit(data, floc=0) 

现在的参数是:(6.4633107529634319, 0, 43.247460728065136)

0 是形状参数吗?如果分布是 Weibull,肯定应该是正数?

【问题讨论】:

标签: python r scipy distribution weibull


【解决方案1】:

weibull_min.fit()返回的参数为(shape, loc, scale)loc 是位置参数。 (所有 scipy 分布都包含一个位置参数,即使是那些通常不使用位置参数的分布。)weibull_min.fit 的文档字符串包括:

Returns
-------
shape, loc, scale : tuple of floats
    MLEs for any shape statistics, followed by those for location and
    scale.

您使用了参数floc=0,因此,正如预期的那样,fit(data, floc=0) 返回的位置参数为 0。

【讨论】:

  • 所以我用 weibull_min.fit() 得到的形状参数是 6.46。这与 genextreme 的 0.44 非常不同。而且 43 的比例参数不是很高吗?如何使用 weibull_min.fit() 将曲线拟合到数据中?
  • 关于值: weibull_min.fit(data, floc=0) 返回的值与 R 中 fitdistr(mydata, "weibull") 返回的值非常接近,正如您在链接问题中看到的那样。
猜你喜欢
  • 2013-07-03
  • 2016-04-26
  • 2016-06-05
  • 2012-08-02
  • 2021-01-08
  • 2015-07-04
  • 1970-01-01
  • 2019-09-06
  • 2022-01-14
相关资源
最近更新 更多