Scipy:对自定义分布进行采样

问题描述

使用Scipy,我想按照一定的概率密度随机抽取一个样本。我考虑的概率密度函数是在实线上定义的,它取决于我在 numpy.array 中重新组合的 k 个参数,记为形状 (1,k) 的 X。

import scipy.stats as st
import numpy as np
import numpy.random as npr

class CustomGaussian(st.rv_continuous):
    def _argcheck(self,X):
        return True
    def _pdf(self,x,X):
        return (1+np.prod(X*np.exp(-X**2 / 2.))*x*np.exp(-x**2 / 2.))*(np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi))

k=3
CustomGaussian_Sample = CustomGaussian(name='CustomGaussian_Sample',shapes='X')
X=npr.uniform(0,1,size=(1,k))
print(CustomGaussian_Sample.rvs(shapes='X'))

当我只想要一个单一的实现时,它会返回一个形状为 (,k) 的数组,就像经典的单变量分布一样,但有 d 个参数。有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)