Подгонка данных к экспоненциальному распределению и создание функции генератора - PullRequest
0 голосов
/ 25 марта 2019

У меня есть набор данных о прибытии за короткий 24-часовой период, когда интервалы между прибытиями, по-видимому, моделируют экспоненциальное распределение.Моя цель состоит в том, чтобы приспособить это к экспоненциальному распределению, чтобы я мог использовать его в качестве генератора для моделирования прибытий на периоды, превышающие начальное 24-часовое окно.

Sample:
248.69
250.01
287.73
302.17
318.03
357.66
389.87
392.82
395.99
406.47
446.29
466.47
475.52
487.2
496.85
500.02
522.95
547.09
582.78
593.67
612.46
680.63
745.35

Что приводит к

Difference:
1.32
37.72
14.44
15.86
39.63
32.21
2.95
3.17
10.48
39.82
20.18
9.05
11.68
9.65
3.17
22.93
24.14
35.69
10.89
18.79
68.17
64.72

Построение всего набора разностных данных на гистограмме дает следующее: https://i.imgur.com/kJnNrFM.png

В идеале я мог бы получить некоторые переменные, где я могу подключить их к функции, подобной expovariate для переменных модели, например:

def arrivals(lambda):
    return random.expovariate(lambda)

Я нашел предложение для следующей функции, но не знаю, как использовать печатные переменные:

0,023493173851297056 [[65.70015487]]

from math import exp
from scipy.optimize import curve_fit
import numpy as np

def model(x, p):
    return p*np.exp(-p*x)

def expfit(df):
    X = df.index.values.reshape(-1,1).flatten().tolist()
    Y = df.values.flatten().tolist()
    popt, pcov = curve_fit(model, X, Y)
    print (popt[0])
    print (pcov)

arrivals = pd.read_csv("arrivals.csv")
expfit(arrivals.dropna().diff().dropna().to_frame())

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...