動差#
- Normal.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^\text{th}\) 次方,以產生尺度不變量
\[\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
。
- 返回:
- outarray
指定階數和種類的隨機變數的動差。
註解
並非所有分佈都具有所有階數的有限動差;某些階數的動差可能未定義或無限大。如果未針對所選分佈明確實作動差的公式,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]動差, 維基百科, https://en.wikipedia.org/wiki/Moment_(mathematics)
範例
實例化具有所需參數的分佈
>>> 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