首页 > 解决方案 > 如何在 Python 中使用具有给定自定义 PDF 的逆变换采样生成样本?

问题描述

我拥有的PDF是:

$$ P(\varepsilon) = \frac{1}{4k} \mathrm{sech}^2 \frac{\varepsilon}{2k}$$

CDF:

$$ CDF(\varepsilon) = \frac{\tanh(\frac{\varepsilon}{2k})}{2} $$

和逆 CDF:

$$ CDF^{-1}(c) = \frac{c}{2\tanh^{-1}(2k_BT)} $$

现在我应该怎么做才能生成 N 个样本,用我的 PDF P(\varepsilon) 给定 k?

这是我到目前为止所拥有的:

import numpy as np
def sampleConduction(N, kT):

    for i in range(N):
        c = np.random.random()
        list = [c]
        print('list=',list) 
    g = np.column_stack(list)
    print('g=',g)

     d = np.arctanh(2*list)+2*kT

    return d

sampleConduction(3,0.1)

这段代码的结果是:

list= [0.7687170402304889]
list= [0.24759083266582882]
list= [0.18334770166799108]
g= [[0.1833477]]

array([0.38544466, 0.38544466]) # d

我想将 3 个列表合并为一个,但使用 np.column_stack() 失败了。接下来我应该尝试什么?

非常感谢!

标签: pythonnumpypdfdata-sciencecdf

解决方案


推荐阅读