Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用非统一度量(python/scipy)集成函数_Python_Numpy_Scipy_Probability_Numerical Methods - Fatal编程技术网

使用非统一度量(python/scipy)集成函数

使用非统一度量(python/scipy)集成函数,python,numpy,scipy,probability,numerical-methods,Python,Numpy,Scipy,Probability,Numerical Methods,我想在python中集成一个函数,并提供用于采样值的概率密度(度量)。如果不明显,在[a,b]中积分f(x)dx会隐式使用[a,b]上的统一概率密度,我想使用我自己的概率密度(例如指数) 我可以自己做,使用np.random.*但是 我错过了scipy.integrate.quad中提供的优化。或者所有这些优化都假设密度是一致的 我需要自己做误差估计,这不是小事。或许是这样?也许错误只是和(f(x))/n的方差 有什么想法吗?正如unutbu所说,如果你有密度函数,你可以使用scipy.in

我想在python中集成一个函数,并提供用于采样值的概率密度(度量)。如果不明显,在
[a,b]
中积分
f(x)dx
会隐式使用
[a,b]
上的统一概率密度,我想使用我自己的概率密度(例如指数)

我可以自己做,使用
np.random.*
但是

  • 我错过了
    scipy.integrate.quad
    中提供的优化。或者所有这些优化都假设密度是一致的
  • 我需要自己做误差估计,这不是小事。或许是这样?也许错误只是
    和(f(x))/n的方差

有什么想法吗?

正如unutbu所说,如果你有密度函数,你可以使用
scipy.integrate.quad
将函数的乘积与pdf进行集成

对于
scipy.stats
中提供的发行版,我们也可以使用expect函数

比如说

>>> from scipy import stats

>>> f = lambda x: x**2

>>> stats.norm.expect(f, loc=0, scale=1)
1.0000000000000011

>>> stats.norm.expect(f, loc=0, scale=np.sqrt(2))
1.9999999999999996
scipy.integrate.quad
也有一些预定义的权重函数,尽管它们没有标准化为概率密度函数


近似误差取决于调用
integrate.quad

的设置。为了简洁起见,建议了3种方法来计算概率p(x)下f(x)的期望值:

  • 假设p以封闭形式给出,使用
    scipy.integrate.quad
    计算
    f(x)p(x)
  • 假设p可以从样本N值中取样
    x=p(N)
    ,然后通过
    np.mean(f(x))
    评估期望值,通过
    np.std(f(x))/np.sqrt(N)
  • 假设p在stats.norm
    stats.norm中可用,则使用
    stats.norm.expect(f)
  • 假设我们有分布的
    CDF(x)
    而不是
    p(x)
    ,计算
    H=逆[CDF]
    ,然后使用
    scipy.integrate.quad

另一种可能性是积分x->f(H(x)),其中H是概率分布的累积分布的倒数


[这是因为变量的变化:替换y=CDF(x)并注意到p(x)=CDF'(x)会产生变化dy=p(x)dx,因此int{f(x)p(x)dx}==int{f(x)dy}==int{f(H(y))dy,其中H是CDF的倒数。]

可以将
f(x)d(mu code>的积分表示为
f(x)g(x)的积分吗dx
对于一些密度函数
g
?是的,我可以假设我有g,或者我可以根据g对x进行采样。我知道你的方向:)