moment#
- Mixture.moment(order=1, kind='raw', *, method=None)[源代码]#
正整数阶的原点矩、中心矩或标准化矩。
对于概率密度函数 \(f(x)\) 和支撑集 \(\chi\),随机变量 \(X\) 的 \(n\) 阶 “原点” 矩(关于原点)为
\[\mu'_n(X) = \int_{\chi} x^n f(x) dx\]“中心”矩是关于均值的原点矩,\(\mu = \mu'_1\)
\[\mu_n(X) = \int_{\chi} (x - \mu) ^n f(x) dx\]“标准化”矩是中心矩除以标准差 \(\sigma = \sqrt{\mu_2}\) 的 \(n\) 次方,以产生一个尺度不变的量
\[\tilde{\mu}_n(X) = \frac{\mu_n(X)} {\sigma^n}\]- 参数:
- orderint
矩的整数阶数;即上面公式中的 \(n\)。
- kind{‘raw’, ‘central’, ‘standardized’}
是否返回上面定义的原始(默认)、中心或标准化矩。
- method{None, ‘formula’, ‘general’, ‘transform’, ‘normalize’, ‘quadrature’, ‘cache’}
用于评估矩的策略。默认情况下(
None
),基础设施将在以下选项之间进行选择,按优先级顺序列出。'cache'
:使用最近通过其他方法计算的矩值'formula'
:使用矩本身的公式'general'
:使用适用于所有具有有限矩的分布的一般结果;例如,第零阶原点矩恒为 1'transform'
:将原点矩转换为中心矩,反之亦然(请参阅注释)'normalize'
:标准化中心矩以获得标准化矩,反之亦然'quadrature'
:根据定义进行数值积分
并非所有 method 选项都适用于所有阶数、种类和分布。如果所选的 method 不可用,则会引发
NotImplementedError
。
- 返回:
- out数组
指定阶数和种类的随机变量的矩。
注释
并非所有分布都具有所有阶的有限矩;某些阶的矩可能未定义或无限大。如果未针对所选分布专门实现矩的公式,SciPy 将尝试通过通用方法计算矩,这可能会在不存在有限结果的情况下产生有限结果。这不是一个严重的错误,而是一个增强的机会。
摘要中原点矩的定义特定于关于原点的原点矩。关于任何点 \(a\) 的原点矩为
\[E[(X-a)^n] = \int_{\chi} (x-a)^n f(x) dx\]在此表示法中,关于原点的原点矩为 \(\mu'_n = E[x^n]\),而中心矩为 \(\mu_n = E[(x-\mu)^n]\),其中 \(\mu\) 是第一阶原点矩;即均值。
'transform'
方法利用了在不同点 \(a\) 和 \(b\) 处取得的矩之间的以下关系。\[E[(X-b)^n] = \sum_{i=0}^n E[(X-a)^i] {n \choose i} (a - b)^{n-i}\]例如,要将原点矩转换为中心矩,我们令 \(b = \mu\) 且 \(a = 0\)。
分布基础设施为分布作者提供了灵活性,可以实现任何阶的原始矩、中心矩和标准化矩的单独公式。默认情况下,如果存在公式,则从公式评估所需阶数和种类的矩;如果不存在,则基础设施将使用任何可用的公式,而不是直接求助于数值积分。例如,如果前三个原点矩的公式可用,并且需要第三个标准化矩,则基础设施将评估原点矩并执行所需的转换和标准化。决策树有点复杂,但获得给定阶数和种类的矩的策略(可能是由于上述转换公式的递归性质而作为中间步骤)大致遵循此优先级顺序
使用缓存(如果已计算出相同矩和种类的阶数)
使用公式(如果可用)
在原点矩和中心矩之间进行转换和/或标准化以在中心矩和标准化矩之间进行转换(如果有效)
使用对大多数分布都成立的通用结果(如果可用)
使用积分
参考
[1]示例
使用所需的参数实例化一个分布
>>> from scipy import stats >>> X = stats.Normal(mu=1., sigma=2.)
评估第一阶原点矩
>>> X.moment(order=1, kind='raw') 1.0 >>> X.moment(order=1, kind='raw') == X.mean() == X.mu True
评估第二阶中心矩
>>> X.moment(order=2, kind='central') 4.0 >>> X.moment(order=2, kind='central') == X.variance() == X.sigma**2 True
评估第四阶标准化矩
>>> X.moment(order=4, kind='standardized') 3.0 >>> X.moment(order=4, kind='standardized') == X.kurtosis(convention='non-excess') True