从数据中确定Weibull参数

时间:2015-10-11 22:18:20

标签: python csv numpy scipy weibull

我想确定数据的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代表什么?这些参数不应该是负面的。

1 个答案:

答案 0 :(得分:3)

看起来您想使用fit的{​​{1}}方法(scipy.stats.weibull_min的别名)。使用参数scipy.stats.frechet_r将位置约束为0。

floc=0