Python scipy偏斜范数是指不匹配理论?

Python scipy偏斜范数是指不匹配理论?,python,scipy,Python,Scipy,我使用scipy skewnorm创建一个带有loc和scale的倾斜分布 我根据Adelchi Azzalini的页面()调整传递给scipy.stats.skewnorm的loc和scale,使用该页面底部关于“平均值”和“增量”的部分 我使用的代码是: import math import scipy.stats skew = -2 mean = 0.05 stdev = 0.05 delta = skew / math.sqrt(1. + math.pow(skew, 2.)) ad

我使用scipy skewnorm创建一个带有loc和scale的倾斜分布

我根据Adelchi Azzalini的页面()调整传递给scipy.stats.skewnorm的loc和scale,使用该页面底部关于“平均值”和“增量”的部分

我使用的代码是:

import math
import scipy.stats

skew = -2
mean = 0.05
stdev = 0.05

delta = skew / math.sqrt(1. + math.pow(skew, 2.))
adjMean = mean - stdev * math.sqrt(2. / math.pi) * delta
adjStdev = math.sqrt(math.pow(stdev, 2.) / (1. - 2. * math.pow(delta, 2.) / math.pi))

print 'target mean={:.4f} actual mean={:.4f}'.format(mean, float(scipy.stats.skewnorm.stats(skew, loc=adjMean, scale=adjStdev, moments='mvsk')[0]))
print 'target stdev={:.4f} actual stdev={:.4f}'.format(stdev, math.sqrt(float(scipy.stats.skewnorm.stats(skew, loc=adjMean, scale=adjStdev, moments='mvsk')[1])))
但是,当我运行它时,我没有得到我期望的平均值,而stdev是我期望的:

target mean=0.0500 actual mean=0.0347
target stdev=0.0500 actual stdev=0.0500
我觉得我错过了一些关于skewnorm或scipy.stats.skewnorm的东西


我对分布进行了数值积分,平均值与上面的“实际平均值”相匹配。

您有一个代数错误。你有

adjMean = mean - stdev * math.sqrt(2. / math.pi) * delta
但是在右边,
stdev
应该是
adjStdev

以下是您的代码的修改版本:

import math
import scipy.stats

skew = 2.0
mean = 1.5
stdev = 3.0

delta = skew / math.sqrt(1. + math.pow(skew, 2.))
adjStdev = math.sqrt(math.pow(stdev, 2.) / (1. - 2. * math.pow(delta, 2.) / math.pi))
adjMean = mean - adjStdev * math.sqrt(2. / math.pi) * delta

print('target mean={:.4f} actual mean={:.4f}'.format(mean, float(scipy.stats.skewnorm.stats(skew, loc=adjMean, scale=adjStdev, moments='mvsk')[0])))
print('target stdev={:.4f} actual stdev={:.4f}'.format(stdev, math.sqrt(float(scipy.stats.skewnorm.stats(skew, loc=adjMean, scale=adjStdev, moments='mvsk')[1]))))
以下是输出:

target mean=1.5000 actual mean=1.5000
target stdev=3.0000 actual stdev=3.0000

您能否向示例中添加足够的代码,这样我们就可以复制并运行它,而不必添加更多的定义和导入?查看更多关于创建一个好问题的建议。很抱歉…已修复。我以为我已经粘贴了所有的代码,但是错过了最上面的几行。谢谢!因为我没有写下方程式。