Python scipy.stats.uniform.expect的值与手动计算的值不同

Python scipy.stats.uniform.expect的值与手动计算的值不同,python,numpy,scipy,Python,Numpy,Scipy,这很可能是因为我不知道如何使用标准的scipy expect函数方法。当我使用: from scipy.stats import uniform uniform.expect(lambda k: k**2,lb=-0.2,ub=0.2) 我得到值:0.002666666 如果我使用手动计算: np.mean(np.random.uniform(-0.2,0.2,1000)**2) 我得到了0.013235491320680141,这是我期望的正确值。那么,对于标准的expect函

这很可能是因为我不知道如何使用标准的scipy expect函数方法。当我使用:

  from scipy.stats import uniform
  uniform.expect(lambda k: k**2,lb=-0.2,ub=0.2)
我得到值:0.002666666

如果我使用手动计算:

  np.mean(np.random.uniform(-0.2,0.2,1000)**2)
我得到了0.013235491320680141,这是我期望的正确值。那么,对于标准的expect函数或积分函数,我做错了什么?请提供帮助。

如果您看到,
ub
lb
并不是指您认为他们会做什么。它们是积分的界,而不是分布的参数

你实际上想要:

scipy.stats.uniform(loc=-0.2, scale=0.4).expect(lambda x: x**2)
如果你看,
ub
lb
并不意味着你认为他们会做什么。它们是积分的界,而不是分布的参数

你实际上想要:

scipy.stats.uniform(loc=-0.2, scale=0.4).expect(lambda x: x**2)

我查看了的文档,但仍然不知道如何获得正确的值。文档中没有示例。您对
ub
lb
的理解不正确。它们不是均匀分布的参数,因为
expect
不仅仅是该分布的一种方法
dist.expect(f,lb,ub)
表示“期望值
f(x)
其中
x~dist
,因此
lb
”这实际上是我理解为一致的。expect(lambda k:k**2,lb=-0.2,ub=0.2),但结果不正确。您所写的意思是
x~uniform[0,1],在给定x<0.2的情况下找到E[x^2]
lb
ub
不参数化分布。这就是我检查过的
loc
scale
的文档,但仍然不知道如何获得正确的值。文档中没有示例。您对
ub
lb
的理解不正确。它们不是均匀分布的参数,因为
expect
不仅仅是该分布的一种方法
dist.expect(f,lb,ub)
表示“期望值
f(x)
其中
x~dist
,因此
lb
”这实际上是我理解为一致的。expect(lambda k:k**2,lb=-0.2,ub=0.2),但结果不正确。您所写的意思是
x~uniform[0,1],在给定x<0.2的情况下找到E[x^2]
lb
ub
不参数化分布。这就是
loc
scale
的作用