Есть ли способ, используя какой-то установленный пакет Python (например, SciPy), чтобы определить мою собственную функцию плотности вероятности (без каких-либо предварительных данных, просто ), чтобы я мог затем сделать вычисления с ней (например, получение дисперсии непрерывной случайной величины)? Конечно, я мог бы взять, скажем, SymPy или Sage, создать символическую функцию и выполнить операции, но мне интересно, могу ли я вместо того, чтобы делать всю эту работу сам, использовать уже реализованный пакет.
python
statistics
probability
astrojuanlu
источник
источник
Ответы:
Вы должны создать подкласс класса rv_continuous в scipy.stats
теперь my_cv - непрерывная случайная величина с заданным PDF и диапазоном [0,1]
Обратите внимание , что в этом примере
my_pdf
иmy_cv
произвольные имена (которые могли бы что - нибудь), но_pdf
это не произвольно; это и_cdf
есть методы,st.rv_continuous
один из которых должен быть перезаписан, чтобы подкласс работал.источник
3*x**2
здесь), или результирующая случайная переменная дает неверные результаты (вы можете проверитьmy_cv.median()
, например). Я исправил код.x
[0, 1]. можешь уточнить?my_cv.rvs()
(которое может приниматьsize
аргумент для получения нескольких выборок за один раз). Это то, что я предполагаю из документации ( docs.scipy.org/doc/scipy/reference/generated/… ).Вы должны проверить sympy.stats. Он предоставляет интерфейс для работы со случайными переменными. В следующем примере представлена случайная величина,
X
определенная на единичном интервале с плотностью2x
Если вам интересно, эта абстракция может обрабатывать довольно сложные манипуляции.
источник