Сиппи Вейбулла подходит с неожиданными параметрами - PullRequest
0 голосов
/ 21 апреля 2020

У меня возникли проблемы с интерпретацией результатов функции Вейбулла Сципи. Официальные документы, к сожалению, очень запутанные.

Я хочу установить двухфакторную функцию Вейбулла на некоторые данные о скорости ветра, поэтому я протестировал функцию подбора на некоторых изобретенных данных, как показано ниже. Но результаты не соответствуют форме и масштабным коэффициентам, которые я ввел.

Я также считаю:

  1. Я использую неправильную функцию подгонки

  2. Я интерпретирую неверные параметры

Любой совет? Или иначе, есть ли хороший способ использовать MLE в пользовательской функции, подобной той, что я сделал ниже? В прошлом я использовал для этого statsmodels, но в моем опыте сходимость была не очень хорошей - или, по крайней мере, процесс был не очень ясным

В этом тесте я создаю данные с параметрами weibull shape = 2, scale = 10 и неявно location = 0, потому что это двухфакторная форма уравнения.

Затем я попробовал 2 функции scipy, которые возникли в результате онлайн-поиска, и ни одна из них не выдает параметры, которые соответствуют данные.


import scipy.stats as s
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


def weib(x,scale,shape):
    return (shape / scale) * (x / scale)**(shape - 1) * np.exp(-(x / scale)**shape)

scale = 10
shape = 2

test_x = range(40)
test_y = [weib(x,scale,shape) for x in test_x]

plt.plot(test_x,test_y)

s.weibull_min.fit([test_x,test_y])

(0,22533839261703714, -5,552484597396645e-28, 14,458809476185376)

s.exponweib.fit([test_x,test_y])

(0,762200388832477, 0,61616, 4877 1.4629383065126612e-31, 21.2078942933448)

...