наклонный питон с равномерным распределением

Я хотел бы получить значения из равномерного распределения с наклоном вместо стандартного равномерного распределения, которое извлекает значения из прямой плоской линии наклона = 0. Чтобы быть более конкретным, я хотел бы получить значения из функции распределение наклона, РИСУНОК 2 НИЖЕ. Я знаю, что для первого я мог бы использовать numpy.random.uniform(initial,final). Как я могу сделать это для наклонного распределения? Я знаю, что умножение «наклона» или коэффициента масштабирования на значения из numpy.random.uniform математически не означает, что значения извлекаются из наклонного распределения. Я понимаю, что это может иметь какое-то отношение к изменению способа взвешивания каждого извлеченного значения. источник: http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm Пожалуйста, помогите! стандартный график равномерного распределения

введите здесь описание изображения


person Arya    schedule 30.11.2014    source источник
comment
Вы неправильно интерпретируете эти графики. Оба они относятся к одному и тому же равномерному распределению. Последний график представляет собой всего лишь кумулятивную функцию распределения равномерного распределения, которая является интегралом функции распределения вероятностей.   -  person Robert Kern    schedule 30.11.2014
comment
@RobertKern прав. Не существует такой вещи, как наклонное равномерное распределение. Существуют треугольные распределения (за которые immerrr дал ответ) и трапециевидные распределения, вы хотите одно из них?   -  person pjs    schedule 30.11.2014


Ответы (2)


Для этой проблемы можно использовать выборку с обратным преобразованием.

Давайте посмотрим на простое распределение наклона, которое будет генерировать [0;1] числа s.t. f(0) = 0 и f(1) = 2, 2 происходит от нормализации F(x), то есть F(1) = P(x <= 1) = 1 по определению вероятности.

математика

Согласно методу выборки с обратным преобразованием, чтобы получить случайную величину с необходимым распределением, в последнее уравнение вместо Y нужно подставить равномерно распределенную случайную величину. Давайте проверим, что:

In [61]: y = np.random.rand(10000)

In [62]: x = np.sqrt(y)

In [63]: plt.hist(x, bins=100)

введите здесь описание изображения

person immerrr    schedule 30.11.2014

Вы можете попробовать создать свой собственный PDF-файл с помощью stats.rv_continuous.

Здесь' sa SO ответ, который может вам помочь.

Некоторый код:

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

class linear(scipy.stats.rv_continuous):
    def _cdf(self, x):
        return x**2

distrib = linear(a=0, b=1.0)
d = distrib.rvs(size=10000)

fig, ax = plt.subplots(1, 1)
ax.hist(d, normed=True, histtype='stepfilled', alpha=0.2, bins=100)
plt.show()

Гистограмма случайных выборок распределения:

введите здесь описание изображения

person orange    schedule 30.11.2014
comment
Я не думаю, что это работает, я получаю следующее: ››› print your_random_values ​​[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] - person Arya; 30.11.2014
comment
Я проверю это позже и вернусь к вам. - person orange; 30.11.2014
comment
Извините, я процитировал дискретную версию, вы посмотрите на stats.rv_continuous. - person orange; 30.11.2014
comment
Прочитав ваш вопрос еще раз, я понял, что вы цитируете pdf и cdf единого дистрибутива. Вышеуказанное не является равномерным распределением. Я не совсем уверен, что это то, что вам нужно... - person orange; 01.12.2014