Определить параметры Вейбулла по данным
Я хотел бы определитьПараметры Вейбулла (то есть форма и масштаб) моих данных.
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
Я уже пробовал чтоэтот ответ предложил, и я использую 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-input вместо значений y функции Вейбулла. Когда я добавляю второй столбец (или строку) с bin, это выдает ошибку, что строковые значения не могут быть преобразованы в числа с плавающей точкой.
Как мне нужно изменить мой CSV-файл, чтобы использовать данные в качестве значений Y функции Вейбулла?
Я думаю, что моя проблема может быть в том, что я не понимаю эту строку:
(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)
Что значит1, 1
представлять здесь? Параметры не должны быть отрицательными.