【问题标题】:Determine Weibull parameters from data根据数据确定 Weibull 参数
【发布时间】:2016-01-09 07:38:20
【问题描述】:

我想确定我的数据的Weibull parameters(即形状和比例)。

0.022988506
0.114942529
0.218390805
0.114942529
0.149425287
0.114942529
0.068965517
0.068965517
0.034482759
0.022988506
0.022988506
0.022988506
0.022988506

我已经尝试过this answer 提出的建议,并且我正在使用 Python 3.4。

import scipy.stats as s
import numpy as np
from scipy import stats


def weib(x,n,a):
    return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a)


data = np.loadtxt("data1.csv")
print(data)
(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)
print('loc is: ',loc, '\n scale is: ', scale)

这给了我以下输出:

[0.02298851  0.11494253  0.2183908   0.11494253  0.14942529  0.11494253   0.06896552  0.06896552  0.03448276  0.02298851  0.02298851  0.02298851 0.02298851]
loc is:  0.0574417296258 
scale is:  0.0179259738449

我假设我的 csv 文件中的数据被读取为 x 输入值,而不是 Weibull 函数的 y 值。当我用 bin 添加第二列(或行)时,它会给出一个错误,即字符串值无法转换为浮点数。

我需要如何修改我的 csv 文件才能将其中的数据用作 Weibull 函数的 y 值?

我认为我的问题可能是我不明白这一行:

(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)

1, 1 在这里代表什么?那么参数不应该是负数。

【问题讨论】:

  • 当你说你想要“威布尔参数”时,你的意思是威布尔分布的参数(en.wikipedia.org/wiki/Weibull_distribution)吗?它有三个参数:一个形状参数,加上位置和比例参数。 exponweib 是指数 Weibull 分布 (en.wikipedia.org/wiki/Exponentiated_Weibull_distribution),它有 四个 参数(两个形状加上位置和比例)。
  • 是的,它的意思是 2 参数威布尔分布 f(x;λ,k),所以只调整形状和比例因子 (λ, k)。在这种情况下,我不应该使用 exponweib,而是使用什么?

标签: python csv numpy scipy weibull


【解决方案1】:

您似乎想使用scipy.stats.weibull_minfit 方法(这是scipy.stats.frechet_r 的别名)。使用参数floc=0 将位置限制为0。

In [9]: data
Out[9]: 
array([ 0.02298851,  0.11494253,  0.2183908 ,  0.11494253,  0.14942529,
        0.11494253,  0.06896552,  0.06896552,  0.03448276,  0.02298851,
        0.02298851,  0.02298851,  0.02298851])

In [10]: from scipy.stats import weibull_min

In [11]: shape, loc, scale = weibull_min.fit(data, floc=0)

In [12]: shape
Out[12]: 1.3419930069121602

In [13]: scale
Out[13]: 0.084273047253525968

【讨论】:

  • 嗨沃伦。我使用相同的函数来拟合我的数据。但是当我倾向于将“loc”约束为零时,返回的 loc 为 0.999999,而我的数据的最小值为 1。我还尝试将 shape 参数约束为 1,以使分布减少为指数模型,返回的 shape 参数为不是 1(0.72~)。那么这是否意味着输入的约束参数不适合模型?我可以假设所有三个参数对于指定数据都是唯一的吗?谢谢。
  • @yanachen 在这些 cmets 中讨论的内容太多了。你应该开始一个新问题。
  • 您能回答我的问题吗?非常感谢你。stackoverflow.com/questions/43991799/…
猜你喜欢
  • 2021-02-28
  • 2015-05-02
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 2011-04-27
  • 2022-01-08
相关资源
最近更新 更多