Determinar parâmetros Weibull a partir de dados
Eu gostaria de identificar oParâmetros Weibull (ou seja, a forma e a escala) dos meus dados.
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
Eu já tentei o queesta resposta proposto e estou usando o 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)
Isso me dá a seguinte saída:
[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
Suponho que os dados no meu arquivo csv foram lidos como valores de entrada x, em vez dos valores y da função Weibull. Quando adiciono uma segunda coluna (ou linha) com bin, ocorre um erro de que os valores de sequência não podem ser convertidos em flutuadores.
Como preciso modificar meu arquivo csv para usar os dados como valores y da função Weibull?
Eu acho que meu problema pode ser que eu não entendo essa linha:
(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)
O que1, 1
representa aqui? Os parâmetros não devem ser negativos.