Построение экспоненты со средним - PullRequest
1 голос
/ 10 января 2020

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

В java мы используем org.apache.commons.math3.distribution.ExponentialDistribution, который принимает среднее значение, поэтому мы используем его вот так new ExponentialDistribution(m)

Я использую matplotlib.pyplot для построения графиков и numpy + scikit.stats для данных. Но, глядя на https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.expon.html#scipy .stats.expon Я не могу понять, как предоставить среднюю переменную, которую я анализирую из кода.

Короче, если я проанализирую new ExponentialDistrubution(5) ... как мне построить это?

Если я удаляю весь код синтаксического анализа и другие не относящиеся к делу вещи, мой код делает это:

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

xvalues = np.linspace(stats.expon.ppf(0.01), stats.expon.ppf(0.99), 100)
cdf = stats.expon.cdf(xvalues)
plt.plot(xvalues, cdf)
plt.savefig("graph.png")

1 Ответ

1 голос
/ 10 января 2020

С https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.expon.html вы обнаружите, что для сдвига и масштабирования вы можете использовать expon.pdf(x, loc, scale), где loc - это местоположение, а scale - обратное значение lambda. scale также соответствует среднему значению, поскольку среднее экспоненциального распределения равно 1/lambda.

Если вы хотите распределение со средним значением 5, вы должны написать:

mean = 5
loc = 0

xvalues = np.linspace(stats.expon.ppf(0.01, loc, mean), stats.expon.ppf(0.99, loc, mean), 100)
cdf = stats.expon.cdf(xvalues, loc, mean)
plt.plot(xvalues, cdf)
plt.savefig("graph.png")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...