Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2

.py
Скачиваний:
16
Добавлен:
16.04.2021
Размер:
2.02 Кб
Скачать
from matplotlib import pyplot as plt
import numpy as np

import scipy.stats as st
def gamma_hist(k, lmb, n):
    f_exp = lambda lmb: -(1 / lmb) * np.log(np.random.random())
    f_gamma = lambda k, lmb: sum([f_exp(lmb) for _ in range(k)])
    sample, steps, mu, d = [], [], [], []
    res = [0, 1000]
    x_min = x_max = delta = 0
    while min(res) < n:
        sample.append(f_gamma(k, lmb))
        if len(sample) % 100 == 0:
            mu.append(sum(sample) / len(sample))
            d.append(np.var(sample))
        if len(sample) < 1000:
            continue
        elif x_min <= sample[-1] <= x_max:
            bar = int((sample[-1] - x_min) / delta)
            res[((bar + 1) * (bar <= len(res) - 1)) - 1] += 1
        if 1 - sum(res) / len(sample) < 0.01:
            continue
        x_min = min(sample)
        x_max = max(sample)
        delta = (x_max - x_min) / 10
        steps = [i * delta for i in range(0, 11)]
        res = [0] * 10  # Количество попавших в res[i] интервал элементов выборки
        # Запронение интервалов гисторгаммы
        for i in sample:
            bar = int((i - x_min) / delta)
            res[((bar + 1) * (bar <= len(res) - 1)) - 1] += 1
        
       # Histogram
   
    print(res)
    plt.hist(sample, density=True, bins=12, label="Values")
    mn, mx = plt.xlim()
    plt.xlim(mn, mx)
    kde_xs = np.linspace(mn, mx, 100000)
    kde = st.gaussian_kde(sample)
    plt.plot(kde_xs, kde.pdf(kde_xs))
    plt.ylabel('Probability')
    plt.show()

    return steps, res, mu, d


def main():
    k, lmb = 5, 3
    step, hist, mu, d = gamma_hist(k, lmb, 100)

    plt.plot([100 * i for i in range(len(mu))], mu)
    plt.plot([100, len(mu) * 100], [k / lmb] * 2)
    plt.show()
    plt.plot([100 * i for i in range(len(d))], d)
    plt.plot([100, len(d) * 100], [k / (lmb ** 2)] * 2)
    plt.show()
if __name__ == "__main__":
    main()
Соседние файлы в предмете Имитационное моделирование