【发布时间】: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