Как создать дискретный дистрибутив в OpenTURNS? - PullRequest
0 голосов
/ 29 апреля 2020

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

sample = [2.0, 2.0, 1.0, 1.0, 2.0, 3.0, 1.0, 2.0, 2.0, 1.0]

Распределение UserDefined, похоже, предназначено для этой цели, но требует вычисления весов каждой точки в зависимости от ее частоты в выборке:

import openturns as ot
distribution = ot.UserDefined(points, weights)

Но сначала мы должны вычислить points и weights. Для этого я вычислил баллы и веса, используя функцию Numpy unique. Однако это звучит как ограничение класса UserDefined. Как я могу сделать это проще?

1 Ответ

0 голосов
/ 29 апреля 2020

Класс UserDefinedFactory создает распределение UserDefined, оценивая points и weights из выборки. Метод build принимает образец в качестве входных данных и возвращает объект ot.UserDefined, который соответствует данным.

import openturns as ot
sample = ot.Sample([[2.0], [2.0], [1.0], [1.0], [2.0], [3.0], [1.0], [2.0], [2.0], [1.0]])
factory = ot.UserDefinedFactory()
distribution = factory.build(sample)
...